Как один сценарий будет усекать конкретную таблицу в каждой базе данных? - PullRequest
0 голосов
/ 19 мая 2009

У меня есть Microsoft SQL Server 2008 со многими базами данных, и у большинства из них есть таблица журналов. Я хотел бы иметь возможность запланировать запуск сценария и усечение таблицы журналов в каждой из этих баз данных (динамически). Я предполагаю, что мне нужно получить имя каждой пользовательской базы данных, а затем обрезать таблицу Logs в базах данных, которые содержат таблицу Logs.

Утверждение, которое я использовал в итоге:

EXEC sp_MSForEachDB 'Use [?]; IF  EXISTS (SELECT * FROM sys.tables WHERE name = "Logs" and type="U")TRUNCATE TABLE Logs'

Ответы [ 2 ]

7 голосов
/ 19 мая 2009

Это немного взломано, поскольку хранимая процедура недокументирована, но попробуйте это:

EXEC sp_MSForEachDB 'Use ?; TRUNCATE TABLE Logs'
0 голосов
/ 20 мая 2009

В 2008 году проще всего сделать, если, если он не используется в данный момент, это

Напишите скрипт, который делает это в динамическом sql

Alter Database <mydb> set recovery simple
go

Checkpoint
go

Alter Database <mydb> set recovery full
go
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...