Я пытаюсь написать процедуру T-SQL, которая сокращает файл журнала транзакций, используя DBCC SHRINKFILE на основе логического имени базы данных. Функция DB_NAME()
дает логическое имя базы данных. Есть ли эквивалентный для журнала транзакций? Если нет, есть ли другой способ получить эту информацию? Имя по умолчанию для журналов транзакций - <<Database Name>>_log
, но я предпочел бы не полагаться на это.Как получить логическое имя журнала транзакций в SQL Server 2005
ответ
Вы можете использовать:
SELECT name
FROM sys.master_files
WHERE database_id = db_id()
AND type = 1
Файлы журналов имеют тип = 1 для любого database_id и все файлы для всех баз данных можно найти в sys.master_files.
EDIT:
Я должен отметить, что вы не должны быть усадка вашего журнала на регулярной основе. Ваш журнал транзакций должен иметь соответствующий размер, чтобы он никогда не увеличивался, а затем оставался на таком уровне. Журнал транзакций не может быть мгновенным инициализированным файлом и должен быть нулевым, если в него добавлено пространство, что является медленной последовательной операцией, которая снижает производительность.
Предполагая, что стандартная база данных (например, только один файл журнала), файл журнала всегда является file_id = 2. Это применимо, даже если у вас есть несколько файлов данных (id = 3+ для NDF).
DBCC также принимает идентификатор файла. Таким образом, DBCC SHRINKFILE (2...)
всегда будет работать. Вы не можете параметризовать внутри DBCC, чтобы избежать динамического SQL. Если вы хотите получить имя, используйте FILE_NAME (2).
select Name
from sys.database_files
Формирует,
SomeDb_Data
SomeDb_Log
SqlServer 2012
- 1. SQL SERVER журнала транзакций полный
- 2. Как просмотреть файл журнала транзакций SQL Server 2005
- 3. относительно журнала транзакций SQL Server
- 4. sql server 2005 Сохранение файла журнала транзакций зеркальной базы данных
- 5. Анализ журнала транзакций SQL Server 2005 с использованием Log Parser
- 6. SQL Server 2005 Журнал транзакций слишком большой
- 7. Как уменьшить использование журнала транзакций SQL Server
- 8. SQL Server: Как увеличить размер журнала транзакций?
- 9. Как я могу получить размер журнала транзакций в SQL Server 2005?
- 10. Распределение транзакций Завершено - Ошибка - SQL Server 2005
- 11. Файл журнала транзакций Truncate SQL Server
- 12. Sql Server журнала ошибок 2008 транзакций
- 13. Вывод журнала транзакций SQL Server 2008
- 14. Определение оптимального размера журнала в SQL Server 2005
- 15. Журнал транзакций SQL Server 2005 не будет обрезаться
- 16. Как быть гарантированной целостностью транзакций в SQL Server 2005
- 17. Журнал транзакций SQL Server 2005 всегда слишком велик
- 18. Как получить имя индекса из IndexID в SQL Server 2005
- 19. Как запустить журнал транзакций вручную в SQL Server 2005?
- 20. Как насчет журнала транзакций Sql
- 21. Как создать «копию» файла журнала транзакций SQL Server
- 22. Удалить записи SQL Server 2005 без ведения журнала
- 23. ведение журнала транзакций в sql
- 24. Изменение по умолчанию логическое имя файла в SQL 2005
- 25. TSQL - возврат транзакций - PAGEIOLATCH_EX wait type - SQL SErver 2005
- 26. SQL Server - Retrive Удаление журнала транзакций базы данных SQL
- 27. Создание текстового журнала транзакций SQL
- 28. Прочитать журнал транзакций SQL Server
- 29. SQL Server: несколько транзакций
- 30. Как получить инструкцию SQL из файла журнала транзакций LOGAC?
пс. Обратите внимание, что разные базы данных в одном экземпляре могут использовать одно и то же имя журнала. В результате помимо добавления 'DBCC SHRINKFILE (« логическое имя журнала », размер) вы должны сначала поместить' use [MyDatabase] ', чтобы убедиться, что работаете в правой БД. – JohnLBevan