使用.NET复制管理对象RMO的Powershell问题

时间:2011-09-16 19:41:51

标签: .net sql-server powershell replication

我正在尝试自动重新初始化多个复制 从分发服务器匿名提取的订阅。我是 在Powershell开展这个项目,我相信我有一个 64位与.NET复制管理对象的32位问题 (RMO)。我正在加载RMO和复制程序集。 RMO 程序集加载MSIL版本,但仅复制程序集 可在X86或X64中使用。

我遇到的问题是 Microsoft.SqlServer.Replication.TransSynchronizationAgent类不是 我在64位机器上运行脚本时可用。当我运行它时 32位机器它工作正常。

当我尝试在64位机器上创建该类的新对象时,我 得到一个没有注册Class的错误。我看着了 注册表和类已在64位和64位注册到GAC 32位(Wow6432Node)位置。

以前有没有人遇到过这个问题?关于修复的任何想法?

谢谢你, Rickey

1 个答案:

答案 0 :(得分:0)

我最近遇到了与Powershell类似的x64 vs x32位问题。它与Windows文件系统重定向有关(更多信息请参见:http://practicaladmin.wordpress.com/2010/07/16/powershell-x64-and-filesystem-redirection/

如果您尝试在32位内存空间(32位PID或以32位模式/等运行的PID)中实例化64位Powershell实例,Windows会尝试“做正确的事”并执行32位版本的Powershell(在syswow64文件夹 - 是的,32位PowerShell存在于syswow64文件夹中)。

尝试使用以下路径在64位盒子上显式运行64位版本的Powershell.exe:

%windir%\sysnative\WindowsPowerShell\v1.0\powershell.exe