Backup-SQLDatabase cmdlet中的超时问题

时间:2013-10-09 14:55:34

标签: sql-server powershell backup smo

我正在尝试使用以下语句使用“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

我抬头看着互联网,发现了一个填充错误here。 但是,SQL Server 2012(11.0.339)中仍存在此问题。

我也尝试将“远程查询超时”重新配置为0给定here,但问题仍然存在。

这实际上是非常奇怪的问题。 PowerShell用于自动化,脚本运行需要10分钟以上。 “Backup-SQLDatabase”应该考虑过这个。

请使用此cmdlet建议我可以解决此问题的解决方法。 否则,我将使用SMO类或基本T-SQL重新编写代码。

1 个答案:

答案 0 :(得分:10)

我对此进行了一些研究,并提出了以下解决方法:

$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对象,并在设置所需的属性后使用它。

希望它有所帮助!