ここで見つかった同じタイムアウトの問題に遭遇し、回避策を試してみると、次のエラーが発生することがわかりました。
Backup-SqlDatabase : Cannot bind parameter 'InputObject'. Cannot convert the "[instDW_QA0]" value of type "Microsoft.SqlServer.Management.Smo.Server" to type "Microsoft.SqlServer.Management.Smo.Server".
At line:21 char:50
+ Backup-SQLDatabase -Database msdb -InputObject $server -BackupAction Database ...
+ ~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Backup-SqlDatabase], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.SqlServer.Management.PowerShell.BackupSqlDatabaseCommand
簡単なスクリプトを実行する場合:
$ServerName = "instDW_QA0"
$server = New-Object ("Microsoft.SqlServer.Management.Smo.Server") $ServerName
$server.ConnectionContext.StatementTimeout = 0
$db = $server.Databases["msdb"]
Backup-SQLDatabase -Database msdb -InputObject $server -BackupAction Database -CompressionOption ON -CopyOnly -Initialize
これは、私が試した 3 台の Win7 マシンで発生しますが、スクリプトは私が試したすべてのサーバー (Win2012) で正常に動作します。3 台の Win7 マシンには、さまざまなソフトウェアがインストールされています。1 つは SQL 2008R2、2012、および 2014 がインストールされており、もう 1 つは 2008R2 および 2012 のみがインストールされています。1 つは PS 2.0 がインストールされ、他の 2 つは PS 3.0 がインストールされていました。サーバーは再び混在しています。すべてに PS 3.0 がインストールされていますが、SQL2008R2 と SQL2012 がインストールされているものもあれば、SQL2012 のみがインストールされているものもあれば、SQL2014 のみがインストールされているものもありましたが、すべて機能しました。唯一の一貫した違いは、OS、Win7 と Win2012 の違いですが、それが潜在的な原因として私にはあまり意味がありません。
エラー自体は紛らわしく、参照する 2 つの型は同一です。スクリプトを実行する前に、特定の SMO アセンブリ バージョン (11 および 12) をロードしようとしましたが、役に立たないようです。
何か案は?前もって感謝します。