遇到与此处发现的相同超时问题并尝试解决方法后,我发现我收到了错误:
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),但这似乎没有帮助。
有任何想法吗?提前致谢。