just adding my 2 cents.
today I removed some articles from a publication for a unrelated reason.
then when I added them back I created a mess because I had not checked whether the subscriber ALREADY EXISTED, before I created them.
so I am posting here the script I have used:
-- to verify whether the subscriber already exists
USE mydatabase
GO
--========================================================================
-- GET A LIST OF SUBSCRIBERS
-- if the subscribers are already there
-- NO NEED TO CREATE THEM
-- Marcelo Miorelli
-- 17-nov-2014
--========================================================================
select
db_name() PublisherDB
, sp.name as PublisherName
, sa.name as TableName
, UPPER(srv.srvname) as SubscriberServerName
from dbo.syspublications sp
join dbo.sysarticles sa on sp.pubid = sa.pubid
join dbo.syssubscriptions s on sa.artid = s.artid
join master.dbo.sysservers srv on s.srvid = srv.srvid
EXEC sp_addarticle @publication = N'mydatabase',
@article = N'InfoscoreAddressValidation',
@source_table=N'InfoscoreAddressValidation'
GO
EXEC sp_addarticle @publication = N'mydatabase',
@article = N'InfoscoreCreditScoreCheck',
@source_table=N'InfoscoreCreditScoreCheck'
GO
EXEC sp_addarticle @publication = N'mydatabase',
@article = N'OpenInvoiceAddress',
@source_table=N'OpenInvoiceAddress'
GO
--========================================================================
-- Only add the subscribers if they don't exist
--========================================================================
--EXEC sp_addsubscription
-- @publication = N'mydatabase',
-- @article = N'OpenInvoiceAddress',
-- @subscriber = N'my_subscriber_01',
-- @destination_db = N'mydatabase'
--GO
-- EXEC sp_addsubscription
-- @publication = N'mydatabase',
-- @article = N'OpenInvoiceAddress',
-- @subscriber = N'SQLmy_subscriber_02',
-- @destination_db = N'mydatabase'
--GO
EXEC sp_refreshsubscriptions @publication = N'mydatabase'
GO
-- Start the Snapshot Agent job.
EXEC sp_startpublication_snapshot @publication = N'mydatabase'
go