Kurz: Konfigurace transakční replikace mezi spravovanou instancí Azure SQL a SQL Serverem

Platí pro:Azure SQL Managed Instance

Transakční replikace umožňuje replikovat data z jedné databáze do jiné hostované na SQL Serveru nebo ve spravované instanci Azure SQL. Spravovaná instance SQL může být vydavatelem, distributorem nebo odběratelem v topologii replikace. Dostupné konfigurace najdete v konfiguracích transakční replikace.

V tomto kurzu se naučíte:

  • Nakonfigurujte spravovanou instanci jako vydavatele replikace.
  • Nakonfigurujte spravovanou instanci jako distributora replikace.
  • Nakonfigurujte SQL Server jako odběratele.

Replication between a managed instance publisher, managed instance distributor, and SQL Server subscriber

Tento kurz je určený zkušeným cílovým skupinám a předpokládá, že uživatel je obeznámen s nasazením a připojením k spravovaným instancím i virtuálním počítačům s SQL Serverem v Rámci Azure.

Poznámka:

Tento článek popisuje použití transakční replikace ve službě Azure SQL Managed Instance. Nesouvisí se skupinami převzetí služeb při selhání, funkcí azure SQL Managed Instance, která umožňuje vytvářet úplné čitelné repliky jednotlivých instancí. Při konfiguraci transakční replikace se skupinami převzetí služeb při selhání existují další aspekty.

Požadavky

K dokončení kurzu se ujistěte, že máte následující požadavky:

  • Předplatné Azure
  • Zkušenosti s nasazením dvou spravovaných instancí ve stejné virtuální síti
  • Předplatitel SQL Serveru, ať už místně, nebo na virtuálním počítači Azure. V tomto kurzu se používá virtuální počítač Azure.
  • SQL Server Management Studio (SSMS) 18.0 nebo novější.
  • Nejnovější verze Azure PowerShellu
  • Porty 445 a 1433 umožňují provoz SQL na bráně Azure Firewall i bráně Windows Firewall.

Vytvoření skupiny prostředků

Pomocí následujícího fragmentu kódu PowerShellu vytvořte novou skupinu prostředků:

# set variables
$ResourceGroupName = "SQLMI-Repl"
$Location = "East US 2"

# Create a new resource group
New-AzResourceGroup -Name  $ResourceGroupName -Location $Location

Vytvoření dvou spravovaných instancí

Pomocí webu Azure Portal vytvořte dvě spravované instance v této nové skupině prostředků.

  • Název spravované instance vydavatele by měl být sql-mi-publisher (spolu s několika znaky pro náhodnost) a název virtuální sítě by měl být vnet-sql-mi-publisher.

  • Název spravované instance distributora by měl být sql-mi-distributor (spolu s několika znaky pro náhodnost) a měl by být ve stejné virtuální síti jako spravovaná instance vydavatele.

    Use the publisher VNet for the distributor

Další informace o vytvoření spravované instance najdete v tématu Vytvoření spravované instance na portálu.

Poznámka:

Kvůli jednoduchosti a vzhledem k tomu, že se jedná o nejběžnější konfiguraci, tento kurz navrhuje umístění spravované instance distributora do stejné virtuální sítě jako vydavatel. Je ale možné vytvořit distributora v samostatné virtuální síti. K tomu budete muset nakonfigurovat partnerský vztah virtuálních sítí mezi virtuálními sítěmi vydavatele a distributora a pak nakonfigurovat partnerský vztah virtuálních sítí mezi virtuálními sítěmi distributora a odběratele.

Vytvoření virtuálního počítače s SQL Serverem

Vytvořte virtuální počítač s SQL Serverem pomocí webu Azure Portal. Virtuální počítač s SQL Serverem by měl mít následující charakteristiky:

  • Název: sql-vm-sub
  • Obrázek: SQL Server 2016 nebo novější
  • Skupina prostředků: stejná jako spravovaná instance
  • Virtuální síť: sql-vm-sub-vnet

Další informace o nasazení virtuálního počítače s SQL Serverem do Azure najdete v tématu Rychlý start: Vytvoření virtuálního počítače s SQL Serverem.

