2008-08-15 5 views
0

이것은 나 자신 외에 다른 사람들을 보아온 문제이며 좋은 설명을 찾지 못했습니다.SQL Server 2005 유지 관리 계획에서 dbcc checkdb에 대해 잘못된 데이터베이스를 사용하는 이유는 무엇입니까?

의 당신이 뭔가를 데이터베이스를 확인하는 작업과 유지 관리 계획을 가지고 있다고 가정 해 봅시다 :

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를 검사하는 대신 master 및 msssqlsystemresource를 검사했습니다.

왜?

내 해결이와 SQL Server 에이전트 작업을 만드는 것입니다 : 항상 잘 작동

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. 

답변

1

는 우선, 항상 GO는 SQL 키워드 아니라는 것을 기억; 그것은 (일반적으로) 서버가 아닌 클라이언트에 의해 구현/인식되는 배치 분리 기호 일뿐입니다. 따라서 컨텍스트와 클라이언트에 따라 현재 데이터베이스가 배치간에 보존된다는 보장이 없습니다.

1

유지 관리 계획을 사용중인 경우 데이터베이스 무결성 확인 작업을 사용하는 것이 더 나을 것입니다. 정말로 t-SQL로 작성된 유지 관리를 실행하려면 유지 관리 계획이 아닌 작업의 단계를 사용하여 실행하십시오. 그러면 위 코드가 정상적으로 작동합니다. Stu와 마찬가지로 GO 문은 sql 키워드가 아닌 클라이언트 지시문이며 isql, wsql, osql 등의 클라이언트와 SQL 에이전트에 의해 존중되는 것 같습니다. DTS 패키지에서 작동한다고 생각합니다. 물론, DTSX에는 없습니다.

0

데이터베이스 무결성 검사 작업이 있고 두 번 클릭하면 MyDb가 선택되고 계획이 실행되면 마스터 만 검사합니까 ?? 기묘한. 다른 계획을 실행하지 않았습니까?