使用 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
我知道您可以使用 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