Konfigurace partnerského vztahu virtuálních sítí

Nakonfigurujte VNet Peering tak, aby umožňoval komunikaci mezi virtuální sítí dvou spravovaných instancí a virtuální sítí SQL Serveru. K tomu použijte tento fragment kódu PowerShellu:

# Set variables
$SubscriptionId = '<SubscriptionID>'
$resourceGroup = 'SQLMI-Repl'
$pubvNet = 'sql-mi-publisher-vnet'
$subvNet = 'sql-vm-sub-vnet'
$pubsubName = 'Pub-to-Sub-Peer'
$subpubName = 'Sub-to-Pub-Peer'

$virtualNetwork1 = Get-AzVirtualNetwork `
  -ResourceGroupName $resourceGroup `
  -Name $pubvNet

 $virtualNetwork2 = Get-AzVirtualNetwork `
  -ResourceGroupName $resourceGroup `
  -Name $subvNet  

# Configure VNet peering from publisher to subscriber
Add-AzVirtualNetworkPeering `
  -Name $pubsubName `
  -VirtualNetwork $virtualNetwork1 `
  -RemoteVirtualNetworkId $virtualNetwork2.Id

# Configure VNet peering from subscriber to publisher
Add-AzVirtualNetworkPeering `
  -Name $subpubName `
  -VirtualNetwork $virtualNetwork2 `
  -RemoteVirtualNetworkId $virtualNetwork1.Id

# Check status of peering on the publisher VNet; should say connected
Get-AzVirtualNetworkPeering `
 -ResourceGroupName $resourceGroup `
 -VirtualNetworkName $pubvNet `
 | Select PeeringState

# Check status of peering on the subscriber VNet; should say connected
Get-AzVirtualNetworkPeering `
 -ResourceGroupName $resourceGroup `
 -VirtualNetworkName $subvNet `
 | Select PeeringState

Po navázání partnerského vztahu virtuálních sítí otestujte připojení spuštěním aplikace SQL Server Management Studio (SSMS) na SQL Serveru a připojením k oběma spravovaným instancím. Další informace o připojení ke spravované instanci pomocí SSMS najdete v tématu Použití aplikace SSMS pro připojení ke službě SQL Managed Instance.

Test connectivity to the managed instances

Vytvoření privátní zóny DNS

Privátní zóna DNS umožňuje směrování DNS mezi spravovanými instancemi a SQL Serverem.

Vytvoření privátní zóny DNS

  1. Přihlaste se k webu Azure Portal.

  2. Vyberte Vytvořit prostředek a vytvořte nový prostředek Azure.

  3. Vyhledejte private dns zone na Azure Marketplace.

  4. Zvolte prostředek zóny Privátní DNS publikovaný Microsoftem a pak vyberte Vytvořit a vytvořte zónu DNS.

  5. V rozevíracím seznamu zvolte předplatné a skupinu prostředků.

  6. Zadejte libovolný název zóny DNS, například repldns.com.

    Create private DNS zone

  7. Vyberte Zkontrolovat a vytvořit. Zkontrolujte parametry privátní zóny DNS a pak vyberte Vytvořit a vytvořte prostředek.

Vytvoření záznamu A

  1. Přejděte do nové zóny Privátní DNS a vyberte Přehled.

  2. Vyberte + Sada záznamů a vytvořte nový záznam A.

  3. Zadejte název virtuálního počítače s SQL Serverem a také privátní interní IP adresu.

    Configure an A record

  4. Vyberte OK a vytvořte záznam A.

  1. Přejděte do nové zóny Privátní DNS a vyberte propojení virtuální sítě.

  2. Vyberte + Přidat.

  3. Zadejte název odkazu, například Pub-link.

  4. V rozevíracím seznamu vyberte své předplatné a pak vyberte virtuální síť pro spravovanou instanci vydavatele.

  5. Zaškrtněte políčko vedle možnosti Povolit automatickou registraci.

    Create VNet link

  6. Pokud chcete propojit virtuální síť, vyberte OK .

  7. Opakováním těchto kroků přidejte odkaz pro virtuální síť odběratele s názvem, například Sub-link.

