ITPub博客

首页 > 数据库 > 数据库开发技术 > How to properly check for data corruption via a SQL job

How to properly check for data corruption via a SQL job

原创 数据库开发技术 作者:jason0630 时间:2008-07-17 14:24:18 0 删除 编辑

----------------------------------------------------------------------------------------------------
-- OBJECT NAME : isp_DBCC_CHECKDB
--
-- AUTHOR : Tara Duggan
-- DATE : May 3, 2004
--
-- INPUTS : None
-- OUTPUTS : None
-- DEPENDENCIES : None
--
-- DESCRIPTION : This stored procedure runs DBCC CHECKDB for each of the databases.
--
-- EXAMPLES (optional) : EXEC isp_DBCC_CHECKDB
--
-- MODIFICATION HISTORY :
----------------------------------------------------------------------------------------------------
-- 02/07/2007 Tara Kizer
-- Added support for SQL Server 2005 (didn't want to use sysdatabases since it's only there for
-- backward compatibility.
--
-- Added the option to skip databases that are in a loading state, such as those with the NORECOVERY
-- option set or those that are the mirror in database mirroring.
----------------------------------------------------------------------------------------------------
ALTER PROC [dbo].[isp_DBCC_CHECKDB]
AS

SET NOCOUNT ON

DECLARE @dbid int, @DBName sysname, @SQL nvarchar(4000), @version char(1)

SELECT @dbid = 0, @version = CONVERT(char(1), SERVERPROPERTY('ProductVersion'))

IF @version = '8'
BEGIN
WHILE @dbid < (SELECT MAX(dbid) FROM master.dbo.sysdatabases WHERE dbid > @dbid AND status & 32 = 0)
BEGIN
SELECT TOP 1 @dbid = dbid, @DBName = name
FROM master.dbo.sysdatabases
WHERE dbid > @dbid AND status & 32 = 0
ORDER BY dbid

SET @SQL = 'DBCC CHECKDB([' + @DBName + '])'

EXEC sp_executesql @statement = @SQL
END
END
ELSE IF @version = '9'
BEGIN
WHILE @dbid < (SELECT MAX(database_id) FROM master.sys.databases WHERE database_id > @dbid AND state IN (0, 4))
BEGIN
SELECT TOP 1 @dbid = database_id, @DBName = name
FROM master.sys.databases
WHERE database_id > @dbid AND state IN (0, 4)
ORDER BY database_id

SET @SQL = 'DBCC CHECKDB([' + @DBName + '])'

EXEC sp_executesql @statement = @SQL
END
END

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7667023/viewspace-1007419/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Optimizing tempdb
请登录后发表评论 登录
全部评论
  • 博文量
    25
  • 访问量
    170884