使用 SQL 将所有文章添加到发布

Adding all articles to a publication using TSQL

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

我最初的想法是返回所有表名(使用系统查询),然后使用循环将它们提供给 sp_addarticle。我想知道是否有更聪明的方法,例如我可以将 'all' 分配给它的内置变量?

我就是这样做的

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