Vytvoření účtu úložiště Azure

Vytvořte účet úložiště Azure pro pracovní adresář a pak vytvořte sdílenou složku v rámci účtu úložiště.

Zkopírujte cestu ke sdílené složce ve formátu: \\storage-account-name.file.core.windows.net\file-share-name

Příklad: \\replstorage.file.core.windows.net\replshare

Zkopírujte přístupový klíč úložiště připojovací řetězec ve formátu:DefaultEndpointsProtocol=https;AccountName=<Storage-Account-Name>;AccountKey=****;EndpointSuffix=core.windows.net

Příklad: DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=dYT5hHZVu9aTgIteGfpYE64cfis0mpKTmmc8+EP53GxuRg6TCwe5eTYWrQM4AmQSG5lb3OBskhg==;EndpointSuffix=core.windows.net

Další informace najdete v tématu Správa přístupových klíčů účtu úložiště.

Vytvořit databázi

Vytvořte novou databázi ve spravované instanci vydavatele. Postup je následující:

  1. Spusťte SQL Server Management Studio na SQL Serveru.
  2. Připojení ke sql-mi-publisher spravované instanci.
  3. Otevřete okno Nový dotaz a spuštěním následujícího dotazu T-SQL vytvořte databázi.
-- Create the databases
USE [master]
GO

-- Drop database if it exists
IF EXISTS (SELECT * FROM sys.sysdatabases WHERE name = 'ReplTutorial')
BEGIN
    DROP DATABASE ReplTutorial
END
GO

-- Create new database
CREATE DATABASE [ReplTutorial]
GO

-- Create table
USE [ReplTutorial]
GO
CREATE TABLE ReplTest (
   ID INT NOT NULL PRIMARY KEY,
   c1 VARCHAR(100) NOT NULL,
   dt1 DATETIME NOT NULL DEFAULT getdate()
)
GO

-- Populate table with data
USE [ReplTutorial]
GO

