Tengo una aplicación web que usa dos bases de datos. Los usuarios DB1 realizan sus operaciones CRUD (Crear, Leer, Actualizar, Eliminar). Base de datos DB2 es una base de datos de solo lectura en un servidor diferente que utilizo para propósitos de informes. Cada hora, mi DB1 guarda registros de transacciones y en DB2 tengo un trabajo que los restaura en ese DB2 para mantenerlo actualizado.Espere a que se cierren las conexiones antes de restaurar la base de datos de SQL Server
El problema al que me enfrento es que si hay usuarios que ejecutan informes sobre DB2 (ocurre con bastante frecuencia) se desconectan del servidor sql a medida que obtengo acceso exclusivo para restaurar la base de datos. El tiempo necesario para restaurar cada registro varía entre 1-4 minutos.
¿Cómo puedo implementar llamémoslo funcionalidad de espera en restauración donde mi trabajo espera a que terminen las consultas de los usuarios antes de cambiar la base de datos a acceso exclusivo y restaurar el registro?
Mis dos máquinas ejecutar SQL Server 2008 de 64 bits Standard Edition
i Acctually utilizar un procedimiento tienda que tira a todo el mundo:. ALTER PROCEDIMIENTO [dbo] [USP_GETEXCLUSIVE] varchar @dbname (100) AS DECLARE @KILL_ID int DECLARE @QUERY VARCHAR (320) DECLARE GETEXCLUSIVE_CURSOR CURSOR PARA SELECT A.SPID DE SYSPROCESSES una unión SYSDATABASES B ON A.DBID = B.DBID DONDE [email protected] OPEN GETEXCLUSIVE_CURSOR FETCH DESPUÉS de GETEXCLUSIVE_CURSOR EN @KILL_ID WHILE (@@ FETCH_STATUS = 0) COMIENZO SET @QUERY = 'KIL L '+ CONVERT (VARCHAR, @ KILL_ID) EXEC (@QUERY) FETCH DESPUÉS de GETEXCLUSIVE_CURSOR EN @KILL_ID FIN GETEXCLUSIVE_CURSOR CERRAR DEALLOCATE GETEXCLUSIVE_CURSOR – lstanczyk
La gran pregunta es cómo no dejar que la base de datos de aceptar nuevas conexiones para el tiempo mientras Estoy esperando. – lstanczyk
Creo que esto es lo que él quiere evitar. En Biztalk, hay un modo de apagado que le permite cerrar los servicios a nuevas conexiones, pero permite que los procesos existentes finalicen, y luego expulsarlos tan pronto como estén inactivos. Estoy pensando que quiere la funcionalidad equivalente en SQL Server. – SqlRyan