读书人

解决sqlserver (数据库)sa 被锁定有

发布时间: 2012-07-30 16:19:05 作者: rapoo

解决sqlserver (数据库)sa 被锁定问题

使用window用户登录进去,新建一个查询框,执行这条语句

?

alter login sa with password = '123'
?unlock, check_policy = off, check_expiration = off
?? 一切搞定。。

?

?

可以进行查询:

CREATE Table #Who(spid int,    ecid int,    status nvarchar(50),    loginname nvarchar(50),    hostname nvarchar(50),    blk int,    dbname nvarchar(50),    cmd nvarchar(50),    request_ID int);CREATE Table #Lock(spid int,    dpid int,    objid int,    indld int,    [Type] nvarchar(20),    Resource nvarchar(50),    Mode nvarchar(10),    Status nvarchar(10));INSERT INTO #Who    EXEC sp_who active  --看哪个引起的阻塞,blk INSERT INTO #Lock    EXEC sp_lock  --看锁住了那个资源id,objid DECLARE @DBName nvarchar(20);SET @DBName='NameOfDataBase'SELECT #Who.* FROM #Who WHERE dbname=@DBNameSELECT #Lock.* FROM #Lock    JOIN #Who        ON #Who.spid=#Lock.spid            AND dbname=@DBName;--最后发送到SQL Server的语句DECLARE crsr Cursor FOR    SELECT blk FROM #Who WHERE dbname=@DBName AND blk<>0;DECLARE @blk int;open crsr;FETCH NEXT FROM crsr INTO @blk;WHILE (@@FETCH_STATUS = 0)BEGIN;    dbcc inputbuffer(@blk);    FETCH NEXT FROM crsr INTO @blk;END;close crsr;DEALLOCATE crsr;--锁定的资源SELECT #Who.spid,hostname,objid,[type],mode,object_name(objid) as objName FROM #Lock    JOIN #Who        ON #Who.spid=#Lock.spid            AND dbname=@DBName    WHERE objid<>0;DROP Table #Who;DROP Table #Lock;

?

读书人网 >其他数据库

热点推荐