使用Windows PowerShell脚本化订阅的问题

问题描述

我正在尝试使用Microsoft.SqlServer.Rmo.dll通过PowerShell编写复制对象的脚本。复制类型与推送订阅是事务性的。

我已经可以编写出版物,文章,PAL脚本,但是不能编写发布者侧的订阅脚本。

参考

[reflection.assembly]::LoadFrom("c:\\sql\\Microsoft.SqlServer.Rmo.dll") | out-null

ScriptOptions

$scriptargs =[Microsoft.SqlServer.Replication.ScriptOptions]::Creation `
-bor  [Microsoft.SqlServer.Replication.ScriptOptions]::IncludeCreateLogreaderAgent `
-bor  [Microsoft.SqlServer.Replication.ScriptOptions]::IncludeCreateMergeAgent `
-bor  [Microsoft.SqlServer.Replication.ScriptOptions]::IncludeCreateQueuereaderAgent `
-bor  [Microsoft.SqlServer.Replication.ScriptOptions]::IncludePublicationAccesses `
-bor  [Microsoft.SqlServer.Replication.ScriptOptions]::IncludeArticles `
-bor  [Microsoft.SqlServer.Replication.ScriptOptions]::IncludePublisherSideSubscriptions`   #one way tried to get the subscriptions
-bor  [Microsoft.SqlServer.Replication.ScriptOptions]::IncludeGo

foreach($replicateddatabase in $repsvr.ReplicationDatabases)
{
    if ($replicateddatabase.TransPublications.Count -gt 0)
    {
        foreach($tranpub in $replicateddatabase.TransPublications)
        {
            **[string] $myscript=$tranpub.script($scriptargs)**   #Errors out here
            writetofile $myscript $filename 0
        }
    }
}

enter image description here

我尝试的另一种方法是从Scriptoptions中排除IncludePublisherSideSubscriptions,并尝试使用以下语句直接将其脚本化

foreach($replicateddatabase in $repsvr.ReplicationDatabases)
{
    if ($replicateddatabase.TransPublications.Count -gt 0)
    {
        foreach($tranpub in $replicateddatabase.TransPublications)
        { 
            [string] $subs=$tranpub.TransSubscriptions.script($scriptargs)   #another way but same error
            writetofile $subs $filename 0
        }
    }
}

我尝试的第三种方式:

$repsvr.ReplicationDatabases.TransPublications.TransSubscriptions.Script($scriptargs)

总的来说,我发现以下link很有帮助,因为我的代码主要基于但只是停留在发布方订阅的脚本之外。感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)