Megosztás a következőn keresztül:


Adatbázis tranzakciós konzisztens másolatának másolása az Azure SQL Database-ben

A következőkre vonatkozik:Azure SQL Database

Az Azure SQL Database számos módszert kínál egy meglévő adatbázis másolatának létrehozására ugyanazon az Azure SQL Database logikai kiszolgálón vagy egy másik logikai kiszolgálón. Az adatbázisokat az Azure Portal, a PowerShell, az Azure CLI vagy a Transact-SQL használatával másolhatja.

Jegyzet

A Microsoft Entra ID-t korábban Azure Active Directorynak (Azure AD) nevezték.

Áttekintés

Az adatbázis-másolat a forrásadatbázis tranzakciósan konzisztens pillanatképe a másolási kérelem kezdeményezésének időpontjában. Kiválaszthatja ugyanazt a logikai kiszolgálót vagy egy másik logikai kiszolgálót a másoláshoz. Dönthet úgy is, hogy megtartja a forrásadatbázis biztonsági mentési redundanciát és számítási méretét, vagy más biztonsági mentési tárterület-redundanciát és/vagy számítási méretet használ ugyanazon a szolgáltatási szinten belül. A Standard szolgáltatási szinten lévő adatbázisokat a Standard vagy az Általános célú szintre, valamint a Prémium szolgáltatási szinten lévő adatbázist is átmásolhatja a prémium vagy üzleti szempontból kritikus szintre.

A másolás befejezése után az új adatbázis teljesen működőképes és független adatbázis a forrásadatbázishoz. A másolt adatbázisban lévő bejelentkezések, felhasználók és engedélyek a forrásadatbázistól függetlenül kezelhetők. A másolat georeplikációs technológiával jön létre. A replika bevetésének befejezése után a georeplikációs kapcsolat automatikusan leáll. A georeplikációs műveletek használatára vonatkozó összes követelmény az adatbázis másolási műveletére vonatkozik. A részletekért lásd az aktív georeplikációs áttekintést.

Jegyzet

Az Azure Portal, a PowerShell és az Azure CLI nem támogatja a másik előfizetésbe történő adatbázis-másolást.

Rugalmas skálázású adatbázisok adatbázis-másolása

A hiperskálás szolgáltatási rétegadatbázisai esetében a céladatbázis határozza meg, hogy a másolat gyors másolat, vagy adatméret-másolat-e.

  • Gyors másolás: Ha a másolás a forrás régiójában történik, a másolat a blobok pillanatképeiből jön létre, ez a másolat az adatbázis méretétől függetlenül gyors művelet.

  • Adatméret-másolat: Ha a céladatbázis más régióban van, mint a forrás, vagy ha a céldatabázis biztonsági mentési tároló redundanciája (Helyi, Zonal, Geo) eltér a forrásadatbázisétól, akkor a másolási művelet egy adatméret-művelet. A másolási idő nem arányos közvetlenül a méretével, mivel a lapkiszolgáló blobok párhuzamos másolása folyamatban van.

Bejelentkezések az adatbázis másolatában

Amikor egy adatbázist ugyanarra a logikai kiszolgálóra másol, mindkét adatbázisban ugyanazokat a bejelentkezéseket használhatja. Az adatbázis másolásához használt biztonsági tag lesz az adatbázis tulajdonosa az új adatbázisban.

Amikor egy adatbázist egy másik logikai kiszolgálóra másol, a cél logikai kiszolgálón a másolási műveletet kezdeményező biztonsági tag lesz az új adatbázis tulajdonosa.

A célkiszolgálótól függetlenül a rendszer minden adatbázis-felhasználót, engedélyt és biztonsági azonosítót (SID-t) átmásol az adatbázis-másolatba. Ha tartalmazott adatbázis-felhasználókat az adathozzáféréshez, akkor a másolt adatbázis ugyanazokkal a felhasználói hitelesítő adatokkal rendelkezik, így a másolás befejezése után azonnal elérheti ugyanazokkal a hitelesítő adatokkal.

