Criei uma publicação no meu servidor. Eu tive que usar essa opção especial para poder inicializar a replicação de um backup:
exec sp_addpublication
...
@allow_initialize_from_backup = N'true',
...
Então, fiz um backup do meu banco de dados:
BACKUP DATABASE [MyDatabase]
TO URL = 'https://fakestorageaccount.blob.core.windows.net/mycontainer/MyDatabase.bak'
WITH CREDENTIAL = 'mycredential', COMPRESSION, STATS = 5;
GO
E restaurado a partir dele no servidor de destino:
RESTORE DATABASE [MyDatabase]
FROM URL = 'https://fakestorageaccount.blob.core.windows.net/mycontainer/MyDatabase.bak'
WITH CREDENTIAL = 'mycredential'
,MOVE 'MyDatabase' to 'SomePath\Data\MyDatabase.mdf'
,MOVE 'MyDatabase_log' to 'SomePath\Log\MyDatabase.ldf'
,STATS = 5
GO
Agora estou pronto para criar o assinante. O problema que estou tendo é que não sei quais opções fornecer ao procedimento sp_addsubscription .
Eu posso passar pelo processo usando um disco rígido comum em vez de um URL. Eu podia ver os dados sendo replicados da origem para o destino. Faço backup em disco, copio o backup para o servidor de destino, restauro e inicializo a partir do backup usando este comando:
exec sp_addsubscription
@publication = N'MyPub',
@subscriber = N'MyTargetServer',
@destination_db = N'MyDatabase',
@subscription_type = N'Push',
@sync_type = N'initialize with backup',
@article = N'all',
@update_mode = N'read only',
@subscriber_type = 0,
@backupdevicetype = 'disk',
@backupdevicename = 'D:\Backups\MyDatabase.bak'
Como faço para ajustar essas opções para inicializar a replicação de uma URL (que no meu caso é um contêiner de armazenamento de BLOBs do Azure para o qual ambos os servidores têm as credenciais)?
Essa é uma pergunta muito boa, mas no momento não há suporte para inicializar uma assinatura de um backup armazenado no armazenamento de Blobs do Windows Azure. Acredito que esse seria um recurso muito legal para replicação e tenho certeza que o pessoal da Microsoft concordaria. Sugiro propor esta ideia no UserVoice .
No entanto, como você já restaurou o backup e o esquema e os dados já estão em vigor no assinante, tente executar sp_addsubscription com o @sync_type de 'somente suporte à replicação' e veja se isso atende às suas necessidades.
Mais detalhes para inicializar uma assinatura manualmente podem ser encontrados em Como: Inicializar uma assinatura manualmente .