2

ここで見つかった同じタイムアウトの問題に遭遇し、回避策を試してみると、次のエラーが発生することがわかりました。

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) をロードしようとしましたが、役に立たないようです。

何か案は?前もって感謝します。

4

1 に答える 1

0

Backup-SQLDatabase が使用する同じライブラリの異なるバージョンを使用してオブジェクトが作成されている可能性があるため、一部のサーバーは文句を言い、他のサーバーは正常に動作します。

この方法は のタイムアウトの問題の回避策としてのみ使用しているため、SQL Server 2012 SP1 の累積的な更新プログラム パッケージ 8 で同じ問題が修正されBackup-SqlDatabaseていることを知っておくと役立つ場合があります。にも影響すると思います。で発生しているエラーを修正できない場合、タイムアウトの問題を回避できる可能性があります。Restore-SQLDatabaseBackup-SQLDatabaseBackup-SQLDatabase

于 2015-04-29T15:16:04.917 に答える