Ha kiszolgálószintű bejelentkezéseket használ az adathozzáféréshez, és az adatbázist egy másik kiszolgálóra másolja, előfordulhat, hogy a bejelentkezési alapú hozzáférés nem működik. Ez azért fordulhat elő, mert a bejelentkezések nem léteznek a cél logikai kiszolgálón, vagy azért, mert ezek a jelszavak és biztonsági azonosítók (SID-k) eltérőek. Ha többet szeretne megtudni a bejelentkezések kezeléséről, amikor egy adatbázist egy másik kiszolgálóra másol, tekintse meg a Azure SQL Database biztonságának konfigurálása és kezelése georestore vagy feladatátvétel esetén-bejegyzést. Miután a másolási művelet egy másik logikai kiszolgálóra sikeres volt, és a többi felhasználó újraleképezése előtt csak az adatbázis tulajdonosához társított bejelentkezés vagy a kiszolgáló rendszergazdája tud bejelentkezni a másolt adatbázisba. A bejelentkezések feloldásához és az adathozzáférés létrehozásához a másolási művelet befejezése után lásd: Bejelentkezések feloldása.

Adatbázis másolása

Az adatbázist a PowerShell, az Azure CLI és a Transact-SQL (T-SQL) használatával másolhatja.

Ha az Azure Portal használatával szeretne adatbázist másolni, nyissa meg az adatbázis lapját, majd válassza a Másolás lehetőséget az SQL Database létrehozása – Adatbázis másolása lap megnyitásához. Adja meg annak a cél logikai kiszolgálónak az értékeit, ahová az adatbázist át szeretné másolni.

Képernyőkép az Azure Portalról, amelyen az Adatbázis másolása lehetőség van kiemelve az adatbázis áttekintési oldalán.

Adatbázis másolása Transact-SQL

Jelentkezzen be az master adatbázisba a kiszolgáló rendszergazdájának bejelentkezésével vagy a másolni kívánt adatbázist létrehozó bejelentkezéssel. Ahhoz, hogy az adatbázis másolása sikeres legyen, a nem kiszolgálói rendszergazdai bejelentkezéseknek a dbmanager szerepkör tagjainak kell lenniük. További információ a bejelentkezésekről és a logikai kiszolgálóhoz való csatlakozásról: Adatbázis-hozzáférés engedélyezése.

Kezdje a forrásadatbázis másolását a CREATE DATABASE... AS COPY OF utasítással. A T-SQL utasítás addig fut, amíg az adatbázis másolási művelete be nem fejeződik.

Ez a szakasz Transact-SQL parancsokat biztosít a következő műveletekhez:

Jegyzet

A T-SQL utasítás megszüntetése nem szünteti meg az adatbázis másolási műveletét. A művelet megszüntetéséhez törölje a céladatbázist.

Másolás ugyanarra a logikai kiszolgálóra

Jelentkezzen be az master adatbázisba a kiszolgáló rendszergazdájának bejelentkezésével vagy a másolni kívánt adatbázist létrehozó bejelentkezéssel. Ahhoz, hogy az adatbázis másolása sikeres legyen, a nem kiszolgálói rendszergazdai bejelentkezéseknek a dbmanager szerepkör tagjainak kell lenniük.

Ez a parancs egy ugyanazon a logikai kiszolgálón található Database2 új adatbázisba másolDatabase1. Az adatbázis méretétől függően a másolási művelet végrehajtása eltarthat egy ideig.

-- Execute on the master database to start copying
CREATE DATABASE Database2 AS COPY OF Database1;

Másolás rugalmas készletbe

Jelentkezzen be az master adatbázisba a kiszolgáló rendszergazdájának bejelentkezésével vagy a másolni kívánt adatbázist létrehozó bejelentkezéssel. Ahhoz, hogy az adatbázis másolása sikeres legyen, a nem kiszolgálói rendszergazdai bejelentkezéseknek a dbmanager szerepkör tagjainak kell lenniük.

Ez a parancs a Database1-t egy pool1 nevű rugalmas készletben egy új, Database2 nevű adatbázisba másolja. Az adatbázis méretétől függően a másolási művelet végrehajtása eltarthat egy ideig.

Database1 lehet önálló vagy készletezett adatbázis. A különböző rétegkészletek közötti másolás támogatott, de egyes többrétegű példányok sikertelenek. Másolhat például egy vagy rugalmas standard adatbázist egy általános célú készletbe, de nem másolhat standard rugalmas adatbázist prémium szintű készletbe.

-- Execute on the master database to start copying
CREATE DATABASE Database2
AS COPY OF Database1
(SERVICE_OBJECTIVE = ELASTIC_POOL( name = pool1 ));

Másolás másik logikai kiszolgálóra

Csatlakozzon annak a master cél logikai kiszolgálónak az adatbázisához, ahol létre kívánja hozni az új adatbázist. Olyan bejelentkezést használjon, amelynek neve és jelszava megegyezik a forrásadatbázis tulajdonosának nevével és jelszavával a forrás logikai kiszolgálón. A cél logikai kiszolgálón a bejelentkezésnek a dbmanager szerepkör tagjának kell lennie, vagy rendszergazdai bejelentkezés legyen.

Ez a parancs a Database1-at a server1-en egy Database2 nevű új adatbázisba másolja a server2-on. Az adatbázis méretétől függően a másolási művelet végrehajtása eltarthat egy ideig.

-- Execute on the master database of the target logical server (server2) to start copying from Server1 to Server2
CREATE DATABASE Database2 AS COPY OF server1.Database1;

Fontos

Mindkét logikai kiszolgáló tűzfalát úgy kell konfigurálni, hogy engedélyezze a bejövő kapcsolatot a T-SQL-parancsot CREATE DATABASE ... AS COPY OF kibocsátó ügyfél IP-címéről. Az aktuális kapcsolat forrás IP-címének meghatározásához hajtsa végre a következőt: SELECT client_net_address FROM sys.dm_exec_connections WHERE session_id = @@SPID;

Jegyzet

A T-SQL használatával végzett adatbázis-másolás nem támogatott, ha privát végponton keresztül csatlakozik a cél logikai kiszolgálóhoz. Ha privát végpont van konfigurálva, de a nyilvános hálózati hozzáférés engedélyezett, az adatbázis-másolás támogatott, ha sql-hitelesítéssel csatlakozik a cél logikai kiszolgálóhoz egy nyilvános IP-címről. A másolási művelet befejeződése után a nyilvános hozzáférés megtagadható.

A következő parancs a Database1-t átmásolja a server1-ről egy Database2 nevű új adatbázisba a pool2nevű rugalmas készleten belül, a server2-en.

-- Execute on the master database of the target logical server (server2) to start copying from Server1 to Server2
CREATE DATABASE Database2 AS COPY OF server1.Database1 (SERVICE_OBJECTIVE = ELASTIC_POOL( name = pool2 ) );

Másolás egy másik előfizetéshez

Az SQL-adatbázis másolása egy másik logikai kiszolgálóra szakasz lépéseit követve átmásolhatja az adatbázist egy másik előfizetésben lévő logikai kiszolgálóra a T-SQL használatával. Győződjön meg arról, hogy olyan bejelentkezést használ, amelynek neve és jelszava megegyezik a forrásadatbázis adatbázis-tulajdonosával. Emellett a bejelentkezésnek a dbmanager szerepkör vagy a kiszolgáló rendszergazdájának kell lennie a forrás- és cél logikai kiszolgálókon is.

Borravaló

Ha ugyanabban a Microsoft Entra ID-bérlőben másol adatbázisokat, a forrás- és cél logikai kiszolgálókon az engedélyezés egyszerűbb lesz, ha a másolási parancsot hitelesítési bejelentkezéssel kezdeményezi, és mindkét logikai kiszolgálón megfelelő hozzáféréssel rendelkezik. A minimálisan szükséges hozzáférési szint a dbmanager szerepkör tagságának megléte a master adatbázisban mindkét logikai kiszolgálón. Használhat például egy Microsoft Entra-azonosítós bejelentkezést, amely egy kiszolgálói rendszergazdaként kijelölt csoport tagja mindkét logikai kiszolgálón.

A következő szkriptekben a másolandó bejelentkezési név a loginnamekövetkező.

Először csatlakozzon a master forrás logikai kiszolgáló adatbázisához. Hozzon létre egy bejelentkezést és egy felhasználót a master forrás Azure SQL Database logikai kiszolgáló adatbázisában.

--Step# 1
--Create login and user in the master database of the source server.

CREATE LOGIN loginname WITH PASSWORD = 'xxxxxxxxx'
GO
CREATE USER [loginname] FOR LOGIN [loginname] WITH DEFAULT_SCHEMA=[dbo];
GO
ALTER ROLE dbmanager ADD MEMBER loginname;
GO

Csatlakozzon a forrásfelhasználói adatbázishoz. Ezután a forrásfelhasználói adatbázisban hozza létre a felhasználót, és adja hozzá az adatbázis dbowner szerepköréhez.

--Step# 2
--Create the user in the source database and grant dbowner permission to the database.

CREATE USER [loginname] FOR LOGIN [loginname] WITH DEFAULT_SCHEMA=[dbo];
GO
ALTER ROLE db_owner ADD MEMBER loginname;
GO

Ezután keresse meg a felhasználó loginname biztonsági azonosítóját (SID) a master forrás logikai kiszolgáló adatbázisából.

--Step# 3
--Capture the SID of the user "loginname" from master database

SELECT [sid] FROM sysusers WHERE [name] = 'loginname';

A következő szkriptet futtassa az új vagy cél logikai kiszolgáló master adatbázisában. Először hozzon létre egy bejelentkezést és egy felhasználót a master cél logikai kiszolgáló adatbázisában, majd adja hozzá a dbmanager-kiszolgálói szerepkörhöz. Adjon meg egy <strong password>, és cserélje le <SID of loginname login on source server> a sid-et a forrás logikai kiszolgálóról.

--Step# 4
--Connect to Destination server.
--Create login and user in the master database, same as of the source server.

CREATE LOGIN loginname WITH PASSWORD = '<strong password>', SID = <SID of loginname login on source server>;
GO
CREATE USER [loginname] FOR LOGIN [loginname] WITH DEFAULT_SCHEMA=[dbo];
GO
ALTER ROLE dbmanager ADD MEMBER loginname;
GO

master A cél logikai kiszolgáló adatbázisában hozza létre az új adatbázist. Cserélje le new_database_name a kívánt névre. Cserélje le és source_database_name írja be source_server_name a forrás nevét.

--Step# 5
--Execute the copy of database script from the destination logical server using the credentials created

CREATE DATABASE new_database_name
AS COPY OF source_server_name.source_database_name;

Borravaló

Az adatbázis másolása egy másik Azure-bérlő előfizetéséből csak akkor támogatott, ha T-SQL-t és SQL-hitelesítési bejelentkezést használ a cél logikai kiszolgálóra való bejelentkezéshez. Egy másik Azure-fiókban lévő logikai kiszolgálón nem támogatott az adatbázis-másolat létrehozása a Microsoft Entra-hitelesítéssel az Azure SQLesetében.

A másolási művelet előrehaladásának figyelése

A másolási folyamat figyelése a sys.databases, sys.dm_database_copies és sys.dm_operation_status nézetek lekérdezésével. Amíg a másolás folyamatban van, az új adatbázis state_desc nézetének sys.databases oszlopa COPYING.

  • Ha a másolás sikertelen, az state_desc új adatbázis nézetének oszlopa sys.databases a következőre SUSPECTvan állítva: . Hajtsa végre a DROP utasítást az új adatbázisban, majd próbálkozzon újra később.
  • Ha a másolás sikeres, az state_desc új adatbázis nézetének oszlopa sys.databases a következőre ONLINEvan állítva: . A másolás befejeződött, és az új adatbázis egy normál adatbázis, amely a forrásadatbázistól függetlenül módosítható.

Jegyzet

Ha úgy dönt, hogy megszakítja a másolást, amíg az folyamatban van, hajtsa végre a DROP DATABASE utasítást az új adatbázisban.

Fontos

Ha a forrásnál lényegesen kisebb szolgáltatási célkitűzéssel rendelkező példányt kell létrehoznia, előfordulhat, hogy a céladatbázis nem rendelkezik elegendő erőforrással a bevetési folyamat befejezéséhez, és ez a másolási művelet meghiúsulását okozhatja. Ebben a forgatókönyvben használjon geo-visszaállítási kérelmet, hogy létrehozzon egy másolatot egy másik logikai kiszolgálón és/vagy egy másik régióban. További információ: Azure SQL Database helyreállítása adatbázis-biztonsági másolatok használatával.

Engedélyek

Adatbázis-másolat létrehozásához a következő szerepkörökben kell lennie:

  • Előfizetés tulajdonosa vagy
  • SQL Server-közreműködői szerepkör vagy
  • Egyéni szerepkör a forrás logikai kiszolgálón a következő engedélyekkel:
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write és
  • Egyéni szerepkör a cél logikai kiszolgálón a következő engedélyekkel:
    • Microsoft.Sql/servers/read
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write

