也嘗試使用TRY CATCH塊,但它根本沒有捕捉到錯誤。
BEGIN TRY
DBCC CHECKDB ([50Ways]) WITH NO_INFOMSGS,PHYSICAL_ONLY
END TRY
BEGIN CATCH
SELECT
ERROR_MESSAGE() AS [錯誤資訊] 。
,ERROR_LINE() AS ErrorLine()
,ERROR_NUMBER() AS [Error Number]。
,ERROR_SEVERITY() AS [Error Severity].
,ERROR_STATE() AS [錯誤狀態] 。
END CATCH
uj5u.com熱心網友回復:
這些只是標準的例外錯誤,你可以使用CommonParameter -ErrorVariable或通過使用自動變數$Error來捕獲。
下面是一個使用ErrorVariable的例子。 我們告訴Invoke-SqlCmd在一個名為'dbCheckErrors'的變數中存盤任何遇到的錯誤。 我們隨后檢查這個變數$dbCheckErrors是否包含任何ErrorRecords,如果是的話,我們將所有的Exception資訊收集到我們的$errorCollection陣列中,以便以后訪問。 一旦完成了資料庫檢查,我們就可以查看資訊,將資訊保存到檔案中,或者兩者都保存,或者其他什么。
# 創建一個empty array to Later capture error message in our loop
$errorCollection = @()
foreach ($DB in $Databases)
{
Write-Output "Processing $($DB.Database)..."
呼叫-SqlCmd -ErrorVariable 'dbCheckErrors'/span> - ServerInstance '(localdb)MSSQLLocalDB' -Database master -Query "DBCC CHECKDB ([$($DB. 資料庫)]) WITH NO_INFOMSGS,PHYSICAL_ONLY;" -OutputSqlErrors:$true -Verbose
如果($dbCheckErrors) {
用 任何錯誤做一些事情。
或者只是添加例外資訊到一個集合來處理
$errorCollection = $dbCheckErrors.Exception.Message
}
}
# 查看例外資訊
$errorCollection
# 保存例外資訊 到 檔案
$errorCollection | Set-Content -Path ' .dbCheckErrors.log'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/307267.html
標籤:
上一篇:If陳述句-TSQL
下一篇:<p>我已經創建了具有以下結構的表。 <preclass="lang-sqls-code-block"><codeclass="hljsla