INSERT INTO ReplTest (ID, c1) VALUES (6, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (2, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (3, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (4, 'pub')
INSERT INTO ReplTest (ID, c1) VALUES (5, 'pub')
GO
SELECT * FROM ReplTest
GO

Konfigurace distribuce

Po navázání připojení a máte ukázkovou databázi, můžete nakonfigurovat distribuci ve spravované sql-mi-distributor instanci. Postup je následující:

  1. Spusťte SQL Server Management Studio na SQL Serveru.

  2. Připojení ke sql-mi-distributor spravované instanci.

  3. Otevřete okno Nový dotaz a spuštěním následujícího kódu Transact-SQL nakonfigurujte distribuci ve spravované instanci distributora:

    EXEC sp_adddistributor @distributor = 'sql-mi-distributor.b6bf57.database.windows.net', @password = '<distributor_admin_password>'
    
    EXEC sp_adddistributiondb @database = N'distribution'
    
    EXEC sp_adddistpublisher @publisher = 'sql-mi-publisher.b6bf57.database.windows.net', -- primary publisher
         @distribution_db = N'distribution',
         @security_mode = 0,
         @login = N'azureuser',
         @password = N'<publisher_password>',
         @working_directory = N'\\replstorage.file.core.windows.net\replshare',
         @storage_connection_string = N'<storage_connection_string>'
         -- example: @storage_connection_string = N'DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=dYT5hHZVu9aTgIteGfpYE64cfis0mpKTmmc8+EP53GxuRg6TCwe5eTYWrQM4AmQSG5lb3OBskhg==;EndpointSuffix=core.windows.net'
    
    

    Poznámka:

    Nezapomeňte pro @working_directory parametr použít pouze zpětná lomítka (\). Použití lomítka (/) může způsobit chybu při připojování ke sdílené složce.

  4. Připojení ke sql-mi-publisher spravované instanci.

  5. Otevřete okno Nový dotaz a spuštěním následujícího kódu Transact-SQL zaregistrujte distributora v vydavateli:

    Use MASTER
    EXEC sys.sp_adddistributor @distributor = 'sql-mi-distributor.b6bf57.database.windows.net', @password = '<distributor_admin_password>'
    

Vytvoření publikace

Po nakonfigurování distribuce teď můžete publikaci vytvořit. Postup je následující:

  1. Spusťte SQL Server Management Studio na SQL Serveru.

  2. Připojení ke sql-mi-publisher spravované instanci.

  3. V Průzkumník objektů rozbalte uzel Replikace a klikněte pravým tlačítkem myši na složku Místní publikace. Vyberte Možnost Nová publikace....

  4. Výběrem možnosti Další přejdete na úvodní stránku.

  5. Na stránce Databáze publikace vyberte ReplTutorial databázi, kterou jste vytvořili dříve. Vyberte Další.

  6. Na stránce Typ publikace vyberte Transakční publikaci. Vyberte Další.

  7. Na stránce Články zaškrtněte políčko vedle tabulek. Vyberte Další.

  8. Na stránce Filtrovat řádky tabulky vyberte Další bez přidání filtrů.

  9. Na stránce Snímek agenta zaškrtněte políčko vedle možnosti Vytvořit snímek okamžitě a nechte snímek k dispozici pro inicializaci předplatných. Vyberte Další.

  10. Na stránce Zabezpečení agenta vyberte Nastavení zabezpečení.... Zadejte přihlašovací údaje k SQL Serveru, které se mají použít pro agenta snímků, a připojte se k vydavateli. Výběrem možnosti OK zavřete stránku Zabezpečení agenta snímků. Vyberte Další.

    Configure Snapshot Agent security

  11. Na stránce Akce průvodce zvolte vytvořit publikaci a (volitelně) zvolte vygenerovat soubor skriptu s postupem vytvoření publikace, pokud chcete tento skript uložit pro pozdější použití.

  12. Na stránce Dokončit průvodce pojmenujte publikaci ReplTest a výběrem možnosti Další vytvořte publikaci.

  13. Po vytvoření publikace aktualizujte uzel Replikace v Průzkumník objektů a rozbalte místní publikace, aby se nová publikace zobrazila.

Vytvoření odběru

Po vytvoření publikace můžete vytvořit předplatné. Postup je následující:

  1. Spusťte SQL Server Management Studio na SQL Serveru.
  2. Připojení ke sql-mi-publisher spravované instanci.
  3. Otevřete okno Nový dotaz a spuštěním následujícího kódu Transact-SQL přidejte předplatné a distribučního agenta. Jako součást názvu odběratele použijte DNS.
use [ReplTutorial]
exec sp_addsubscription
@publication = N'ReplTest',
@subscriber = N'sql-vm-sub.repldns.com', -- include the DNS configured in the private DNS zone
@destination_db = N'ReplSub',
@subscription_type = N'Push',
@sync_type = N'automatic',
@article = N'all',
@update_mode = N'read only',
@subscriber_type = 0

exec sp_addpushsubscription_agent
@publication = N'ReplTest',
@subscriber = N'sql-vm-sub.repldns.com', -- include the DNS configured in the private DNS zone
@subscriber_db = N'ReplSub',
@job_login = N'azureuser',
@job_password = '<Complex Password>',
@subscriber_security_mode = 0,
@subscriber_login = N'azureuser',
@subscriber_password = '<Complex Password>',
@dts_package_location = N'Distributor'
GO

Test replikace

Po nakonfigurování replikace ji můžete otestovat vložením nových položek na vydavatele a sledováním změn, které se rozšíří do odběratele.

Spuštěním následujícího fragmentu kódu T-SQL zobrazte řádky odběratele:

Use ReplSub
select * from dbo.ReplTest

Spuštěním následujícího fragmentu kódu T-SQL vložte do vydavatele další řádky a pak znovu zkontrolujte řádky odběratele.

Use ReplTutorial
INSERT INTO ReplTest (ID, c1) VALUES (15, 'pub')

Vyčištění prostředků

  1. Na webu Azure Portal přejděte ke své skupině prostředků.
  2. Vyberte spravované instance a pak vyberte Odstranit. Zadáním yes textového pole potvrďte, že chcete prostředek odstranit, a pak vyberte Odstranit. Dokončení tohoto procesu může nějakou dobu trvat na pozadí a dokud se nedokončí, nebudete moct odstranit virtuální cluster ani žádné další závislé prostředky. Sledujte odstranění na kartě Aktivita a ověřte, že vaše spravovaná instance byla odstraněna.
  3. Po odstranění spravované instance odstraňte virtuální cluster tak, že ho vyberete ve skupině prostředků a pak zvolíte Odstranit. Zadáním yes textového pole potvrďte, že chcete prostředek odstranit, a pak vyberte Odstranit.
  4. Odstraňte všechny zbývající prostředky. Zadáním yes textového pole potvrďte, že chcete prostředek odstranit, a pak vyberte Odstranit.
  5. Odstraňte skupinu prostředků tak, že vyberete Odstranit skupinu prostředků, zadáte název skupiny myResourceGroupprostředků a pak vyberete Odstranit.

Známé chyby

Přihlášení k Windows se nepodporují.

Exception Message: Windows logins are not supported in this version of SQL Server.

Agent se nakonfiguroval s přihlášením k Windows a musí místo toho použít přihlášení k SQL Serveru. Pomocí stránky Zabezpečení agenta vlastností publikace změňte přihlašovací údaje na přihlášení k SQL Serveru.

Selhání připojení ke službě Azure Storage

Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare' Failed to connect to Azure Storage '' with OS error: 53.

2019-11-19 02:21:05.07 Získání Azure Storage Připojení ion String pro replstorage 2019-11-19 02:21:05.2 Připojení služby Azure Files Storage \replstorage.file.core.windows.net\replshare 2019-11-19 02:21:31.21 Se nepodařilo připojit se ke službě Azure Storage s chybou operačního systému 53.

Důvodem je pravděpodobně to, že port 445 je uzavřen v bráně Azure Firewall, bráně Windows Firewall nebo v obou.

Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare' Failed to connect to Azure Storage '' with OS error: 55.

Tato chyba může způsobit použití lomítka místo zpětného lomítka v cestě k souboru sdílené složky.

  • To je v pořádku: \\replstorage.file.core.windows.net\replshare
  • To může způsobit chybu operačního systému 55: '\\replstorage.file.core.windows.net/replshare'

Nejde se připojit k odběrateli

The process could not connect to Subscriber 'SQL-VM-SUB Could not open a connection to SQL Server [53]. A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections.

Možná řešení:

  • Ujistěte se, že je otevřený port 1433.
  • Ujistěte se, že je pro předplatitele povolený protokol TCP/IP.
  • Ověřte, že se při vytváření odběratele použil název DNS.
  • Ověřte, že jsou vaše virtuální sítě správně propojené v privátní zóně DNS.
  • Ověřte, že je záznam A správně nakonfigurovaný.
  • Ověřte, že je partnerský vztah virtuálních sítí správně nakonfigurovaný.

Žádné publikace, ke kterým se můžete přihlásit

Když přidáváte nové předplatné pomocí průvodce Novým předplatným , můžete na stránce Publikace zjistit, že neexistují žádné databáze a publikace uvedené jako dostupné možnosti a může se zobrazit následující chybová zpráva:

There are no publications to which you can subscribe, either because this server has no publications or because you do not have sufficient privileges to access the publications.

I když je možné, že tato chybová zpráva je přesná a ve skutečnosti nejsou k dispozici publikace vydavatele, ke kterému jste se připojili, nebo nemáte dostatečná oprávnění, může být tato chyba způsobená také starší verzí aplikace SQL Server Management Studio. Zkuste upgradovat na SQL Server Management Studio 18.0 nebo novější, abyste tuto možnost vyloučili jako původní příčinu.

Další kroky

Povolení funkcí zabezpečení

Úplný seznam způsobů zabezpečení databáze najdete v článku Co je Azure SQL Managed Instance? Probereme následující funkce zabezpečení:

Možnosti služby SQL Managed Instance

Úplný přehled možností spravované instance najdete tady: