我写了一些代码来升级SQL Server数据库。在升级数据库之前,我计划使用以下语句限制对数据库的访问:
ALTER DATABASE Test SET SINGLE_USER WITH ROLLBACK IMMEDIATE
在运行此代码之前,我会给用户一个选择退出的机会。在提示用户时,我认为显示活动连接列表(以设定的间隔连续轮询)会很好;为用户提供工具,以便在继续之前识别他们想要从服务器启动的应用程序/用户。
在SQL 2000中,您可以使用sys.sysprocesses
表查看适用于数据库的所有连接。这包括没有活动请求的连接(例如,当您打开查询分析器窗口并选择数据库时)。
但是,使用:
sys.dm_exec_connections
sys.dm_exec_sessions
;和sys.dm_exec_requests
我无法找到实现相同结果的方法。看来这些视图只通过请求将连接与数据库联系起来。有没有办法模仿sys.sysprocesses
的行为?我不想将此表用于SQL Server 2005/2008数据库。
答案 0 :(得分:0)
呃......我为你的其他问题推荐了这些。
很抱歉,但是,我发现你仍然需要使用sysprocesses
它被记录为Microsoft Connect 144515中要修复的错误I found it here
就个人而言,我仍然使用sysprocesses,因为我对它感到很舒服,不管是懒惰还是luddite可能是......