摘要: 养成写注释的习惯。比如存储过程,我们不仅在创建存储过程的时候写注释,而且是以后的开发版本中修改了存储过程,那么也要写注释。存储过程不要以sp_开头,因为系统存储过程都是以sp_开头的。而且在执行sp_开关的存储过程时数据库引擎首先在master数据库中查找这个存储过程,如果找不到,再去其它数据库查找。-- 创建一个sp_开头的存储过程IF OBJECT_ID('[dbo].[sp_executesql]') IS NOT NULL DROP PROCEDURE [dbo].[sp_executesql];CREATE PROC [dbo].[sp_executesql]AS S 阅读全文
posted @ 2013-09-18 16:18 超缘 阅读(196) 评论(0) 推荐(0) 编辑
摘要: /*=================================== --author: fan --Date: 2008-08-08 --Description: 定期对表的索引进行重建操作 --注意:要观察索引的情况,对于不经常用的索引可以删除。 --注意:小表字段可以不用创建索引。 ===========================================*/ CREATE PROCEDURE [dbo].[Y_RebuildIndex]AS BEGIN DECLARE @t TABLE(id INT IDENTITY(1,1),TableName VARCHAR(20 阅读全文
posted @ 2013-09-18 16:14 超缘 阅读(205) 评论(0) 推荐(0) 编辑
摘要: -- ========== MSSQL2005 =====================USE mastergoDECLARE @dbname sysname;SET @dbname='BSV100';-- 清空日志EXEC ('DUMP TRANSACTION ['+@dbname+'] WITH NO_LOG');-- 截断事务日志:EXEC ('BACKUP LOG ['+@dbname+'] WITH NO_LOG');-- 收缩数据库文件(如果不压缩,数据库的文件不会减小EXEC ('DBCC 阅读全文
posted @ 2013-09-18 15:33 超缘 阅读(217) 评论(0) 推荐(0) 编辑
摘要: /*==================== 资源占用锁 ===============如果发现某个资源频繁的发生被占用的情况(放置锁)更新锁过多的发生1.是否有很多数据被频繁的修改2.是否缺少合适的索引3.是否索引碎片过大-- 查看锁的类型SELECT * FROM master.dbo.spt_values WHERE [type] = 'L';*/USE test -- 要观察的数据库goSELECTrequest_session_id AS sp_id, COALESCE(s.name + '.' + o.name + ISNULL('.' 阅读全文
posted @ 2013-09-18 15:28 超缘 阅读(995) 评论(0) 推荐(0) 编辑
摘要: USE mastergo/*======= 死锁经常与正常阻塞混淆 ========== 死锁是无期限的等待和阻塞,所以数据库引擎会提前判断而自动进行处理。而阻塞是当一个事务锁定了另一个事务需要的资源,第二个事务必须等待锁被释放。默认情况下,SQL Server 事务不会超时(除非设置了 LOCK_TIMEOUT)。所以表现为第二个事务被长久阻塞,而不是被死锁。故需要人为发现和处理。======== 以下显示被长久阻塞的线程列表 ==========================*/SELECT DB_NAME(a.[dbid]) AS [所在的数据库],a.spid AS [等待资源的线程 阅读全文
posted @ 2013-09-18 15:23 超缘 阅读(1351) 评论(0) 推荐(0) 编辑