sqlserverwho
Ⅰ sqlserver怎麼清除死鎖
1、首先需要判斷是哪個用戶鎖住了哪張表.
查詢被鎖表
selectrequest_session_idspid,OBJECT_NAME(resource_associated_entity_id)tableName
fromsys.dm_tran_lockswhereresource_type='OBJECT'
查詢後會返回一個包含spid和tableName列的表.
其中spid是進程名,tableName是表名.
2.了解到了究竟是哪個進程鎖了哪張表後,需要通過進程找到鎖表的主機.
查詢主機名
execsp_who2'xxx'
xxx就是spid列的進程,檢索後會列出很多信息,其中就包含主機名.
3.通過spid列的值進行關閉進程.
關閉進程
declare@spidint
Set@spid=xxx--鎖表進程
declare@sqlvarchar(1000)
set@sql='kill'+cast(@spidasvarchar)
exec(@sql)
PS:有些時候強行殺掉進程是比較危險的,所以最好可以找到執行進程的主機,在該機器上關閉進程.
Ⅱ sql server 如何獲取當前操作的資料庫名
1、首先我們打開電腦里的sql server軟體。
Ⅲ sqlserver怎麼查看哪些地方連接資料庫了
1、通過系統的「性能」來查看:
開始->管理工具->性能(或者是運行裡面輸入
mmc)然後通過
添加計數器添加
SQL
的常用統計
然後在下面列出的項目裡面選擇用戶連接就可以時時查詢到sql
server資料庫連接數了。
不過此方法的話需要有訪問那台計算機的許可權,就是要通過windows賬戶登陸進去才可以添加此計數器。
2、通過系統表來查詢:
SELECT
*
FROM
[Master].[dbo].[SYSPROCESSES]
WHERE
[DBID]
IN
(
SELECT
[DBID]
FROM
[Master].[dbo].[SYSDATABASES]
WHERE
NAME='databaseName'
)
databaseName
是需要查看的資料庫,然後查詢出來的行數,就是當前的sql
server資料庫連接數。不過裡面還有一些別的狀態可以做參考用。
3、通過系統過程來查詢:
SP_WHO
'loginName'
loginName
是當然登陸Sql的用戶名,一般程序裡面都會使用一個username來登陸SQL這樣通過這個用戶名就能查看到此用戶名登陸之後佔用的連接了。
如果不寫loginName,那麼返回的就是所有的sql
server資料庫連接。