too poner placed online not long lock linea fuera force failed dbname datos could because database user sql-server-2008-r2 offline

poner - set online database sql server



Arranque de usuarios desde SQL Server (2)

Básicamente, puede simplemente configurar la base de datos en el modo "usuario único" y usarlo exclusivamente; este T-SQL hará esto:

USE master; GO ALTER DATABASE AdventureWorks2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO

(por supuesto, ¡reemplace AdventureWorks2012 con su propio nombre de base de datos!)

Esto hará que la base de datos sea "un usuario único", por ejemplo, solo usted tiene acceso a ella, y arrancará cualquier usuario que esté actualmente en línea, y revertirá todas las transacciones abiertas.

¡Obtenga más información sobre el modo de usuario único en MSDN !

Este ejemplo establece la base de datos en el modo SINGLE_USER para obtener acceso exclusivo. La opción de terminación WITH ROLLBACK IMMEDIATE se especifica en la primera sentencia ALTER DATABASE . Esto hará que todas las transacciones incompletas se retrotraigan y que cualquier otra conexión a la base de datos AdventureWorks2012 se desconecte inmediatamente.

No estoy seguro de cómo hacer esta pregunta. Estamos ejecutando SQL Server 2008 R2. No soy el administrador, sino un programador. Necesito escribir una aplicación que actualice algunas cosas de la base de datos por la noche. Voy a establecer un indicador para deshabilitar los inicios de sesión en la base de datos, pero quiero hacer que una base de datos particular no esté disponible para nadie, excepto para mí, incluso si alguien ya ha iniciado sesión en la base de datos. Mi programa se ejecutará todas las noches, como un archivo por lotes, presumiblemente con privilegios de administrador.

Espero producir algo así como un script de comandos SQL. Podría desconectar la base de datos, excepto que necesito hacer modificaciones a mí mismo. No estoy seguro de la mejor manera de manejar esto.


Dado que está utilizando una cuenta administrativa para realizar las actualizaciones, supongo que la cuenta está en una de estas funciones: db_owner , dbcreator , sysadmin . Use la sintaxis ALTER DATABASE SET ... para controlar el acceso a la base de datos durante las operaciones DML.

La suposición es que los usuarios de la base de datos que desea bloquear no están en los roles mencionados anteriormente.

USE master; -- only allow members of db_owner, dbcreator, or sysadmin roles to access -- database, allowing current transactions time to complete. if you want to -- drop access immediately, add WITH ROLLBACK IMMEDIATE ALTER DATABASE SET RESTRICTED_USER; -- data load -- return database to normal operating state ALTER DATABASE SET MULTI_USER;