zoukankan      html  css  js  c++  java
  • [转载]sql server 常用存储过程

    View Code
    /*-----------------------------------------------------------------------------------------------------------------------
    名  稱:查看死锁情況
    調用對像:
    備註說明:
    修改日志:
    程式作者:XXXXX
    -----------------------------------------------------------------------------------------------------------------------
    */
    CREATE PROCEDURE [dbo].[sp_who_lock]
    AS
    BEGIN
    SET NOCOUNT ON

    DECLARE @spid int,@bl int,@intTransactionCountOnEntry int,@intRowcount int,@intCountProperties int,@intCounter int
    CREATE TABLE #tmp_lock_who
    (
    id
    int identity(1,1),
    spid
    smallint,
    bl
    smallint
    )

    IF @@ERROR<>0 RETURN @@ERROR

    INSERT INTO #tmp_lock_who(spid,bl)
    SELECT 0 ,blocked
    FROM (SELECT * FROM sysprocesses WHERE blocked>0 ) a
    WHERE not exists(SELECT * FROM (SELECT * FROM sysprocesses WHERE blocked>0 ) b
    WHERE a.blocked=spid)
    UNION SELECT spid,blocked FROM sysprocesses WHERE blocked>0

    IF @@ERROR<>0 RETURN @@ERROR

    --找到臨時表的記錄數
    SELECT @intCountProperties = Count(*),@intCounter = 1 FROM #tmp_lock_who

    IF @@ERROR<>0 RETURN @@ERROR

    IF @intCountProperties=0
    SELECT '現在沒有阻塞和死鎖信息' as Message

    --循環開始
    WHILE @intCounter <= @intCountProperties
    BEGIN
    --取第一條記錄
    SELECT @spid = spid,@bl = bl
    FROM #tmp_lock_who WHERE Id = @intCounter
    BEGIN
    IF @spid =0
    SELECT '引起數據庫死鎖的是: '+ CAST(@bl AS VARCHAR(10)) + '進程號,其執行的SQL語法如下'
    ELSE
    SELECT '進程號SPID:'+ CAST(@spid AS VARCHAR(10))+ '' + '進程號SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其當前進程執行的SQL語法如下'

    DBCC INPUTBUFFER (@bl )
    END

    --循環指針下移
    SET @intCounter = @intCounter + 1
    END


    DROP TABLE #tmp_lock_who

    RETURN 0

    SET NOCOUNT OFF
    END
    GO
    /*-----------------------------------------------------------------------------------------------------------------------
    名  稱:資料庫備份
    調用對像:
    備註說明:
    修改日志:
    程式作者:XXX
    EXEC UP_DataBase_Backup 'IVT','D:\DB_BAK\'
    -----------------------------------------------------------------------------------------------------------------------
    */
    CREATE PROCEDURE [dbo].[UP_DataBase_Backup]
    (
    @databsename VARCHAR(100),
    @todiskpath VARCHAR(200)
    )
    AS
    BEGIN
    SET NOCOUNT ON

    DECLARE @filename VARCHAR(100)
    SET @filename=@databsename+'_'+CONVERT(VARCHAR(10),GETDATE(),112)+'.bak'

    SET @todiskpath=@todiskpath+@filename
    backup database @databsename to disk=@todiskpath

    SET NOCOUNT OFF
    END
    GO
    /*-----------------------------------------------------------------------------------------------------------------------
    名  稱:清除資料庫log
    調用對像:
    備註說明:注意,此存儲過程在建在master數據庫中
    修改日志:
    程式作者:XXXXX
    -----------------------------------------------------------------------------------------------------------------------
    */
    CREATE PROCEDURE [dbo].[shrink_db]
    (
    @db_name varchar(100)----數據庫名稱
    )
    AS
    BEGIN
    SET NOCOUNT ON

    ----1.清空日志
    dump transaction @db_name with no_log
    --2.截断事务日志
    backup log @db_name with no_log
    --3.收缩数据库文件(如果不压缩,数据库的文件不会减小
    dbcc shrinkdatabase(@db_name)
    --4.设置自动收缩
    --exec sp_dboption @db_name,autoshrink,true

    SET NOCOUNT OFF
    END
    GO
  • 相关阅读:
    API Hook完全手册
    ASP.NET页面刷新的实现方法
    ASP.NET验证码
    ASP.NET优化性能的方法
    Asp.net中Server.Transfer,Server.Execute和Response.Redirect的区别
    FireFox新标签页打开搜索和书签
    win10里如何在中文输入法里添加美式键盘
    Sublime Text 3中文乱码问题解决
    Win2008 r2 IIS7.5出现“FastCGI进程最近常常失败。请过一会再尝试此请求”的解决方法
    Sublime Text 3中设置不记住上次打开的文件
  • 原文地址:https://www.cnblogs.com/snowlove67/p/2145617.html
Copyright © 2011-2022 走看看