4

我能夠使用SSMS配置事務複製,並且它可以正常工作。但我想用腳本配置它,以便從我的c#/ vb應用程序中使用它。使用腳本的事務複製

有沒有辦法做到這一點?

回答

2

如果使用SSMS完成事務複製的所有步驟,那麼使用腳本就不復雜。

只需仔細觀察,在配置分發,發佈和訂閱時,SSMS爲您提供了在每一步中生成腳本的選項。

您可以使用該生成的腳本。

但唯一不同的是當你添加文章發佈。您可以使用下面的代碼添加文章

declare @name nvarchar(50) 
declare curname cursor for 
select name from sysobjects where type = 'U' 
open curname 
fetch next from curname into @name 
while @@FETCH_STATUS = 0 
begin 
if exists(select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name AND TABLE_SCHEMA = 'dbo') 
begin 
exec sp_addarticle 
@publication = N'publication_name', @article = @name, @source_owner = N'dbo', 
@source_object = @name, @type = N'logbased', @description = null, @creation_script = null, 
@pre_creation_cmd = N'drop', @schema_option = 0x000000000803509F, 
@identityrangemanagementoption = N'manual', @destination_table = @name, 
@destination_owner = N'dbo', @vertical_partition = N'' 
end 
fetch next from curname into @name 
end 
close curname 
deallocate curname 

或者,你可以看到https://hasibarnab.wordpress.com/category/sql-server/replication/

+0

[sysname](http://technet.microsoft.com/en-us/library/ms191240%28v=sql.105%29.aspx)是@name的更好類型。您的腳本不適用於超過50個字符的名稱。 sysname是對象名稱的內部類型,與nvarchar(128)等效。 –

2
DECLARE @returncode int 
EXEC @returncode = xp_cmdshell 'dtexec /f "C:\thePackage.dtsx"' 
2

退房sp_addpublication,sp_addarticle的,並且在sp_addsubscription BOL。