我有一个使用两个数据库的Web应用程序。 DB1用户执行他们的CRUD(创建,读取,更新,删除)操作。数据库DB2是用于报告目的的不同服务器上的只读数据库。每个小时,我的DB1都会保存事务日志,而在DB2上,我有一份工作可以在DB2上恢复它们以保持它最新。在恢复SQL Server数据库之前等待连接关闭
我面临的问题是,如果有用户在DB2上运行报告(经常发生),他们会从sql服务器断开连接,因为我获得了独占访问来还原数据库。恢复每个日志所需的时间范围在1-4分钟之间。
我该如何实现让我们称之为等待 - 恢复功能,其中我的作业等待用户的查询完成,然后再将数据库切换到独占访问并恢复日志?
我的机器上运行两个SQL Server 2008中的64位标准版
我acctually使用存储的过程,踢大家出: ALTER PROCEDURE [DBO] [USP_GETEXCLUSIVE] @dbname VARCHAR(100)AS DECLARE @KILL_ID INT DECLARE VARCHAR @QUERY(320) DECLARE GETEXCLUSIVE_CURSOR CURSOR FOR SELECT A.SPID FROM SYSPROCESSES A JOIN SYSDATABASES乙ON A.DBID = B.DBID WHERE [email protected] OPEN GETEXCLUSIVE_CURSOR FETCH NEXT FROM GETEXCLUSIVE_CURSOR INTO @KILL_ID WHILE(@@ FETCH_STATUS = 0) BEGIN SET @QUERY ='KIL L“+ CONVERT(VARCHAR,@ KILL_ID) EXEC(@QUERY) NEXT来去GETEXCLUSIVE_CURSOR INTO @KILL_ID END CLOSE GETEXCLUSIVE_CURSOR DEALLOCATE GETEXCLUSIVE_CURSOR – lstanczyk 2009-06-25 19:13:37
最大的问题是如何不要让数据库接受的时间,而新的连接我在等。 – lstanczyk 2009-06-25 19:14:31