Сведения о вопросе

HEIGTH

00:31, 16th August, 2020

Теги

Почему сервер Sql 2005 планы обслуживания использовать ту базу данных для инструкции DBCC CHECKDB будут?

Просмотров: 393   Ответов: 3

Это проблема, которую я видел у других людей, кроме меня, и я не нашел хорошего объяснения.

Допустим, у вас есть план обслуживания с задачей проверить базу данных, что-то вроде этого:

USE [MyDb]
GO
DBCC CHECKDB with no_infomsgs, all_errormsgs

Если вы посмотрите в свои журналы после выполнения задачи, вы можете увидеть что-то вроде этого:

08/15/2008 06:00:22,spid55,Unknown,DBCC CHECKDB (mssqlsystemresource) executed by NT AUTHORITY\SYSTEM found 0 errors and repaired 0 errors. Elapsed time: 0 hours 0 minutes 0 seconds.
08/15/2008 06:00:21,spid55,Unknown,DBCC CHECKDB (master) executed by NT AUTHORITY\SYSTEM found 0 errors and repaired 0 errors. Elapsed time: 0 hours 0 minutes 0 seconds.

Вместо того, чтобы проверить MyDb, он проверил Мастер и msssqlsystemresource.

Почему?

Мой обходной путь-создать задание агента сервера Sql с этим:

dbcc checkdb ('MyDb') with no_infomsgs, all_errormsgs;

Это всегда прекрасно работает.

08/15/2008 04:26:04,spid54,Unknown,DBCC CHECKDB (MyDb) WITH all_errormsgs<c/> no_infomsgs executed by NT AUTHORITY\SYSTEM found 0 errors and repaired 0 errors. Elapsed time: 0 hours 26 minutes 3 seconds.



  Сведения об ответе

park

17:36, 5th August, 2020

Для начала всегда помните, что GO - это не ключевое слово SQL; это просто разделитель пакетов, который (как правило) реализуется/распознается клиентом, а не сервером. Таким образом, в зависимости от контекста и клиента нет никакой гарантии, что текущая база данных сохраняется между пакетами.


  Сведения об ответе

ITSME

01:59, 4th August, 2020

Если вы используете план обслуживания, вам, вероятно,лучше использовать задачу проверки целостности базы данных. Если вы действительно хотите запустить собственное обслуживание, написанное на t-sql, запустите его, используя шаг в задании, а не в плане обслуживания, и приведенный выше код будет работать нормально. Как сказал Стю, оператор GO-это клиентская директива, а не ключевое слово sql и, похоже, только уважается isql, wsql, osql и т. д., клиентами и агентом sql. Я думаю, что это работает в пакетах DTS. Очевидно, что не в DTSX, хотя.


  Сведения об ответе

davran

00:23, 23rd August, 2020

У вас есть задача проверки целостности базы данных, и вы дважды щелкнули ее, выбрав MyDb, и когда план запускается, он проверяет только master?? странный. Ты уверен, что у тебя нет другого плана?


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться