transacciones tamaño solucion registro log lleno limpiar ldf historial grande está depurar demasiado datos consultar archivo sql-server transaction-log

tamaño - Cómo obtener el nombre lógico del registro de transacciones en SQL Server 2005



limpiar log de transacciones sql server (3)

Estoy tratando de escribir una rutina T-SQL que reduce el archivo de registro de transacciones usando DBCC SHRINKFILE basado en el nombre lógico de la base de datos. La función DB_NAME() le da el nombre lógico de la base de datos. ¿Hay uno equivalente para el registro de transacciones? Si no es así, ¿hay alguna otra manera de obtener esta información? El nombre predeterminado para los registros de transacciones es <<Database Name>>_log , pero prefiero no confiar en esto.


Puedes usar:

SELECT name FROM sys.master_files WHERE database_id = db_id() AND type = 1

Los archivos de registro tienen el tipo = 1 para cualquier database_id y todos los archivos para todas las bases de datos se pueden encontrar en sys.master_files.

EDITAR:

Debo señalar que no debería estar reduciendo su registro de forma rutinaria. Su registro de transacciones debe tener el tamaño adecuado para evitar que tenga que crecer, y luego dejarlo en ese tamaño. El registro de transacciones no se puede inicializar instantáneamente y el archivo debe estar en cero cuando se le agrega espacio, lo que es una operación secuencial lenta que degrada el rendimiento.


Suponiendo una base de datos estándar (por ejemplo, solo un archivo de registro), el archivo de registro es siempre file_id = 2. Esto se aplica incluso si tiene varios archivos de datos (id = 3+ para NDF).

El DBCC también toma la identificación del archivo también. Entonces, DBCC SHRINKFILE (2...) siempre funcionará. No se puede parametrizar dentro del DBCC, por lo que esto evita el SQL dinámico. Si quieres el nombre, usa FILE_NAME (2).


select Name from sys.database_files

Genera,

SomeDb_Data SomeDb_Log

SqlServer 2012