3
A
回答
6
2005年和最多可以運行
DBCC DBINFO ('YourDatabaseName') WITH TABLERESULTS
找dbi_dbccLastKnownGood
2
DBCC TRACEON (3604);
GO
-- page 9 is the boot page
DBCC PAGE (dbname, 1, 9, 3);
GO
你需要去尋找 dbi_dbccLastKnownGood領域。那是DBCC CHECKDB上次運行 時沒有發現任何損壞的 。
2
試試這個檢查所有DB對SQL 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
0
上面的查詢會產生不正確的結果因爲#temp表在光標內未被截斷
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
相關問題
- 1. 啓用Stretch的數據庫上的DBCC CHECKDB
- 2. 是否可以在單個分區上運行DBCC CHECKDB?
- 3. 我可以從.NET運行DBCC CHECKDB嗎?
- 4. 做DBCC CHECKDB
- 5. Powershell的Powershell DBCC CheckDB
- 6. 如何查找上次在Sybase ASE上運行DBCC Checkstorage的時間?
- 7. 自動化DBCC CHECKDB
- 8. 修復DBCC CHECKDB錯誤
- 9. 當數據庫存在時,TSql dbcc檢查命令失敗
- 10. 在實時數據庫上運行mysqldump
- 11. 如何在運行時知道數據庫大小
- 12. 如何知道Pentaho Scheduler的下一次運行時間?
- 13. Azure SQL數據倉庫:在數據庫<id>中找不到分區ID <id>的商品。元數據不一致。運行DBCC CHECKDB
- 14. DBCC CHECKIDENT - 架構知道嗎?
- 15. 如何知道網頁上次更新的時間?
- 16. 我如何找到上次更新PostgreSQL數據庫的時間?
- 17. 在長時間運行的EMR集羣上設置AWS數據管道
- 18. 在運行時,我怎麼知道我是否在WinXP +上? win32
- 19. 在幾個數據庫上運行相同的複製腳本
- 20. 在所有表上的特定數據庫上運行DTA
- 21. 如何知道我的程序上次運行時是否崩潰?
- 22. 同時在多個數據庫上運行SQL狀態?
- 23. 無法爲對象分配空間「dbo.SORT臨時存儲運行DBCC上DBREINDEX
- 24. 影響在數據庫上運行SQL所用時間的因素是什麼?
- 25. 在運行時知道類的大小
- 26. 在管道輸出變量上運行腳本次數
- 27. 分析查詢在MySQL數據庫上的執行時間?
- 28. Uable在postgre數據庫上運行heroku上的遷移
- 29. 配置Hibernate使用數據庫,其名稱在運行時不知道
- 30. 數據庫上次更新?