簡體   English   中英

無法將SQLPS CmdLet Backup-SQLDatabase與-InputObject參數一起使用

[英]Unable to use SQLPS CmdLet Backup-SQLDatabase with -InputObject parameter

遇到此處發現的相同超時問題並嘗試解決方法后,發現出現錯誤:

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

在我嘗試過的三台Win7機器上都會發生這種情況,但是腳本在我嘗試過的所有服務器(Win2012)上都能正常運行。 三台Win7機器混合了已安裝的軟件。 一個安裝了SQL 2008R2、2012和2014,另一個安裝了2008R2和2012。一個安裝了PS 2.0,另外兩個安裝了PS 3.0。 服務器再次混合在一起。 所有人都安裝了PS 3.0,但有些人裝有SQL2008R2和SQL2012,有些人只有SQL2012,而我嘗試過的只有SQL2014,但它們都可以。 唯一一致的區別是操作系統,即Win7與Win2012,但這對我來說潛在的原因沒有多大意義。

錯誤本身令人困惑,它引用的兩種類型是相同的。 在運行腳本之前,我曾嘗試加載特定的SMO程序集版本(11和12),但這似乎無濟於事。

有任何想法嗎? 提前致謝。

副手,我猜想對象可能是使用Backup-SQLDatabase使用的同一庫的不同版本創建的,這就是為什么有些服務器抱怨而其他服務器工作得很好的原因。

由於您僅使用此方法作為Backup-SqlDatabase超時問題的解決方法,因此了解SQL Server 2012 SP1的累積更新包8中的Restore-SQLDatabase修復了相同的問題可能會很有用。 我認為這也會影響Backup-SQLDatabase 如果您無法解決通過Backup-SQLDatabase遇到的錯誤,則可以解決超時問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM