无法创建" Microsoft.SqlServer.Replication.ReplicationServer"宾语

时间:2014-03-31 15:13:48

标签: powershell sql-server-2008-r2 powershell-v2.0 powershell-ise powergui

编辑1:我能够通过Windows PowerShell ISE成功创建复制对象,但不能创建PowerGUI。该脚本用于在我的32位机器上成功运行,现在我64上的错误。问题看起来是一个环境问题。

我尝试使用PowerShell中的SQL身份验证连接到我的分发SQL Server实例,并创建一个复制对象。我无法使用Windows身份验证测试连接。

以下代码源自http://sqlpsx.codeplex.com/和加载的模块Repl(Repl.psm1)。

$sqlServer  = "SQL Server"
$Username   = "UserName" 
$Password   = "Password"

[Microsoft.SqlServer.Management.Common.ServerConnection]$con = Get-SqlConnection $sqlServer $username $password

Write-host "Get-ReplServer $($con.ServerInstance)"

$repl = new-object ("Microsoft.SqlServer.Replication.ReplicationServer") $con

或更具体地说

new-object ("Microsoft.SqlServer.Replication.ReplicationServer") $con

生成以下错误

New-Object : Cannot find an overload for "ReplicationServer" and the argument count: "1".
At line:25 char:19
+ $repl = new-object <<<<  ("Microsoft.SqlServer.Replication.ReplicationServer") $con
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand 

服务器连接代码

[Microsoft.SqlServer.Management.Common.ServerConnection]$con = Get-SqlConnection $sqlServer $username $password

成功完成并返回正确的服务器信息

SQL Server版本是

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) 
    Jun 28 2012 08:36:30 
    Copyright (c) Microsoft Corporation
    Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: ) (Hypervisor)

和PowerShell版本

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1 

我的问题似乎与Issue with connecting to ReplicationServer with sql authentication相同。然而,查德米勒的解决方案并没有解决我的问题,即

$con.Connect()
$repl = new-object ("Microsoft.SqlServer.Replication.ReplicationServer") $con

任何理想都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

尝试一下,看看它是否适合你:

[Microsoft.SqlServer.Replication.ReplicationServer] $repl = New-Object Microsoft.SqlServer.Replication.ReplicationServer($Con)

编辑:如果无法连接到听起来像是潜在问题的服务器。你可以$con.serverinstance.connect()没有错误吗?也许首先连接然后尝试创建复制服务器?

或者可能在没有连接的情况下创建ReplicationServer对象,并在事实ala:

之后分配连接
[Microsoft.SqlServer.Replication.ReplicationServer] $repl = New-Object Microsoft.SqlServer.Replication.ReplicationServer()
$repl.connectioncontext = $con
相关问题