我知道您可以使用SSMS中的GUI轻松完成此操作。但是,有没有办法用TSQL包含所有文章而不是使用sp_addarticle一个一个地做它们?
我最初的想法是返回所有表名(使用sys查询),然后使用循环将它们提供给sp_addarticle。我想知道是否有一种更聪明的方式,例如我可以为其分配“全部”的内置变量?
答案 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