Практическая задача- добавить несколько таблиц в подписку

добавлено: 09 сен 15
понравилось:0
просмотров: 1204
комментов: 0

теги:

Автор: Дмитрий Горчилин

Для начала скрипт проверяет есть ли там подписка и какие таблицы там ходят. После создает заготовки скриптов для подписки. Репликейшен дефинишены нужно создать заранее, потом вписать их в полученные заготовки артиклей


--Универсальный генератор публикаций имени Горчилина. Нужно указать имя базы откуда и куда, после нарисовать нужные артикли

select * into #rs_databases from rs_databases
select * into #rs_sites from rs_sites

--declare @db_1 varchar (30),@db_2 varchar (30),@pubnam varchar(30)
--select @db_1 ='%1'
--select @db_2 ='%2'

select @pubnam= upper(rs_databases.dsname)+lower(rs_databases.dbname) +'_'+upper(#rs_databases.dsname)+lower(#rs_databases.dbname)
from rs_databases,#rs_databases where
rtrim(rs_databases.dsname)+'.'+rtrim(rs_databases.dbname) =@db_1 and
#rs_databases.dsname+'.'+#rs_databases.dbname =@db_2

select @db_1= rs_databases.dsname+'.'+rs_databases.dbname from rs_databases where rs_databases.dsname+'.'+rs_databases.dbname =@db_1
select @db_2= rs_databases.dsname+'.'+rs_databases.dbname from rs_databases where rs_databases.dsname+'.'+rs_databases.dbname =@db_2

--select @pubnam,@db_1,@db_2


select
'-- SUB: '+subname
from rs_subscriptions,rs_databases,#rs_databases where
rs_databases.dsname+'.'+rs_databases.dbname =@db_1 and
#rs_databases.dsname+'.'+#rs_databases.dbname =@db_2 and
rs_subscriptions.pdbid=rs_databases.dbid and
rs_subscriptions.dbid=#rs_databases.dbid
group by subname

select
--subname subid type objid dbid pdbid requestdate pownerid rownerid status recovering error_flag materializing dematerializing primary_sre replicate_sre materialization_try method generation parentid security mechanism prsid objname objid dbid objtype attributes ownertype crdate parentid ownerid rowtype phys_tablename deliver_as_name phys_objowner repl_objowner has_baserepdef minvers dsname dbname dbid dist_status src_status attributes errorclassid funcclassid prsid rowtype sorto_status ltype ptype ldbid enable_seq dsname dbname dbid dist_status src_status attributes errorclassid funcclassid prsid rowtype sorto_status ltype ptype ldbid enable_seq articlename articleid type primaryname primaryowner objid pubid requestdate
'-- TABLES: '+phys_tablename+char(9)+objname+char(9)+subname
from rs_subscriptions,rs_objects,rs_databases,#rs_databases,rs_articles where
rs_databases.dsname+'.'+rs_databases.dbname =@db_1 and
#rs_databases.dsname+'.'+#rs_databases.dbname =@db_2 and
--rs_subscriptions.objid=rs_objects.objid and
rs_subscriptions.pdbid=rs_databases.dbid and
rs_subscriptions.dbid=#rs_databases.dbid and
rs_articles.articleid=rs_subscriptions.objid and
rs_articles.objid=rs_objects.objid
order by phys_tablename

select '-- ['+rs_sites.name+'] '+@db_1+' ==> ['+#rs_sites.name+'] '+@db_2+ ' {'+@pubnam+'}'
from rs_databases,#rs_databases,rs_sites,#rs_sites where
rs_databases.dsname+'.'+rs_databases.dbname =@db_1 and
#rs_databases.dsname+'.'+#rs_databases.dbname =@db_2 and
rs_databases.prsid=rs_sites.id and
#rs_databases.prsid=#rs_sites.id


select 'create publication "'+@pubnam+'" with primary at '+@db_1,

char(10)+'create article "<<ARTICLE>>" for "'+@pubnam+'" with primary at '+@db_1+' with replication definition "<<REP DEF>>"',

char(10)+'validate publication "'+@pubnam+'" with primary at '+@db_1,

char(10)+'define subscription "'+@pubnam+'" for publication "'+@pubnam+'" with primary at '+@db_1+' with replicate at '+@db_2,

char(10)+'activate subscription "'+@pubnam+'" for publication "'+@pubnam+'" with primary at '+@db_1+' with replicate at '+@db_2

drop table #rs_databases
drop table #rs_sites

go

Комментарии




Необходимо войти на сайт, чтобы оставлять комментарии