La creazione dell'Initial Snapshot potrebbe essere molto lunga e consumare molte risorse che in questo modo risparmiamo.
Vediamo un esempio per la creazione di una sottoscrizione da un backup....
Voglio creare una sottoscrizione del Db DBPublisher del server Win12Node1 sul database DBSubscriber del server Win12Node2.
Su Win12node1 è già configurata la pubblicazione del DBPublisher denominata TestPub.
Step 1
Sul Publisher la prima cosa da fare è verificare se la pubblicazione in essere accetta sottoscrizioni inizializzate da backup.
Per verificare basta eseguire la sp_helppublication e controllare il setting allow_initialize_from_backup.
Questo setting può assumere 2 valori:
1. 0 non abilitato
2. 1 abilitato.
--Da eseguire sul publisher Exec sp_helppublication 'TestPub' GO
Nel mio caso devo abilitare l'inizializzazione da Backup, quindi devo eseguire la sp_changepublication.
--Da eseguire sul publisher Exec sp_changepublication @publication = 'TestPub' , @property = 'allow_initialize_from_backup' , @value = 'true' GO
Step 2
Eseguire il Restore del DB sul server sottoscrittore, nel mio caso lo chiamerò DBSubScriber partendo dall'ultimo set di backup disponibile.
N.B. Se l'ultimo backup disponibile è più vecchio del periodo di Retention del distributor allora sarà necessario creare un nuovo set di backup.
--Da eseguire sul subscriber USE [master] Go Restore Database [DBSubScriber] From Disk = '\\MyFileServer\SharedFolder\init.bak' GO
Step 3
Creiamo la sottoscrizione dal server publisher utilizzando la sp_addsubscription e la sp_addpushsubscription_agent.
La sp_addsubscription deve essere eseguita specificando:
@subscription_type = 'Push'
@sync_type = 'initialize with backup'
@backupdevicetype = 'disk'
@backupdevicename = MyPath
Dove MyPath è il path al backup differenziale appena creato che verrà utilizzato per allineare i dati.
La sp_addpushsubscription_agent deve essere eseguita specificando:
@job_login = MyLogin
@job_password = MyPassword
Dove MyLogin e MyPassword sono Username e Pwd che l'agent utilizzerà per le repliche.
--Da eseguire sul publisher use DBPublisher GO exec sp_addsubscription @publication = N'TestPub' , @subscriber = N'WIN12NODE2' , @destination_db = N'DBSubScriber' , @subscription_type = N'Push' , @sync_type = N'initialize with backup' , @backupdevicetype = N'disk' , @backupdevicename = N'\\MyFileServer\SharedFolder\init.bak' , @article = N'all' , @update_mode = N'read only' , @subscriber_type = 0 exec sp_addpushsubscription_agent @publication = N'TestPub' , @subscriber = N'WIN12NODE2' , @subscriber_db = N'DBSubScriber' , @job_login = MyLogin , @job_password = MyPassword , @subscriber_security_mode = 1 , @frequency_type = 64 , @frequency_interval = 0 , @frequency_relative_interval = 0 , @frequency_recurrence_factor = 0 , @frequency_subday = 0 , @frequency_subday_interval = 0 , @active_start_time_of_day = 0 , @active_end_time_of_day = 235959 , @active_start_date = 20130919 , @active_end_date = 99991231 , @enabled_for_syncmgr = N'False' , @dts_package_location = N'Distributor' GO
Se abbiamo fatto tutto correttamente la replica è già operativa e tutte le transazioni applicate al DBPublisher saranno replicate anche sul DBSubscriber.
Per essere certi che tutto funzioni correttamente possiamo utilizzare il tool di monitoring della replica per risolvere eventuali problemi.
Ciao
Luca
Nessun commento:
Posta un commento