Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 předplatitelem v topologii replikace. Dostupné konfigurace transakční replikace najdete zde.
V tomto kurzu se naučíte:
- Nakonfigurujte spravovanou instanci SQL jako vydavatele replikace.
- Nakonfigurujte spravovanou instanci SQL jako distributora replikace.
- Nakonfigurujte SQL Server jako odběratele.
Tento kurz je určený zkušeným cílovým skupinám a předpokládá, že je uživatel obeznámen s nasazením a připojením k spravovaným instancím SQL 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í SQL 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řte skupinu 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í SQL
Pomocí webu Azure Portal vytvořte dvě spravované instance SQL v této nové skupině prostředků.
Název spravované instance SQL 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ýtvnet-sql-mi-publisher.Název distributora spravované instance SQL 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 SQL vydavatele.
Další informace o vytvoření spravované instance SQL najdete v tématu Vytvoření spravované instance SQL 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 SQL 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-subscriber - Obrázek: SQL Server 2016 nebo novější
- Skupina prostředků: stejná jako spravovaná instance SQL
- Virtuální síť:
sql-vm-subscriber-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 propojení virtuálních sítí
Nakonfigurujte VNet Peering tak, aby umožňoval komunikaci mezi virtuální sítí dvou spravovaných instancí SQL 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-subscriber-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 vytvoření partnerského vztahu virtuálních sítí otestujte připojení spuštěním aplikace SQL Server Management Studio (SSMS) na hostiteli SQL Serveru a připojením k oběma spravovaným instancím SQL. Další informace o připojení ke spravované instanci SQL pomocí SSMS najdete v tématu Použití aplikace SSMS pro připojení ke službě SQL Managed Instance.
Vytvoření privátní zóny DNS
Privátní zóna DNS umožňuje směrování DNS mezi spravovanými instancemi SQL a SQL Serverem.
Vytvoření privátní zóny DNS
Přihlaste se k webu Azure Portal.
Vyberte Vytvořit prostředek a vytvořte nový prostředek Azure.
Vyhledejte
private dns zonena Azure Marketplace.Zvolte prostředek privátní zóny DNS publikovaný Microsoftem a pak vyberte Vytvořit a vytvořte zónu DNS.
V rozevíracím seznamu zvolte předplatné a skupinu prostředků.
Zadejte libovolný název zóny DNS, například
repldns.com.
Vyberte Zkontrolovat a vytvořit. Zkontrolujte parametry privátní zóny DNS a pak vyberte Vytvořit a vytvořte prostředek.
Vytvořte záznam A
Přejděte do nové zóny Privátní DNS a vyberte Přehled.
Vyberte + Sada záznamů a vytvořte nový záznam A.
Zadejte název virtuálního počítače s SQL Serverem a také privátní interní IP adresu.
Vyberte OK a vytvořte záznam A.
Propojení virtuální sítě
Přejděte do nové zóny Privátní DNS a vyberte propojení virtuální sítě.
Vyberte + Přidat.
Zadejte název odkazu, například
Pub-link.V rozevíracím seznamu vyberte své předplatné a pak vyberte virtuální síť pro spravovanou instanci SQL vydavatele.
Zaškrtněte políčko vedle možnosti Povolit automatickou registraci.
Pokud chcete propojit virtuální síť, vyberte OK .
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řipojovací řetězec přístupového klíče úložiště ve formátu: DefaultEndpointsProtocol=https;AccountName=<Storage-Account-Name>;AccountKey=****;EndpointSuffix=core.windows.net
Příklad: DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ==;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 SQL vydavatele. Postup je následující:
- Spusťte SQL Server Management Studio na SQL Serveru.
- Připojte se ke spravované instanci SQL vydavatele (
sql-mi-publisher). - 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
Konfigurujte distribuci
Po navázání připojení a máte ukázkovou databázi, můžete nakonfigurovat distribuci ve spravované instanci SQL distributora (sql-mi-distributor). Postup je následující:
Spusťte SQL Server Management Studio na SQL Serveru.
Připojte se ke spravované instanci SQL distributora (
sql-mi-distributor).Otevřete okno Nový dotaz a spuštěním následujícího Transact-SQL kódu nakonfigurujte distribuci ve spravované instanci SQL 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=123456789aBcDeFgHiJkLmNoPqRsTuVwXyZ==;EndpointSuffix=core.windows.net'Poznámka:
Nezapomeňte pro
\parametr použít pouze zpětná lomítka (@working_directory). Použití lomítka (/) může způsobit chybu při připojování ke sdílené složce.Připojte se ke spravované instanci SQL vydavatele (
sql-mi-publisher).Otevřete okno Nový dotaz a spuštěním následujícího Transact-SQL kódu zaregistrujte distributora u vydavatele:
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 můžete publikaci vytvořit. Postup je následující:
Spusťte SQL Server Management Studio na SQL Serveru.
Připojte se ke spravované instanci SQL vydavatele (
sql-mi-publisher).V Průzkumník objektů rozbalte uzel Replikace a klikněte pravým tlačítkem myši na složku Místní publikace. Vyberte Nová publikace....
Výběrem možnosti Další přejdete na úvodní stránku.
Na stránce Databáze publikace vyberte
ReplTutorialdatabázi, kterou jste vytvořili dříve. Vyberte Další.Na stránce Typ publikace vyberte Transakční publikaci. Vyberte Další.
Na stránce Články zaškrtněte políčko vedle tabulek. Vyberte Další.
Na stránce Filtrovat řádky tabulky vyberte Další bez přidání filtrů.
Na stránce agenta snímků zaškrtněte políčko vedle možnosti Vytvořit snímek okamžitě a držet snímek k dispozici k inicializaci předplatného. Vyberte Další.
Na stránce Zabezpečení agenta vyberte Nastavení zabezpečení.... Zadejte přihlašovací údaje SQL Serveru pro použití pro agenta snímků a pro připojení k vydavateli. Výběrem OK zavřete stránku zabezpečení agenta snímků. Vyberte Další.
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í.
Na stránce Dokončit průvodce pojmenujte publikaci
ReplTesta výběrem možnosti Další vytvořte publikaci.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í:
- Spusťte SQL Server Management Studio na SQL Serveru.
- Připojte se ke spravované instanci SQL vydavatele (
sql-mi-publisher). - 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-subscriber.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-subscriber.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')
Uvolnění prostředků
- Na webu Azure Portal přejděte ke své skupině prostředků.
- Vyberte spravované instance SQL a pak vyberte Odstranit. Zadáním
yestextové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 až do jeho dokončení nebudete moct odstranit virtuální cluster ani žádné jiné závislé prostředky. Sledujte odstranění na kartě Aktivita a ověřte, že vaše spravovaná instance SQL byla odstraněna. - Po odstranění spravované instance SQL odstraňte virtuální cluster tak, že ho vyberete ve skupině prostředků a pak zvolíte Odstranit. Zadáním
yestextového pole potvrďte, že chcete prostředek odstranit, a pak vyberte Odstranit. - Odstraňte všechny zbývající prostředky. Zadáním
yestextového pole potvrďte, že chcete prostředek odstranit, a pak vyberte Odstranit. - 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 ve vlastnostech publikace změňte přihlašovací údaje na SQL Server.
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 Obtained Azure Storage Connection String for replstorage
2019-11-19 02:21:05.07 Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare'
2019-11-19 02:21:31.21 Failed to connect to Azure Storage '' with OS error: 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 také použití lomítka místo zpětného lomítka v cestě k souboru sdílené složky.
- To je přijatelné:
\\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-SUBSCRIBER
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 připojení virtuálních sítí nastavené správně.
Žá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 tato chyba způsobit také starší verze aplikace SQL Server Management Studio. Zkuste upgradovat na SQL Server Management Studio 18.0 nebo novější, abyste tento problém vyloučili jako původní příčinu.