Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:Azure SQL Managed Instance
Replikacja transakcyjna umożliwia replikowanie danych z jednej bazy danych do innej hostowanej w programie SQL Server lub usłudze Azure SQL Managed Instance. Wystąpienie zarządzane SQL może być wydawcą, dystrybutorem lub subskrybentem w topologii replikacji. Aby uzyskać dostępne konfiguracje, zobacz Konfiguracje replikacji transakcyjnej.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Skonfiguruj wystąpienie zarządzane jako wydawcę replikacji.
- Konfigurowanie wystąpienia zarządzanego jako dystrybutora replikacji.
- Skonfiguruj program SQL Server jako subskrybenta.
Ten samouczek jest przeznaczony dla doświadczonych odbiorców i zakłada, że użytkownik jest zaznajomiony z wdrażaniem i nawiązywaniem połączenia z wystąpieniami zarządzanymi i maszynami wirtualnymi programu SQL Server na platformie Azure.
Uwaga
W tym artykule opisano użycie replikacji transakcyjnej w usłudze Azure SQL Managed Instance. Nie jest to powiązane z failover groups, funkcją usługi Azure SQL Managed Instance, która umożliwia tworzenie pełnych replik do odczytu poszczególnych wystąpień. Podczas konfigurowania replikacji transakcyjnej z grupami failover należy wziąć pod uwagę dodatkowe zagadnienia.
Wymagania wstępne
Aby ukończyć ten samouczek, upewnij się, że dysponujesz następującymi elementami:
- Subskrypcja platformy Azure.
- Doświadczenie we wprowadzaniu dwóch wystąpień zarządzanych w tej samej sieci wirtualnej.
- Subskrybent programu SQL Server lokalnie lub na maszynie wirtualnej platformy Azure. W tym samouczku jest używana maszyna wirtualna platformy Azure.
- SQL Server Management Studio (SSMS) 18.0 lub nowszy.
- Najnowsza wersja programu Azure PowerShell.
- Porty 445 i 1433 zezwalają na ruch SQL zarówno przez zaporę platformy Azure, jak i zaporę systemu Windows.
Tworzenie grupy zasobów
Użyj następującego fragmentu kodu programu PowerShell, aby utworzyć nową grupę zasobów:
# set variables
$ResourceGroupName = "SQLMI-Repl"
$Location = "East US 2"
# Create a new resource group
New-AzResourceGroup -Name $ResourceGroupName -Location $Location
Utwórz dwa wystąpienia zarządzane
Utwórz dwa wystąpienia zarządzane w tej nowej grupie zasobów przy użyciu witryny Azure Portal.
Nazwa wystąpienia zarządzanego wydawcy powinna być
sql-mi-publisher
(wraz z kilkoma znakami dla losowania), a nazwa sieci wirtualnej powinna byćvnet-sql-mi-publisher
.Nazwa wystąpienia zarządzanego dystrybutora powinna być
sql-mi-distributor
(wraz z kilkoma znakami dla losowości) i powinna być w tej samej sieci wirtualnej co zarządzane wystąpienie wydawcy.
Aby uzyskać więcej informacji na temat tworzenia wystąpienia zarządzanego, zobacz Tworzenie wystąpienia zarządzanego w portalu.
Uwaga
Ze względu na prostotę i ponieważ jest to najbardziej typowa konfiguracja, ten samouczek sugeruje umieszczenie wystąpienia zarządzanego dystrybutora w tej samej sieci wirtualnej co wydawca. Można jednak utworzyć dystrybutora w oddzielnej sieci wirtualnej. W tym celu należy skonfigurować komunikację równorzędną sieci wirtualnych między sieciami wirtualnymi wydawcy i dystrybutora, a następnie skonfigurować komunikację równorzędną sieci wirtualnych między sieciami wirtualnymi dystrybutora i subskrybenta.
Tworzenie maszyny wirtualnej z programem SQL Server
Utwórz maszynę wirtualną z programem SQL Server przy użyciu witryny Azure Portal. Maszyna wirtualna programu SQL Server powinna mieć następujące cechy:
- Nazwa:
sql-vm-sub
- Obraz: SQL Server 2016 lub nowszy
- Grupa zasobów: to samo co instancja zarządzana
- Sieć wirtualna:
sql-vm-sub-vnet
Aby uzyskać więcej informacji na temat wdrażania maszyny wirtualnej z programem SQL Server na platformie Azure, zobacz Szybki start: tworzenie maszyny wirtualnej z programem SQL Server.
Konfiguracja komunikacji sieci wirtualnych
Skonfiguruj połączenie równorzędne VNet, aby umożliwić komunikację między siecią wirtualną dwóch wystąpień zarządzanych a siecią wirtualną SQL Servera. W tym celu użyj tego fragmentu kodu programu PowerShell:
# 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 ustanowieniu peeringu VNet przetestuj łączność, uruchamiając SQL Server Management Studio (SSMS) na serwerze SQL i połącz się z obiema zarządzanymi instancjami. Aby uzyskać więcej informacji na temat nawiązywania połączenia z wystąpieniem zarządzanym przy użyciu programu SSMS, zobacz Nawiązywanie połączenia z usługą SQL Managed Instance przy użyciu programu SSMS.
Tworzenie prywatnej strefy DNS
Prywatna strefa DNS umożliwia routing DNS między wystąpieniami zarządzanymi i programem SQL Server.
Tworzenie prywatnej strefy DNS
Zaloguj się do Azure Portal.
Wybierz pozycję Utwórz zasób, aby utworzyć nowy zasób platformy Azure.
Wyszukaj ciąg
private dns zone
w witrynie Azure Marketplace.Wybierz zasób Prywatna strefa DNS opublikowany przez firmę Microsoft, a następnie wybierz Utwórz, aby utworzyć strefę DNS.
Wybierz subskrypcję i grupę zasobów z listy rozwijanej.
Podaj dowolną nazwę strefy DNS, taką jak
repldns.com
.Wybierz Przejrzyj i utwórz. Przejrzyj parametry prywatnej strefy DNS, a następnie wybierz pozycję Utwórz , aby utworzyć zasób.
Tworzenie rekordu A
Przejdź do nowej prywatnej strefy DNS i wybierz pozycję Przegląd.
Wybierz pozycję + Dodaj rekord, aby utworzyć nowy rekord A.
Podaj nazwę maszyny wirtualnej z programem SQL Server, a także prywatny wewnętrzny adres IP.
Wybierz przycisk OK , aby utworzyć rekord A.
Łączenie sieci wirtualnej
Przejdź do nowej prywatnej strefy DNS i wybierz pozycję Łącza sieci wirtualnej.
Wybierz + Dodaj.
Podaj nazwę linku, na przykład
Pub-link
.Wybierz swoją subskrypcję spośród opcji rozwijanej, a następnie wybierz sieć wirtualną dla instancji zarządzanej przez wydawcę.
Zaznacz pole wyboru obok pozycji Włącz automatyczną rejestrację.
Wybierz przycisk OK , aby połączyć sieć wirtualną.
Powtórz te kroki, aby dodać link dla sieci wirtualnej subskrybenta z nazwą taką jak
Sub-link
.
Tworzenie konta usługi Azure Storage
Utwórz konto usługi Azure Storage dla katalogu roboczego, a następnie utwórz udział plików na tym koncie magazynu.
Skopiuj ścieżkę udziału plików w formacie: \\storage-account-name.file.core.windows.net\file-share-name
Przykład: \\replstorage.file.core.windows.net\replshare
Skopiuj łańcuch połączenia klucza dostępu do magazynu w formacie:DefaultEndpointsProtocol=https;AccountName=<Storage-Account-Name>;AccountKey=****;EndpointSuffix=core.windows.net
Przykład: DefaultEndpointsProtocol=https;AccountName=replstorage;AccountKey=dYT5hHZVu9aTgIteGfpYE64cfis0mpKTmmc8+EP53GxuRg6TCwe5eTYWrQM4AmQSG5lb3OBskhg==;EndpointSuffix=core.windows.net
Aby uzyskać więcej informacji, zobacz Zarządzanie kluczami dostępu do konta magazynu.
Utwórz bazę danych
Utwórz nową bazę danych na wystąpieniu zarządzanym przez wydawcę. W tym celu wykonaj następujące kroki:
- Uruchom program SQL Server Management Studio w programie SQL Server.
- Połącz się z wystąpieniem zarządzanym
sql-mi-publisher
. - Otwórz okno Nowe zapytanie i wykonaj następujące zapytanie T-SQL, aby utworzyć bazę danych.
-- 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
Konfigurowanie dystrybucji
Po nawiązaniu łączności i utworzeniu przykładowej bazy danych można skonfigurować dystrybucję w wystąpieniu sql-mi-distributor
zarządzanym. W tym celu wykonaj następujące kroki:
Uruchom program SQL Server Management Studio w programie SQL Server.
Połącz się z wystąpieniem zarządzanym
sql-mi-distributor
.Otwórz okno Nowe zapytanie i uruchom następujący kod Języka Transact-SQL, aby skonfigurować dystrybucję w wystąpieniu zarządzanym dystrybutora:
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'
Uwaga
Pamiętaj, aby użyć tylko ukośników odwrotnych (
\
) dla parametru @working_directory . Użycie ukośnika (/
) może spowodować błąd podczas nawiązywania połączenia z udziałem plików.Połącz się z wystąpieniem zarządzanym
sql-mi-publisher
.Otwórz okno Nowe zapytanie i uruchom następujący kod języka Transact-SQL, aby zarejestrować dystrybutora w wydawcy:
Use MASTER EXEC sys.sp_adddistributor @distributor = 'sql-mi-distributor.b6bf57.database.windows.net', @password = '<distributor_admin_password>'
Tworzenie publikacji
Po skonfigurowaniu dystrybucji można teraz utworzyć publikację. W tym celu wykonaj następujące kroki:
Uruchom program SQL Server Management Studio w programie SQL Server.
Połącz się z wystąpieniem zarządzanym
sql-mi-publisher
.W Eksplorator obiektów rozwiń węzeł Replikacja i kliknij prawym przyciskiem myszy folder Publikacja lokalna. Wybierz pozycję Nowa publikacja....
Wybierz przycisk Dalej , aby przejść obok strony powitalnej.
Na stronie Baza danych publikacji, wybierz utworzoną
ReplTutorial
wcześniej bazę danych. Wybierz Dalej.Na stronie Typ publikacji wybierz pozycję Publikacja transakcyjna. Wybierz Dalej.
Na stronie Artykuły zaznacz pole wyboru obok pozycji Tabele. Wybierz Dalej.
Na stronie Filtrowanie wierszy tabeli wybierz pozycję Dalej bez dodawania filtrów.
Na stronie Agent migawek, zaznacz pole wyboru obok opcji Utwórz migawkę natychmiast i zachowaj migawkę dostępną do inicjowania subskrypcji. Wybierz Dalej.
Na stronie Zabezpieczenia agenta wybierz pozycję Ustawienia zabezpieczeń.... Podaj poświadczenia logowania programu SQL Server do użycia dla agenta migawek i połącz się z wydawcą. Wybierz przycisk OK, aby zamknąć stronę zabezpieczeń agenta migawek. Wybierz Dalej.
Na stronie Akcje kreatora wybierz pozycję Utwórz publikację, a (opcjonalnie) wybierz pozycję Wygeneruj plik skryptu z krokami tworzenia publikacji, jeśli chcesz zapisać ten skrypt do późniejszego użycia.
Na stronie Zakończ pracę kreatora nadaj publikacji nazwę i
ReplTest
wybierz przycisk Dalej, aby utworzyć publikację.Po utworzeniu publikacji odśwież węzeł Replikacja w Eksplorator obiektów i rozwiń węzeł Publikacje lokalne, aby zobaczyć nową publikację.
Tworzenie subskrypcji
Po utworzeniu publikacji możesz utworzyć subskrypcję. W tym celu wykonaj następujące kroki:
- Uruchom program SQL Server Management Studio w programie SQL Server.
- Połącz się z wystąpieniem zarządzanym
sql-mi-publisher
. - Otwórz okno Nowe zapytanie i uruchom następujący kod języka Transact-SQL, aby dodać subskrypcję i agenta dystrybucji. Użyj DNS jako części nazwy subskrybenta.
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
Testowanie replikacji
Po skonfigurowaniu replikacji można ją przetestować, wstawiając nowe elementy po stronie wydawcy i obserwując, jak zmiany są propagowane do subskrybenta.
Uruchom następujący fragment kodu T-SQL, aby wyświetlić wiersze u subskrybenta:
Use ReplSub
select * from dbo.ReplTest
Uruchom poniższy fragment kodu T-SQL, aby wstawić dodatkowe wiersze do wydawcy, a następnie ponownie sprawdź wiersze na subskrybenta.
Use ReplTutorial
INSERT INTO ReplTest (ID, c1) VALUES (15, 'pub')
Czyszczenie zasobów
- Przejdź do grupy zasobów w witrynie Azure Portal.
- Wybierz wystąpienia zarządzane, a następnie wybierz pozycję Usuń. Wpisz
yes
w polu tekstowym, aby potwierdzić, że chcesz usunąć zasób, a następnie wybierz pozycję Usuń. Ukończenie tego procesu w tle może zająć trochę czasu i dopóki nie zostanie to zrobione, nie będzie można usunąć klastra wirtualnego ani żadnych innych zasobów zależnych. Monitoruj usuwanie na zakładce Aktywność, aby potwierdzić, że instancja zarządzana została usunięta. - Po usunięciu wystąpienia zarządzanego usuń klaster wirtualny, wybierając go w grupie zasobów, a następnie klikając Usuń. Wpisz
yes
w polu tekstowym, aby potwierdzić, że chcesz usunąć zasób, a następnie wybierz pozycję Usuń. - Usuń wszystkie pozostałe zasoby. Wpisz
yes
w polu tekstowym, aby potwierdzić, że chcesz usunąć zasób, a następnie wybierz pozycję Usuń. - Usuń grupę zasobów, wybierając pozycję Usuń grupę zasobów, wpisując nazwę grupy zasobów ,
myResourceGroup
a następnie wybierając pozycję Usuń.
Znane błędy
Logowania do systemu Windows nie są obsługiwane
Exception Message: Windows logins are not supported in this version of SQL Server.
Agent został skonfigurowany przy użyciu nazwy logowania systemu Windows i musi zamiast tego użyć nazwy logowania programu SQL Server. Użyj strony Agent SecurityWłaściwości publikacji aby zmienić poświadczenia logowania na konto logowania SQL Server.
Nie można nawiązać połączenia z usługą 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 Uzyskano ciąg połączenia Azure Storage dla replstorage 2019-11-19 02:21:05.07 Nawiązywanie połączenia z Azure Files Storage '\replstorage.file.core.windows.net\replshare' 2019-11-19 02:21:31.21 Nie można nawiązać połączenia z Azure Storage z błędem systemu operacyjnego: 53.
Prawdopodobnie jest to spowodowane zamknięciem portu 445 w zaporze platformy Azure, zaporze systemu Windows lub obu tych zaporach.
Connecting to Azure Files Storage '\\replstorage.file.core.windows.net\replshare' Failed to connect to Azure Storage '' with OS error: 55.
Użycie ukośnika zamiast odwrotnego ukośnika w ścieżce do zasobu sieciowego może spowodować ten błąd.
- To jest w porządku:
\\replstorage.file.core.windows.net\replshare
- Może to spowodować błąd systemu operacyjnego 55:
'\\replstorage.file.core.windows.net/replshare'
Nie można nawiązać połączenia z subskrybentem
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żliwe rozwiązania:
- Upewnij się, że port 1433 jest otwarty.
- Upewnij się, że protokół TCP/IP jest włączony dla subskrybenta.
- Upewnij się, że nazwa DNS została użyta podczas tworzenia subskrybenta.
- Sprawdź, czy sieci wirtualne są poprawnie połączone w prywatnej strefie DNS.
- Sprawdź, czy rekord A jest poprawnie skonfigurowany.
- Sprawdź, czy peering sieci wirtualnych jest poprawnie skonfigurowany.
Brak publikacji, do których można subskrybować
Podczas dodawania nowej subskrypcji przy użyciu kreatora Nowa subskrypcja na stronie Publikacja może się okazać, że nie ma baz danych i publikacji wymienionych jako dostępne opcje i może zostać wyświetlony następujący komunikat o błędzie:
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.
Chociaż jest możliwe, że ten komunikat o błędzie jest dokładny i naprawdę nie ma publikacji dostępnych dla wydawcy, z którym nawiązałeś połączenie, lub brakuje wystarczających uprawnień, ten błąd może być również spowodowany przez starszą wersję programu SQL Server Management Studio. Spróbuj przeprowadzić uaktualnienie do programu SQL Server Management Studio 18.0 lub nowszego, aby wykluczyć to jako główną przyczynę.
Następne kroki
Włączanie funkcji zabezpieczeń.
Zobacz artykuł Co to jest usługa Azure SQL Managed Instance? (Co to jest usługa Azure SQL Managed Instance?), aby uzyskać pełną listę sposobów zabezpieczania bazy danych. Omówione są następujące funkcje zabezpieczeń:
- Inspekcja usługi SQL Managed Instance
- Zawsze szyfrowane
- Wykrywanie zagrożeń
- Dynamiczne maskowanie danych
- Zabezpieczenia na poziomie wiersza
- Transparent Data Encryption (TDE)
Możliwości usługi SQL Managed Instance
Aby zapoznać się z pełnym omówieniem możliwości wystąpienia zarządzanego, zobacz: