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

A következőre 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 a kiszolgálón vagy egy másik kiszolgálón. Az adatbázisokat az Azure Portal, a PowerShell, az Azure CLI vagy a Transact-SQL használatával másolhatja.

Megjegyzés:

A Microsoft Entra ID az Azure Active Directory (Azure AD) új neve. Jelenleg frissítjük a dokumentációt.

Á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ét követő időponttól kezdve. Kiválaszthatja ugyanazt a kiszolgálót vagy egy másik kiszolgálót a másolathoz. 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 másolás befejezése után teljesen működőképes, független adatbázissá válik. A másolt adatbázis bejelentkezéseinek, felhasználóinak és engedélyeinek kezelése a forrásadatbázistól független. A másolat a georeplikációs technológiával jön létre. Ha a replika index-összehangolása befejeződött, a georeplikációs hivatkozás automatikusan megszűnik. A georeplikáció használatára vonatkozó követelmények az adatbázis-másolási műveletnél is érvényesülnek. Részletekért tekintse meg az aktív georeplikációs áttekintést .

Megjegyzés:

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.

Adatbázis-másolat az Azure SQL Rugalmas skálázáshoz

Az Azure SQL Rugalmas skálázás esetén 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ásolás mérete: Ha a céladatbázis más régióban van, mint a forrás, vagy ha az adatbázis biztonsági mentési tárolójának redundanciái (Helyi, Zonal, Geo) eltérnek a forrásadatbázistól, a másolási művelet 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 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.

When you copy a database to a different server, the security principal that initiated the copy operation on the target server becomes the owner of the new database.

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. A tárolt adatbázis felhasználóinak adathozzáférés céljából történő használata biztosítja, hogy 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ói szintű bejelentkezési adatokat használ az adatok eléréséhez, és az adatbázist egy másik kiszolgálóra másolja, előfordulhat, hogy a bejelentkezési alapú hozzáférés nem fog működni. Ez azért fordulhat elő, mert a bejelentkezések nem léteznek a célkiszolgálón, vagy azért, mert ezek a jelszavak és biztonsági azonosítók (SID-k) eltérőek. Ha többet szeretne tudni a bejelentkezések kezeléséről, amikor egy adatbázist egy másik kiszolgálóra másol, olvassa el az Azure SQL Database biztonságának kezelése a vészhelyreállítás után című témakört. Miután a másolási művelet sikeres volt egy másik kiszolgálóra, é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.

Másolás az Azure Portal használatával

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élkiszolgálónak az értékeit, ahová az adatbázist át szeretné másolni.

Screenshot of Azure portal, showing Database copy option highlighted on the database overview page.

Másolás a PowerShell vagy az Azure CLI használatával

Adatbázis másolásához használja az alábbi példákat.

PowerShell esetén használja a New-AzSqlDatabaseCopy parancsmagot.

Fontos

A PowerShell Azure Resource Manager (RM) modult továbbra is támogatja az Azure SQL Database, de minden jövőbeli fejlesztés az Az.Sql modulhoz tartozik. Az AzureRM-modul legalább 2020 decemberéig továbbra is megkapja a hibajavításokat. Az Az modulban és az AzureRm-modulokban található parancsok argumentumai lényegében azonosak. A kompatibilitásukról további információt az új Azure PowerShell Az modul bemutatása című témakörben talál.

