En utilisant Tsql, comment puis-je savoir quand DBCC CHECKDB dernière exécution sur le serveur SQL (2000, 2005 ou 2008)?tsql de savoir quand DBCC CHECKDB a été exécuté sur une base de données la dernière fois
Cordialement
En utilisant Tsql, comment puis-je savoir quand DBCC CHECKDB dernière exécution sur le serveur SQL (2000, 2005 ou 2008)?tsql de savoir quand DBCC CHECKDB a été exécuté sur une base de données la dernière fois
Cordialement
sur 2005 et jusqu'à vous pouvez exécuter
DBCC DBINFO ('YourDatabaseName') WITH TABLERESULTS
look pour dbi_dbccLastKnownGood
DBCC TRACEON (3604);
GO
-- page 9 is the boot page
DBCC PAGE (dbname, 1, 9, 3);
GO
Vous devez rechercher le champ de dbi_dbccLastKnownGood. C'était la dernière fois que DBCC CHECKDB a couru sans trouver de corruptions.
Essayez ceci pour vérifier tous les DB de sur SQL de 2005
SET NOCOUNT ON;
DBCC TRACEON (3604);
CREATE TABLE #temp (
Id INT IDENTITY(1,1),
ParentObject VARCHAR(255),
[Object] VARCHAR(255),
Field VARCHAR(255),
[Value] VARCHAR(255)
)
CREATE TABLE #Results (
DBName VARCHAR(255),
LastGoodDBCC VARCHAR(255)
)
DECLARE @Name VARCHAR(255);
DECLARE looping_cursor CURSOR
FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE CONVERT(varchar(500),databasepropertyex(name, 'Status'),0) = 'ONLINE'
OPEN looping_cursor
FETCH NEXT FROM looping_cursor INTO @Name
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #temp
EXECUTE('DBCC PAGE (['[email protected]+'], 1, 9, 3)WITH TABLERESULTS');
INSERT INTO #Results
SELECT @Name,MAX(VALUE) FROM #temp
WHERE Field = 'dbi_dbccLastKnownGood';
FETCH NEXT FROM looping_cursor INTO @Name
END
CLOSE looping_cursor;
DEALLOCATE looping_cursor;
SELECT DBName
,ISNULL(LastGoodDBCC,'1900-01-01 00:00:00.000') AS 'LastGoodDBCC'
FROM #Results
DROP TABLE #temp
DROP TABLE #Results
La requête ci-dessus produit des résultats incorrects car la table #temp n'est pas tronquée dans le curseur
SET NOCOUNT ON;
DBCC TRACEON (3604);
CREATE TABLE #temp (
Id INT IDENTITY(1,1),
ParentObject VARCHAR(255),
[Object] VARCHAR(255),
Field VARCHAR(255),
[Value] VARCHAR(255)
)
CREATE TABLE #Results (
DBName VARCHAR(255),
LastGoodDBCC VARCHAR(255)
)
DECLARE @Name VARCHAR(255);
DECLARE looping_cursor CURSOR
FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE CONVERT(varchar(500),databasepropertyex(name, 'Status'),0) = 'ONLINE'
OPEN looping_cursor
FETCH NEXT FROM looping_cursor INTO @Name
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #temp
EXECUTE('DBCC PAGE (['[email protected]+'], 1, 9, 3)WITH TABLERESULTS');
INSERT INTO #Results
SELECT @Name,MAX(VALUE) FROM #temp
WHERE Field = 'dbi_dbccLastKnownGood';
truncate table #temp
FETCH NEXT FROM looping_cursor INTO @Name
END
CLOSE looping_cursor;
DEALLOCATE looping_cursor;
SELECT DBName
,ISNULL(LastGoodDBCC,'1900-01-01 00:00:00.000') AS 'LastGoodDBCC'
FROM #Results