使用TSQL将所有文章添加到出版物

时间:2017-10-23 16:42:47

标签: sql-server tsql stored-procedures replication

我知道您可以使用SSMS中的GUI轻松完成此操作。但是,有没有办法用TSQL包含所有文章而不是使用sp_addarticle一个一个地做它们?

我最初的想法是返回所有表名(使用sys查询),然后使用循环将它们提供给sp_addarticle。我想知道是否有一种更聪明的方式,例如我可以为其分配“全部”的内置变量?

enter image description here

1 个答案:

答案 0 :(得分:3)

我就这样做了

USE [DatabaseName]
DECLARE @name sysname
DECLARE @getid CURSOR


SET @getid = CURSOR FOR

-- Select all tables name
SELECT [name]
FROM [DataBaseName].[sys].[tables] 
WHERE is_ms_shipped=0

-- While loop
OPEN @getid
FETCH NEXT
FROM @getid INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
-- add article 
exec sp_addarticle  @publication =  @publication
    ,@article =  @name
    ,@source_object = @name
    ,@del_cmd = 'NONE' 

FETCH NEXT
FROM @getid INTO @name
END

CLOSE @getid
DEALLOCATE @getid