New-AzSqlDatabaseCopy -ResourceGroupName "<resourceGroup>" -ServerName $sourceserver -DatabaseName "<databaseName>" `
    -CopyResourceGroupName "myResourceGroup" -CopyServerName $targetserver -CopyDatabaseName "CopyOfMySampleDatabase"

Az adatbázis másolása aszinkron művelet, de a céladatbázis közvetlenül a kérés elfogadása után jön létre. Ha még folyamatban van a másolási művelet megszakítása, a Remove-AzSqlDatabase parancsmaggal dobja el a céladatbázist.

A PowerShell-példaszkript teljes körű megtekintéséhez tekintse meg az adatbázis másolása új kiszolgálóra című témakört.

Másolás Transact-SQL használatával

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 kiszolgálóhoz való csatlakozásról: Bejelentkezések kezelése.

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

Megjegyzés:

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 leállításához dobja el a céladatbázist.

Másolás ugyanarra a 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 kiszolgálón található Database2 új adatbázisba másolDatabase1. Depending on the size of your database, the copying operation might take some time to complete.

-- 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 egy készlet1 nevű rugalmas készletben lévő Database2 új adatbázisba másolDatabase1. Depending on the size of your database, the copying operation might take some time to complete.

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 kiszolgálóra

Csatlakozás annak a master célkiszolgálónak az adatbázisához, ahol létre kívánja hozni az új adatbázist. Olyan bejelentkezést használjon, amely ugyanazzal a névvel és jelszóval rendelkezik, mint a forrásadatbázis adatbázis-tulajdonosa a forráskiszolgálón. A célkiszolgálón a bejelentkezésnek a dbmanager szerepkör tagjának is kell lennie, vagy a kiszolgáló rendszergazdájának kell bejelentkeznie.

Ez a parancs az 1. kiszolgálón egy új, server2 nevű Database2 adatbázisba másolDatabase1. Depending on the size of your database, the copying operation might take some time to complete.

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

Fontos

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

Megjegyzés:

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élkiszolgálóhoz. Ha privát végpont van konfigurálva, de 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élkiszolgá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ó.

Hasonlóképpen, az alábbi parancs az 1. kiszolgálón egy rugalmas készlet2 nevű új adatbázisba Database2 másolja Database1 a kiszolgáló2-n.

-- Execute on the master database of the target 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 másik előfizetésbe

Az SQL-adatbázis másolása másik kiszolgálóra szakasz lépéseit követve átmásolhatja az adatbázist egy másik előfizetésben lévő 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élkiszolgálókon egyaránt.

Tipp.

Ha ugyanabban a Microsoft Entra ID-bérlőben másol adatbázisokat, a forrás- és célkiszolgálókon az engedélyezés egyszerűbb lesz, ha a másolási parancsot olyan hitelesítési bejelentkezéssel kezdeményezi, amely mindkét kiszolgálón megfelelő hozzáféréssel rendelkezik. A minimálisan szükséges hozzáférési szint a két kiszolgálón lévő adatbázis adatbázis-kezelő szerepkörének master tagsága. 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 kiszolgálón.

--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

--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

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

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

--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 = 'xxxxxxxxx', 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

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

CREATE DATABASE new_database_name
AS COPY OF source_server_name.source_database_name;

Tipp.

A T-SQL használatával végzett adatbázis-másolás támogatja az adatbázis másolását egy másik Azure-bérlőn lévő előfizetésből. Ez csak akkor támogatott, ha SQL-hitelesítési bejelentkezéssel jelentkezik be a célkiszolgálóra. Ha a Microsoft Entra-hitelesítés aktív (engedélyezve) a forrás- vagy cél logikai kiszolgálón, nem támogatott egy másik Azure-bérlő logikai kiszolgálóján lévő adatbázis-másolat létrehozása.

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 state_desc új adatbázis nézetének oszlopa sys.databases a következőre COPYINGvan állítva: .

  • 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ó.

Megjegyzés:

Ha úgy dönt, hogy megszakítja a másolást, amíg folyamatban van, hajtsa végre a DROP DATABA Standard kiadás 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 magvetési folyamat befejezéséhez, és ez a másolási művelet meghiúsulását okozhatja. Ebben a forgatókönyvben georedundáns visszaállítási kéréssel hozzon létre egy másolatot egy másik 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.

Azure RBAC-szerepkörök és engedélyek az adatbázis-másolás kezeléséhez

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áskiszolgálón a következő engedélyekkel:
    • Microsoft.Sql/servers/databases/read
    • Microsoft.Sql/servers/databases/write and
  • Egyéni szerepkör a célkiszolgálón az alábbi 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 az üzemelő példányok alatt szeretné látni a műveleteket, több erőforrás-szolgáltató műveleteit, beleértve az SQL-műveleteket is, 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élkiszolgálón, az ALTER U Standard kiadás R utasítással újraképezi a felhasználókat az új adatbázisból a célkiszolgálón való bejelentkezéshez. 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 kezelése vészhelyreállítás utá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 kiszolgálóra másol, olvassa el az Azure SQL Database biztonsági funkcióinak vészhelyreállítás utáni kezelését ismertető témakört.

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ók az Azure SQL-adatbázis másolása című részben.

Error code Severity Leírás
40635 16 A(z) %.*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 Database copy failed. A forrás- vagy céladatbázis nem létezik.
40562 16 Database copy failed. The source database has been dropped.
40563 16 Database copy failed. The target database has been dropped.
40564 16 Database copy failed due to an internal error. Helyezze el a céladatbázist, és próbálkozzon újra.
40565 16 Database copy failed. 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 Database copy failed due to an internal error. Helyezze el a céladatbázist, és próbálkozzon újra.
40567 16 Database copy failed due to an internal error. Helyezze el a céladatbázist, és próbálkozzon újra.
40568 16 Database copy failed. Source database has become unavailable. Helyezze el a céladatbázist, és próbálkozzon újra.
40569 16 Database copy failed. Target database has become unavailable. Helyezze el a céladatbázist, és próbálkozzon újra.
40570 16 Database copy failed due to an internal error. Helyezze el a céladatbázist, és próbálkozzon újra később.
40571 16 Database copy failed due to an internal error. Helyezze el a céladatbázist, és próbálkozzon újra később.