使用sqlmaint.exe备份数据库:-CkDB -BkUpOnlyIfClean

我正在使用SQL Server 2005 sqlmaint.exe来备份远程SQL Server数据库。 通常我使用-CkDB -BkUpOnlyIfClean选项来设置备份。

sqlmaint.exe -S IPForRemote\SLQInstance -U user -P pwd -D db -CkDB -BkUpOnlyIfClean -Rpt C:\LocalPath\MSSQL_Backup\Log\dbbackup.log -VrfyBackup -BkUpMedia DISK -BkUpDB C:\RemotePath\MSSQL_Backup -DelBkUps 3days -DelTxtRpt 3weeks -HtmlRpt C:\LocalPath\MSSQL_Backup\HTMLRpt\dbbackup.html -DelHtmlRpt -3weeks 

这个SQL Server数据库的大部分工作正常。 今天,我试图做相同的反对另一个SQL Server Express数据库。 我无法使用这些选项进行备份。 备份在第一步失败:

 [1] Database ctc_config: Check Data and Index Linkage... 

以下是错误消息:

[Microsoft SQL-DMO(ODBC SQLState:42000)]错误5030:[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]无法专门locking数据库以执行操作。 [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]检查语句中止。 由于无法创build数据库快照而无法locking数据库或表,因此无法检查数据库。 请参阅联机丛书以了解何时需要此行为以及存在哪些解决方法的详细信息。 另请参阅以前的错误了解更多详情。

如果我不包括他们,后面是好的。 该数据库与我之前完成的数据库非常相似。

我也尝试使用SQL Management Studio在远程PC上执行操作,通过调用db的上下文菜单:task-> backup ….它工作正常。 我想从工作室的备份可能不包括检查。

我不确定数据库是否有问题。 我真的想用完整性检查来备份数据库。

我build议远离sqlmaint.exe(将被弃用),并结合实际的SQL查询移动到SQLCMD http://msdn.microsoft.com/en-us/library/ms180944.aspx

 sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt> 

我已经安排DBCC CHECKDB作为计划的工作每周,你不应该检查每次你备份