首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用带有CmdLet参数的SQLPS -InputObject备份-SQLDatabase

无法使用带有CmdLet参数的SQLPS -InputObject备份-SQLDatabase
EN

Stack Overflow用户
提问于 2015-04-29 12:59:55
回答 1查看 1.2K关注 0票数 2

在遇到相同的超时问题找到这里并尝试解决方法后,我发现我得到了错误:

代码语言:javascript
复制
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

运行简单脚本时:

代码语言:javascript
复制
$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机器混合了安装的软件。其中一个安装了SQL2008R2、2012年和2014年,另一个只有2008R2和2012年。其中一个安装了PS2.0,另两个安装了PS3.0。服务器又一次混合在一起。它们都安装了PS3.0,但也有一些安装了SQL2008R2和SQL2012,有些只有SQL2012,而我试过的一个只有SQL2014,但它们都能工作。唯一一致的区别是操作系统,Win7和Win2012,但这对我来说并不是一个潜在的原因。

错误本身是令人困惑的,它引用的两种类型是相同的。在运行脚本之前,我尝试过加载特定的SMO程序集版本(11和12),这似乎没有帮助。

有什么想法吗?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-29 15:16:04

无意中,我猜想对象可能是使用备份-SQLDatabase使用的同一个库的不同版本创建的,这就是为什么有些服务器抱怨而另一些服务器工作正常的原因。

由于您只是将此方法用作Backup-SqlDatabase超时问题的解决方法,因此了解Server 2012 SP1的累积更新包8中的Restore-SQLDatabase是固定的可能是有用的。我认为这也会影响到Backup-SQLDatabase。如果您无法修复使用Backup-SQLDatabase获得的错误,这可能会解决超时问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29944525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档