Pregunta

Tengo una base de datos con la que estamos teniendo problemas. De alguna manera, el registro se convirtió en 400 Gb y la base de datos se ha vuelto inútil. Quiero eliminar todas las conexiones existentes a la base de datos y luego separar la base de datos.

Básicamente, lo que voy a hacer es deshacerme del archivo de registro gigante y crear uno nuevo y volver a conectarlo si funciona. Si no, vamos a restaurar desde copias de seguridad.

¿Fue útil?

Solución 3

Bueno, básicamente, ningún comando se ejecutaría contra la base de datos, en absoluto. Lo que terminamos haciendo fue apagar el servicio y crear copias vacías de los archivos mdf y ldf y reemplazar las que está utilizando el servidor SQL. Después de eso, restauramos la base de datos desde la última copia de seguridad y listo, está funcionando nuevamente (en su mayoría).

Otros consejos

Si el registro es inútil, puede usar estos comandos, pero documéntelo usted mismo antes de aplicar en un servidor de producción.

BACKUP LOG WITH NO_LOG para descartar las páginas del registro,

sp_helpdb para ver el nombre de los archivos de la base de datos

DBCC SHRINKFILE ('su nombre de archivo de registro', 0): para realizar el enlace del archivo físico al tamaño especificado.

Si está seguro de que no hay transacciones abiertas, puede poner la base de datos en modo de usuario único.

ALTER DATABASE [YourDB] SET SINGLE_USER WITH NO_WAIT

Cuando haya terminado, vuelva a ponerlo en modo multiusuario ALTER DATABASE [YourDB] SET MULTI_USER WITH NO_WAIT

Hace

haga una copia de seguridad del registro yourdb con truncate_only y luego dbcc shrinkdatabase (yourdb) ¿no reduce el archivo de registro por usted?

ALTER DATABASE [DB_NAME_HERE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE [DB_NAME_HERE] SET MULTI_USER
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top