Estoy tratando de escribir una rutina T-SQL que reduzca el archivo de registro de transacciones utilizando DBCC SHRINKFILE según 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, ¿hay alguna otra forma de obtener esta información? El nombre predeterminado para los registros de transacciones es <<Database Name>>_log
, pero prefiero no confiar en esto.Cómo obtener el nombre lógico del registro de transacciones en SQL Server 2005
Respuesta
Puede usar: archivos
SELECT name
FROM sys.master_files
WHERE database_id = db_id()
AND type = 1
registro tienen type = 1 para cualquier database_id y todos los archivos de todas las bases de datos se pueden encontrar en sys.master_files.
EDIT:
Debo señalar que no se debe estar disminuyendo su registro de forma rutinaria. El 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 en un archivo instantáneo y tiene que cerrarse a cero cuando se le agrega espacio, 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 siempre es 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. Por lo tanto, DBCC SHRINKFILE (2...)
siempre funcionará. No se puede parametrizar dentro de DBCC por lo que se evita el SQL dinámico. Si desea el nombre, use FILE_NAME (2).
select Name
from sys.database_files
Genera,
SomeDb_Data
SomeDb_Log
SqlServer 2012
- 1. SQL Server 2005: ¿Por qué nombrar transacciones?
- 2. ¿Cómo puedo obtener el tamaño del Registro de transacciones en SQL 2005 mediante programación?
- 3. Truncar el archivo de registro de transacciones de SQL Server
- 4. transacciones anidadas en SQL Server
- 5. Leer el registro de transacciones de SQL Server
- 6. Cómo obtener el nombre de Índice de IndexId en SQL Server 2005
- 7. Para encontrar el registro de SQL Server 2005 Management Studio
- 8. Explorador/Analizador de registro de transacciones de SQL Server
- 9. Duplicación vs. Registro de envío en SQL Server 2005
- 10. SQL Server 2008 a SQL Server 2005
- 11. SQL Server 2005 replicación
- 12. SQL Server: ¿cómo consultar cuándo se realizó la última copia de seguridad del registro de transacciones?
- 13. Cambiar el nombre del archivo de datos de la base de datos en SQL Server 2005
- 14. Cómo puedo administrar el tamaño de registro de SQL Server
- 15. Isoweek en SQL Server 2005
- 16. Revertir transacción utilizando registro de transacciones
- 17. Inhabilitar registro de transacciones
- 18. Cuándo usar Transacciones en SQL Server
- 19. UPSERT atómico en SQL Server 2005
- 20. ¿Dinámicamente nombrar índices en SQL Server 2005?
- 21. ¿Cómo contar cada registro en cada tabla en una base de datos de SQL Server 2005?
- 22. SQL Server 2005: cómo restar 6 meses
- 23. Plantilla básica para transacciones en SQL Server
- 24. Restaurar SQL Server 2008 DB * a * SQL Server 2005
- 25. SQL Server 2005 - Orden de combinaciones internas
- 26. Cómo actualizar la resolución de conflictos al actualizar de SQL-Server 2005 a SQL-Server 2008
- 27. Consultas jerárquicas en SQL Server 2005
- 28. degradación de SQL Server 2008 a SQL Server 2005
- 29. unen tres tablas en SQL Server 2005
- 30. Tamaño del campo VARBINARIO en SQL Server 2005
ps. Tenga en cuenta que diferentes bases de datos en la misma instancia pueden usar el mismo nombre de registro. Como resultado, además de poner 'DBCC SHRINKFILE ('nombre de registro lógico', tamaño)' primero debe poner 'use [MyDatabase]' para asegurarse de que está trabajando en el DB correcto. – JohnLBevan