![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MS-SQL 学习笔记
prince_lintb
为生活而工作,还是为工作而生活
展开
-
SQL数据库数据优化建议
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数据库留NULL,尽可能的使用NOT NULL填充数据库.备注、描述、评论之类的可以设置为NULL,其他的,最好不要使用NULL。不要以为NULL不需要空间,比如:char(100)...原创 2021-07-30 08:42:13 · 237 阅读 · 0 评论 -
如何查看SQL表死锁
/*************************************************************如何查看死锁的表:方法一**********************************************************************************************/SELECT request_session_i转载 2014-11-18 15:58:39 · 12314 阅读 · 1 评论 -
SQL语句中行转列案例
CREATE TABLE #t(Id INT,TypeVal VARCHAR(10),ValueVal VARCHAR(20));INSERT INTO #t (Id,TypeVal,ValueVal)VALUES (1,'a','ValA'),(1,'a','ValB'),(2,'b','ValC'),(1,'c','ValD'),(2,'c','ValD'),(2,'a','ValD'原创 2013-03-12 15:45:46 · 1076 阅读 · 0 评论 -
配置数据发送邮件
IF EXISTS ( SELECT 1 FROM sys.procedures WHERE object_id = OBJECT_ID('sys_sendmail') ) BEGIN DROP PROCEDURE sys_sendmail ENDGO/* * Desi原创 2014-06-04 13:39:02 · 621 阅读 · 0 评论 -
SQL中几个快速定位语句
1, 查找表或SP相互yiny的SPSELECT DISTINCT OBJECT_NAME(referencing_id) AS sp_nameFROM sys.sql_expression_dependencies (NOLOCK)WHERE referenced_entity_name = '查找表或SP'ORDER BY sp_name原创 2014-06-04 13:33:36 · 2388 阅读 · 0 评论 -
数据库脚本规范
Create Table/* * Designer: Jekey * Description: 对应项目编号,描述 * Created: 12/30/2013 * History: * =============================================================================原创 2014-05-02 09:18:51 · 1197 阅读 · 0 评论 -
检测Sql Server服务器SQL语句执行情况
1、查找目前SQL Server所执行的SQL语法,并展示资源情况:SQL code?123456789101112131415161718192021222324转载 2014-02-19 16:43:32 · 1663 阅读 · 0 评论 -
SQL日期格式化应用大全
<br />Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM<br />Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06<br />Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16<br />Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06<br />Select C转载 2010-12-08 15:51:00 · 578 阅读 · 0 评论 -
SQL 获取当前月的第一天最后一天获取当月最大最小的时间当月天数,当月第一天,当月最后一天
declare @firstday datetime, @lastday datetime set @firstday=convert(varchar(10),dateadd(day,-datepart(day,GETDATE())+1,GETDATE()),23) +' 00:00:00'转载 2014-01-27 14:28:06 · 9371 阅读 · 0 评论 -
SQL 2008 Convert Xml to Table
1row> IdInvernadero>8IdInvernadero> IdProducto>3IdProducto> IdCaracteristica1>8IdCaracteristica1> IdCaracteristica2>8IdCaracteristica2> Cantidad>25Cantidad> Folio>4568457Foli转载 2013-05-03 12:23:05 · 574 阅读 · 0 评论 -
如何建立SQL Server数据库邮件
USE msdbGODECLARE @ProfileName VARCHAR(255)DECLARE @AccountName VARCHAR(255)DECLARE @SMTPAddress VARCHAR(255)DECLARE @EmailAddress VARCHAR(128)DECLARE @DisplayUser VARCHAR(128)SE原创 2013-03-22 17:09:24 · 1137 阅读 · 0 评论 -
SQL创建或重整索引
查找碎片消除碎片可能是索引维护最常规的任务,微软官方给出的建议是当碎片等级为 5% - 30% 之间时采用 REORGANIZE 来“重整”索引,如果达到 30% 以上则使用 REBUILD 来“重建”索引。决定采用何种手段和操作时机可能需要考虑许多的因素,以下4条是你必须要考虑的:备份的计划服务器的负载磁盘剩余空间回复(Recovery) 模型PS:虽然碎片与性能紧密相关,但转载 2014-09-11 15:15:53 · 2838 阅读 · 0 评论 -
SQL2005升级到2008版本,数据查询很慢解决方案
1)更新统计信息EXEC sp_updatestats2)重建索引dbcc dbreindex('Property')3) 修改了磁盘的设置,居然没有启用DMAA.双击“管理工具”,然后双击“计算机管理”;B.单击“系统工具”,然后单击“设备管理器”;C.展开“IDE ATA/ATAPI控制器”节点;D.双击您的“主要IDE控制器”;E.点击“高原创 2014-11-13 12:19:16 · 1648 阅读 · 0 评论 -
SQL语句中行转列案例
--初始化示例DECLARE @StudentGrade TABLE(student NVARCHAR(20), scoure NVARCHAR(20), grade DECIMAL)INSERT @StudentGrade(student,scoure,grade)VALUES('张三','chinese',96)INSERT @StudentGrade(student,scoure...原创 2019-05-15 12:58:30 · 354 阅读 · 0 评论 -
如何查找性能最差的SQL语句
--总耗时最长SELECT TOP 10 total_worker_time / 1000 AS N'总消耗CPU 时间(ms)' , execution_count N'运行次数' , qs.total_worker_time / qs.execution_count / 1000 AS N'平均消耗CPU 时间(ms)' ,原创 2016-03-11 14:20:41 · 2037 阅读 · 0 评论 -
清空SQL数据库日志
--SQL2005Backup Log dbName with no_loggodump transaction dbName with no_log goUSE dbNameDBCC SHRINKFILE (2)Go--SQL2008USE [master]GOALTER DATABASE dbName SET RECOVERY SIMPLE原创 2017-03-23 11:12:08 · 470 阅读 · 0 评论 -
查询数据库中表的行数及空间占用情况
--查询数据库中所有的表名及行数SELECT a.name , b.rowsFROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.idWHERE ( a.type = 'u' ) AND ( b.indid IN ( 0, 1 ) )ORDER BY原创 2016-08-25 15:01:22 · 1566 阅读 · 0 评论 -
SQL语句中列转行案例
--初始化示例DECLARE @StudentGrade TABLE(student VARCHAR(20), chinese int, maths int, english int)INSERT @StudentGrade(student,chinese,maths,english)VALUES('张三','98','76','89')INSERT @StudentGra原创 2016-07-28 18:14:42 · 6250 阅读 · 0 评论 -
如何用表来管理SQLServer中的扩展属性
1. 执行以下脚本创建数据表和列的扩展属性表dc_util_table_desc和dc_util_column_desc2. EXEC Proc_Util_Desc_GetColumnNameToDescTable , 生成现有表的描述对应记录3. EXEC Proc_Util_Desc_GetTableNameToDescTable, 生成现有列的描述对应记录4. 查看数转载 2016-06-01 14:58:27 · 459 阅读 · 0 评论 -
SQL多行合并一列
DECLARE @chufang TABLE(cfId INT,zdName VARCHAR(20))INSERT @chufang(cfId,zdName)VALUES(1,'伤寒'),(1,'感冒'),(2,'胃痛')DECLARE @bingren TABLE(brId INT,brName VARCHAR(20),cfId INT)INSERT @bingr原创 2016-03-08 16:00:52 · 740 阅读 · 0 评论 -
数据库级别触发器
DROP TRIGGER LogTrigger ON DATABASEGOCREATE TRIGGER LogTrigger ON DATABASEFOR CREATE_TABLE, ALTER_TABLE ,DROP_TABLE, --tableCREATE_CONTRACT,DROP_CONTRACT,--constraintCREATE_INDEX,ALTER_IND原创 2015-07-17 14:20:12 · 1163 阅读 · 0 评论 -
压缩数据库日志SQL语句
数据库时常因为日志过大而导致硬盘空间不够,或者备份出来的文件太大无法通过邮件传送。--在MASTER数据库中执行以下脚本(使用查询分析器)declare @dbname varchar(50)declare temp_cur cursor scroll for select name from sysdatabasesopen temp_curfetch first from temp_cu转载 2009-11-17 10:27:00 · 940 阅读 · 0 评论 -
SQL之merge into
简介 Merge关键字是一个神奇的DML关键字。它在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。MSDN对于Merge的解释非常的短小精悍:”根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。”,通过这个描述,我们可以看出Merge是关于对转载 2012-06-01 15:15:01 · 554 阅读 · 0 评论 -
监测Table字段被新日志
有时我们需要监测某个表的字段到底是被谁在什么时候操作的,这个时候就可以做个特殊的触发器来监测。 /*=========================================创建测试表test=========================================*/CREATE TABLE test(Id INT IDENTITY(1,1),Code VAR原创 2012-04-19 10:56:20 · 527 阅读 · 0 评论 -
Parameter Sniffing
存储过程:create procedure da_xm @ipdwname varchar(50) as declare @t_ipdwcode varchar(50); begin select top 1 @t_ipdwcode=aaaa from test1 where abcd=@ipdwname; select sum(abcd) from test转载 2012-04-19 10:49:29 · 783 阅读 · 0 评论 -
充分利用SQLServer2005的性能工具Performance Dashboard(之一)
--王成辉翻译整理,转贴请注明出自微软BI开拓者www.windbi.com--原帖地址如果你到现在为止使用过一段时间的SQLServer2005,那么当我提到SQLServer2005性能工具Performance Dashboard时,你也许不知道我说的什么。不,你是否过度疲劳使你丧失了信心而忘记了列入SQLServer2005的那些新的特点。SQLServer2005的性能工具Perform转载 2009-11-13 10:48:00 · 1304 阅读 · 0 评论 -
充分利用SQLServer2005的性能工具Performance Dashboard(之四)
注意,SQL2005数据,若是32位版本,只要按照上面的提示进行安装就OK,若是64位版本,需在运行setup.sql脚本前,必须变更下setup.sql里面的内容。 需替换的内容:sum(convert(bigint, datediff(ms, login_time, getdate()))) - sum(convert(bigint, s.total_elapsed_time))转载 2009-11-13 10:57:00 · 515 阅读 · 0 评论 -
充分利用SQLServer2005的性能工具Performance Dashboard(之三)
--王成辉翻译整理,转贴请注明出自微软BI开拓者www.windbi.com--原帖地址目前的活动屏幕里这一部分大多数数据都是不证自明的,但也不是全部。例如,当你看见User Requests和User Sessions下的数字时,这个数字是Performance Dashboard最后刷新的计数。另一方面,elapsed time和cache hit ratio是为特定的Performance转载 2009-11-13 10:56:00 · 834 阅读 · 0 评论 -
SQL Prompt--SQL语法编辑工具
完全免费的SQL Intellisense Prompt 工具(http://www.red-gate.com/products/sql_prompt/index.htm) 目前只支持英文版本的Microsoft Query Analyzer, SQL Server 2005 Management Studio, Visual Studio 2005, Visual Studi原创 2009-11-04 17:44:00 · 647 阅读 · 0 评论 -
C#和SQL数据库中的数值范围
一,C#中预定义的值类型 A、整型 sbyte ,8位有符号的整数,范围从 -128到127. byte ,8位无符号的整数,范围从 0到255. short,16位有符号的整数,范围从 -32768到32767 ushort ,16位无符号的整数,范围从0到65535 int,32位有符号的整数,范围从-2147483648到2147483647 ui原创 2008-12-12 14:59:00 · 1497 阅读 · 0 评论 -
清除SQL Server数据缓存和执行计划缓存,查看执行计划的各种方式对比
清除数据和执行计划缓存:DBCC DROPCLEANBUFFERSDBCC FREEPROCCACHE打开统计数据:SET STATISTICS IO ONSET STATISTICS TIME ON打开执行计划:SET SHOWPLAN_TEXT ONSET SHOWPLAN_ALL ONSET STATISTICS PROFILE ONSET SHOWPLAN_XML原创 2008-11-13 10:02:00 · 3925 阅读 · 0 评论 -
SQL Server 2k 中非域环境下数据库的异机备份
1,在备份服务器上设置备份目录 1.1 在备份服务器上创建特定用户BackupUser 密码 123 1.2 在备份服务器的E:下创建一个目录backup 1.3 共享 backup目录,共享名为backup,权限只有用户BackupUser可以完全控制2,在数据库服务器上 2.1 将//备份服务器/backup/ 映射为本地驱动器 Y:原创 2008-02-20 11:11:00 · 617 阅读 · 0 评论 -
SQL数据恢复问题深入剖析
一般性的数据库恢复问题解疑问:一,首先是数据库服务器崩溃或文件被破坏导致数据库不能使用,如果数据没有备份,则在SQL SERVER安装目录的DATA文件夹下,默认的路径("C:/Program Files/Microsoft SQL Server/MSSQL/Data")中会找到原来数据库的原文件,DatabaseName_Data.MDF和DatabaseName_Log.LDF两个文件。把这两原创 2005-08-16 15:40:00 · 1112 阅读 · 0 评论 -
SQL Server 服务器安装剖析
sql server 2000以前的版本,例如7.0一般不存在多个版本,只有标准版跟桌面版,用户如果不清楚该装什么版本的话,可按安装上的安装先决条件指示安装,一般在WIN2000 服务器版上装标准版,其他的系统装桌面版的就可以;而SQL Server 2000安装问题就比较大,时常见问题有如下:(1)配置服务器时中断.(2)注册 ActiveX 时中断.(3)显示到100%的时候中断. (4)提示原创 2005-08-09 11:28:00 · 1753 阅读 · 2 评论 -
SQL Server的恢复模式
恢复模式(Recovery Model)旨在控制事务日志维护。恢复模式说明了工作丢失的风险,能否恢复到时点? SQL Server数据库有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式。相对于简单恢复模式而言,完整恢复模式和大容量日志恢复模式提供了更强的数据保护功能。这些恢复模式都是基于备份事务日志来提供完整的可恢复性及在最大范围的故障情形内防止丢失工作。通常,数据库使用完转载 2009-11-16 20:16:00 · 530 阅读 · 0 评论 -
SQL备份语句
SQL备份======================================================================----------------------------------------------------------------------1、SQL数据库恢复模型------------------------------------------转载 2009-11-17 10:25:00 · 528 阅读 · 0 评论 -
充分利用SQLServer2005的性能工具Performance Dashboard(之二)
--王成辉翻译整理,转贴请注明出自微软BI开拓者www.windbi.com--原帖地址怎样启动Performance Dashboard怎样启动Performance Dashboard不是显而易见的事。但一旦你知道了怎样启动,就很容易了。下面是启动方法。1. 如果你还没有做过,那么启动管理器。2. 选择一个服务器和数据库,然后右击数据库,选择报表,然后选择自定义报表,出现下面的屏幕。从这个屏转载 2009-11-13 10:51:00 · 941 阅读 · 0 评论 -
如何扩展主键的长度(DISABLE And ENABLE CHANGE_TRACKING)
由于SQL性能优化或业务需求,往往在创建Table后需要扩展主键的长度,直接进行Alter Column会提示"ALTER TABLE ALTER COLUMN XXX failed because one or more objects access this colum",导致主键无法修改。这时可以使用DISABLE And ENABLE CHANGE_TRACKING临时取消约束,修改后再启原创 2012-04-19 10:47:08 · 1783 阅读 · 0 评论 -
用存储过程查出引起死锁的进程和SQL语句--数据库死锁原因及解决办法
死锁(Deadlock) 所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后转载 2011-09-07 13:30:07 · 4804 阅读 · 0 评论 -
(转)存储过程和自定义函数的区别
<br />存储过程,功能强大,可以执行包括修改表等一系列数据库操作,也可以创建为 SQL Server 启动时自动运行的存储过程。自定义函数,用户定义函数不能用于执行一组修改全局数据库状态的操作。存储过程,可以使用非确定函数。自定义函数,不允许在用户定义函数主体中内置非确定函数。存储过程,可返回记录集。自定义函数,可以返回表变量。存储过程,其返回值不能被直接引用。自定义函数,其返回值可以被直接引用。存储过程,用 EXECUTE 语句执行。自定义函数,在查询语句中调用。转载 2011-05-05 09:07:00 · 560 阅读 · 0 评论