本文主要是介绍如何设置已被连接占用的数据库为MULTI_USER模式,数据库 'xxx' 已打开,并且一次只能有一个用户访问,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
USE master;
GO
--方法一
DECLARE @SQL VARCHAR(3000);
SET @SQL = '';
SELECT @SQL = @SQL+'; KILL ' + RTRIM(SPID)
FROM [sys].[sysprocesses] AS sps
WHERE [sps].[dbid] = DB_ID('test');
SET @SQL = SUBSTRING(@SQL, 2, LEN(@SQL));
EXEC(@SQL);
GO
--方法二
DECLARE @DBName SYSNAME;
SET @DBName = 'ESB'; --这个是要删除的数据库库名
DECLARE @KSQL NVARCHAR(1000)
DECLARE tb CURSOR LOCAL
FOR
SELECT
KSQL = 'KILL ' + CAST([sps].[spid] AS NVARCHAR(10))
FROM [sys].[sysprocesses] AS sps
WHERE dbid = DB_ID(@DBName)--查询@DBName相关的线程
--循环杀掉要删除数据的相关线程
OPEN tb
FETCH NEXT FROM tb INTO @KSQL
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE(@KSQL);
FETCH NEXT FROM tb INTO @KSQL
END
CLOSE tb
DEALLOCATE tb
--方法三
ALTER DATABASE [ESB] SET MULTI_USER;--设置为多用户模式
这篇关于如何设置已被连接占用的数据库为MULTI_USER模式,数据库 'xxx' 已打开,并且一次只能有一个用户访问的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!