[英]Unable to use SQLPS CmdLet Backup-SQLDatabase with -InputObject parameter
[英]Timeout issue in Backup-SQLDatabase cmdlet
我正在嘗試使用以下語句使用“Backup-SQLDatabase”cmdlet備份大型數據庫,但是我在10分鍾后收到超時錯誤。
{Backup-SqlDatabase -ServerInstance $Server -Database $DatabaseName -BackupFile $BackUpFile -CompressionOption On -ConnectionTimeout 0 -Initialize -Verbose -ea Stop}
這是600秒執行后的錯誤:
VERBOSE:60%已處理。 VERBOSE:備份或恢復已中止。 等待操作超時+ CategoryInfo:InvalidOperation:(:) [Backup-SqlDatabase],Win3 2Exception + FullyQualifiedErrorId:ExecutionFailed,Microsoft.SqlServer.Management.P owerShell.BackupSqlDatabaseCommand + PSComputerName:localhost
我抬頭看着互聯網,發現這里有一個錯誤。 但是,SQL Server 2012(11.0.339)中仍存在此問題。
我也嘗試將“遠程查詢超時”重新配置為0,如此處所示 ,但問題仍然存在。
這實際上是非常奇怪的問題。 PowerShell用於自動化,腳本運行需要10分鍾以上。 “Backup-SQLDatabase”應該考慮到這一點。
請提供一種解決方法,以便在使用此cmdlet時解決此問題。 否則,我將使用SMO類或基本T-SQL重新編寫代碼。
我對此做了一些研究,並圍繞以下解決方法:
$serverConn = new-object ("Microsoft.SqlServer.Management.Smo.Server") $server $serverConn.ConnectionContext.StatementTimeout = 0
Backup-SqlDatabase -InputObject $serverConn -Database abc -BackupFile "L:\123\abc.bak"
當我們將服務器名稱作為字符串傳遞時,它會嘗試創建自己的連接,並且我們沒有將QueryTimeout從600更改為0的選項。
但是,我們可以創建一個SMO.Server對象,並在設置所需的屬性后使用它。
希望能幫助到你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.