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.
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 COPYING
van állítva: .
- Ha a másolás sikertelen, az
state_desc
új adatbázis nézetének oszlopasys.databases
a következőreSUSPECT
van á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 oszlopasys.databases
a következőreONLINE
van á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. |
Kapcsolódó tartalom
- Adatbázis-hozzáférés engedélyezése az SQL Database-hez, a felügyelt SQL-példányhoz és az Azure Synapse Analyticshez
- Az Azure SQL Database biztonságának konfigurálása és kezelése georedundáns visszaállításhoz vagy feladatátvételhez
- Export to a BACPAC file - Azure SQL Database and Azure SQL Managed Instance