0

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

我正尝试使用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 

任何理想将不胜感激。

回答

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 
+0

嗨,不幸的是我得到了同样的错误“新对象:无法找到过载‘ReplicationServer’和参数计数:“1”。“。我也尝试追加ServerInstance到$ con ie $ con.ServerInstance,我怀疑这是徒劳的,但返回一个稍微不同的错误信息都是一样的“New-Object:带有”1“参数的调用”.ctor“的异常:”Failed连接到服务器。“” – Pixelated

+0

$ Con.serverinstance.connect()错误与方法调用失败,因为[System.String]不包含名为'connect'的方法,并在添加额外的$ con后提供第二个建议我原来的错误。有趣的是,每当我尝试创建任何复制对象,即New-Object“Microsoft.SqlServer.Replication.ReplicationServer”,“Microsoft.SqlServer.Replication.ReplicationMonitor”,但服务器连接对象new-object(“Microsoft”)时,我都会得到相同的错误。SqlServer.Management.Common.ServerConnection“)不 – Pixelated