Az adatbázis másolatának megszakításához a következő szerepkörökben kell lennie:

  • Előfizetés tulajdonosa vagy
  • SQL Server-közreműködői szerepkör vagy
  • Egyéni szerepkör a céladatbázison a következő engedéllyel:
    • Microsoft.Sql/servers/databases/delete

Az adatbázis-másolás Azure Portalon történő kezeléséhez a következő engedélyekre is szüksége van:

  • Microsoft.Resources/subscriptions/resources/read
  • Microsoft.Resources/deployments/read
  • Microsoft.Resources/deployments/write
  • Microsoft.Resources/deployments/operationstatuses/read

Ha a portál erőforráscsoportjában a telepítések alatt szeretné látni a műveleteket, a több erőforrás-szolgáltatót is érintő műveleteket, beleértve az SQL-műveleteket, az alábbi további engedélyekre van szüksége:

  • Microsoft.Resources/subscriptions/resourcegroups/deployments/operations/read
  • Microsoft.Resources/subscriptions/resourcegroups/deployments/operationstatuses/read

Bejelentkezések feloldása

Miután az új adatbázis online állapotban van a cél logikai kiszolgálón, az ALTER USER utasítással újraképezi a felhasználókat az új adatbázisból a cél logikai kiszolgálón való bejelentkezésekhez. Az árva felhasználók megoldásához tekintse meg az Árva felhasználók hibaelhárítása című témakört. Lásd még Az Azure SQL Database biztonságának konfigurálása és kezelése geovisszaállítás vagy feladatátvétel esetén.

Az új adatbázis minden felhasználója megőrzi a forrásadatbázisban lévő engedélyeit. Az adatbázis-másolást kezdeményező felhasználó lesz az új adatbázis adatbázistulajdonosa. Miután a másolás sikeres volt, és a többi felhasználó újraleképezése előtt csak az adatbázis tulajdonosa tud bejelentkezni az új adatbázisba.

Ha többet szeretne megtudni a felhasználók és a bejelentkezések kezeléséről, amikor egy adatbázist egy másik logikai kiszolgálóra másol, olvassa el a Azure SQL Database biztonságának konfigurálása és kezelése geo-helyreállítás vagy feladatátvétel esetén.

Adatbázis másolási hibái

Az adatbázis Azure SQL Database-ben való másolása során az alábbi hibák lépnek fel. További információ: Adatbázis tranzakciósan konzisztens másolatának másolása az Azure SQL Database-ben.

Hibakód Súlyosság Leírás
40635 16 Az "%.*ls" IP-címmel rendelkező ügyfél átmenetileg le van tiltva.
40637 16 Az adatbázis-másolat létrehozása jelenleg le van tiltva.
40561 16 Az adatbázis másolása sikertelen volt. A forrás- vagy céladatbázis nem létezik.
40562 16 Az adatbázis másolása sikertelen volt. A forrásadatbázis el lett vetve.
40563 16 Az adatbázis másolása sikertelen volt. A céladatbázis el lett vetve.
40564 16 Az adatbázis másolása belső hiba miatt meghiúsult. Helyezze el a céladatbázist, és próbálkozzon újra.
40565 16 Az adatbázis másolása sikertelen volt. Ugyanarról a forrásról egyidejűleg legfeljebb 1 adatbázis-másolat készülhet. Helyezze el a céladatbázist, és próbálkozzon újra később.
40566 16 Az adatbázis másolása belső hiba miatt meghiúsult. Helyezze el a céladatbázist, és próbálkozzon újra.
40567 16 Az adatbázis másolása belső hiba miatt meghiúsult. Helyezze el a céladatbázist, és próbálkozzon újra.
40568 16 Az adatbázis másolása sikertelen volt. A forrásadatbázis elérhetetlenné vált. Helyezze el a céladatbázist, és próbálkozzon újra.
40569 16 Az adatbázis másolása sikertelen volt. A céladatbázis elérhetetlenné vált. Helyezze el a céladatbázist, és próbálkozzon újra.
40570 16 Az adatbázis másolása belső hiba miatt meghiúsult. Helyezze el a céladatbázist, és próbálkozzon újra később.
40571 16 Az adatbázis másolása belső hiba miatt meghiúsult. Helyezze el a céladatbázist, és próbálkozzon újra később.