Adatok másolása és átalakítása az SQL Serverről az Azure Data Factory vagy az Azure Synapse Analytics használatával
A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics
Tipp.
Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!
Ez a cikk azt ismerteti, hogyan használhatja a másolási tevékenységet az Azure Data Factoryben és az Azure Synapse-folyamatokban adatok SQL Server-adatbázisból és SQL Server-adatbázisba való másolásához, valamint Adatfolyam az SQL Server-adatbázis adatainak átalakításához. További információkért olvassa el az Azure Data Factory vagy az Azure Synapse Analytics bevezető cikkét.
Támogatott képességek
Ez az SQL Server-összekötő a következő képességeket támogatja:
Támogatott képességek | IR |
---|---|
Copy tevékenység (forrás/fogadó) | (1) (2) |
Adatfolyam leképezése (forrás/fogadó) | (1) |
Keresési tevékenység | (1) (2) |
GetMetadata-tevékenység | (1) (2) |
Szkripttevékenység | (1) (2) |
Tárolt eljárástevékenység | (1) (2) |
(1) Azure-integrációs modul (2) Saját üzemeltetésű integrációs modul
A másolási tevékenység által forrásként vagy fogadóként támogatott adattárak listáját a Támogatott adattárak táblában találja.
Ez az SQL Server-összekötő a következőket támogatja:
- Az SQL Server 2005-ös vagy újabb verziója.
- Adatok másolása SQL- vagy Windows-hitelesítéssel.
- Forrásként az adatok lekérése SQL-lekérdezéssel vagy tárolt eljárással. Az SQL Server-forrásból történő párhuzamos másolást is választhatja, a részletekért tekintse meg az SQL Database párhuzamos példányát ismertető szakaszt.
- Fogadóként automatikusan hozzon létre céltáblát, ha nem létezik a forrásséma alapján; adatok hozzáfűzése egy táblához, vagy tárolt eljárás meghívása egyéni logikával a másolás során.
Az SQL Server Express LocalDB nem támogatott.
Fontos
Az adatforrásnak támogatnia kell az NVARCHAR adattípust, mivel az hatással van az adatkódolásra, amikor nem univerzális kódolást alkalmaz az adatokra.
Előfeltételek
Ha az adattár helyszíni hálózaton, Azure-beli virtuális hálózaton vagy Amazon Virtual Private Cloudon belül található, konfigurálnia kell egy saját üzemeltetésű integrációs modult a csatlakozáshoz.
Ha az adattár felügyelt felhőalapú adatszolgáltatás, használhatja az Azure Integration Runtime-ot. Ha a hozzáférés a tűzfalszabályokban jóváhagyott IP-címekre korlátozódik, hozzáadhat azure integration runtime IP-eket az engedélyezési listához.
Az Azure Data Factory felügyelt virtuális hálózati integrációs moduljával is elérheti a helyszíni hálózatot anélkül, hogy saját üzemeltetésű integrációs modult telepítene és konfigurálna.
A Data Factory által támogatott hálózati biztonsági mechanizmusokkal és lehetőségekkel kapcsolatos további információkért lásd az adathozzáférési stratégiákat.
Első lépések
A Copy tevékenység folyamattal való végrehajtásához használja az alábbi eszközök vagy SDK-k egyikét:
- Az Adatok másolása eszköz
- Az Azure Portal
- A .NET SDK
- A Python SDK
- Azure PowerShell
- A REST API
- Az Azure Resource Manager-sablon
SQL Server társított szolgáltatás létrehozása felhasználói felülettel
Az alábbi lépésekkel sql serverrel társított szolgáltatást hozhat létre az Azure Portal felhasználói felületén.
Keresse meg az Azure Data Factory vagy a Synapse-munkaterület Kezelés lapját, és válassza a Társított szolgáltatások lehetőséget, majd kattintson az Új gombra:
Keresse meg az SQL-t, és válassza ki az SQL Server-összekötőt.
Konfigurálja a szolgáltatás részleteit, tesztelje a kapcsolatot, és hozza létre az új társított szolgáltatást.
Az összekötő konfigurációjának részletei
A következő szakaszok az SQL Server-adatbázis-összekötőre jellemző Data Factory- és Synapse-folyamatentitások definiálásához használt tulajdonságok részleteit ismertetik.
Társított szolgáltatás tulajdonságai
Az SQL Server ajánlott verziója támogatja a TLS 1.3-at. Ebben a szakaszban frissítheti az SQL Server társított szolgáltatását, ha örökölt verziót használ. A tulajdonság részleteiért tekintse meg a megfelelő szakaszokat.
Tipp.
Ha a "UserErrorFailedToConnectToSqlServer" hibakóddal és egy "Az adatbázis munkamenetkorlátja XXX, és elérte" hibaüzenetet kapott, adja hozzá Pooling=false
a kapcsolati sztring, és próbálkozzon újra.
Ajánlott verzió
Az ajánlott verzió alkalmazásakor ezek az általános tulajdonságok támogatottak az SQL Server társított szolgáltatásai esetében:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A típustulajdonságot SqlServerre kell állítani. | Igen |
kiszolgáló | Annak az SQL Server-példánynak a neve vagy hálózati címe, amelyhez csatlakozni szeretne. | Igen |
adatbázis | Az adatbázis neve. | Igen |
authenticationType | A hitelesítéshez használt típus. Az engedélyezett értékek az SQL (alapértelmezett), a Windows és a UserAssignedManagedIdentity (csak azure-beli virtuális gépeken futó SQL Server esetén). Lépjen az adott tulajdonságokra és előfeltételekre vonatkozó hitelesítési szakaszra. | Igen |
alwaysEncryptedSettings | Adja meg az Always Encrypted engedélyezéséhez szükséges Alwaysencryptedsettings-adatokat , amelyek felügyelt identitással vagy szolgáltatásnévvel védik az SQL Serveren tárolt bizalmas adatokat. További információ: A táblázatot és az Always Encrypted használata szakaszt követő JSON-példa. Ha nincs megadva, az alapértelmezett mindig titkosított beállítás le van tiltva. | Nem |
encrypt | Adja meg, hogy szükség van-e TLS-titkosításra az ügyfél és a kiszolgáló között küldött összes adathoz. Beállítások: kötelező (igaz, alapértelmezett)/nem kötelező (hamis esetén)/szigorú. | Nem |
trustServerCertificate | Adja meg, hogy a csatorna titkosítva lesz-e a tanúsítványlánc megkerülése közben a megbízhatóság ellenőrzéséhez. | Nem |
hostNameInCertificate | A kapcsolat kiszolgálótanúsítványának ellenőrzésekor használandó állomásnév. Ha nincs megadva, a rendszer a kiszolgáló nevét használja a tanúsítvány érvényesítéséhez. | Nem |
connectVia | Ez az integrációs modul az adattárhoz való csatlakozásra szolgál. További információ az Előfeltételek szakaszból. Ha nincs megadva, a rendszer az alapértelmezett Azure-integrációs modult használja. | Nem |
További kapcsolati tulajdonságokért tekintse meg az alábbi táblázatot:
Tulajdonság | Leírás | Kötelező |
---|---|---|
applicationIntent | Az alkalmazás számítási feladatainak típusa kiszolgálóhoz való csatlakozáskor. Az engedélyezett értékek és ReadWrite a ReadOnly . |
Nem |
connectTimeout | A kiszolgálóval való kapcsolat várakozási ideje (másodpercben), mielőtt megszakítja a kísérletet, és hibát okozna. | Nem |
connectRetryCount | Az inaktív kapcsolati hiba azonosítása után megkísérelt újracsatlakozások száma. Az értéknek 0 és 255 közötti egész számnak kell lennie. | Nem |
connectRetryInterval | Az inaktív kapcsolati hiba azonosítása után az egyes újracsatlakozási kísérletek között eltelt idő (másodpercben). Az értéknek 1 és 60 közötti egész számnak kell lennie. | Nem |
loadBalanceTimeout | A kapcsolat minimális időtartama (másodpercben) ahhoz, hogy a kapcsolat a kapcsolat megszakadása előtt a kapcsolatkészletben éljen. | Nem |
commandTimeout | Az alapértelmezett várakozási idő (másodpercben), mielőtt befejezi a parancs végrehajtására tett kísérletet, és hibát okozna. | Nem |
integratedSecurity | Az engedélyezett értékek a következők: true vagy false . A beállításnál adja meg false , hogy a felhasználónév és a jelszó meg van-e adva a kapcsolatban. A beállításnál true azt jelzi, hogy a rendszer az aktuális Windows-fiók hitelesítő adatait használja-e a hitelesítéshez. |
Nem |
feladatátvételi partner | Annak a partnerkiszolgálónak a neve vagy címe, amelyhez csatlakozni szeretne, ha az elsődleges kiszolgáló nem működik. | Nem |
maxPoolSize | Az adott kapcsolat kapcsolatkészletében engedélyezett kapcsolatok maximális száma. | Nem |
minPoolSize | Az adott kapcsolat kapcsolatkészletében engedélyezett kapcsolatok minimális száma. | Nem |
multipleActiveResultSets | Az engedélyezett értékek a következők: true vagy false . Ha megadja true , egy alkalmazás több aktív eredményhalmazt (MARS) is képes fenntartani. Ha megadja false , az alkalmazásnak egy kötegből kell feldolgoznia vagy megszakítania az összes eredményhalmazt, mielőtt bármilyen más köteget végrehajthat az adott kapcsolaton. |
Nem |
multiSubnetFailover | Az engedélyezett értékek a következők: true vagy false . Ha az alkalmazás egy AlwaysOn rendelkezésre állási csoporthoz (AG) csatlakozik különböző alhálózatokon, a tulajdonság true beállítása gyorsabb észlelést és kapcsolatot biztosít az aktuálisan aktív kiszolgálóval. |
Nem |
packetSize | A kiszolgálópéldányokkal való kommunikációhoz használt hálózati csomagok bájtban megadott mérete. | Nem |
Készletezés | Az engedélyezett értékek a következők: true vagy false . Amikor megadja true , a rendszer készletbe fogja állítani a kapcsolatot. Amikor megadja a kapcsolatot false , a rendszer minden alkalommal explicit módon megnyitja a kapcsolatot, amikor a kapcsolatot kéri. |
Nem |
SQL-hitelesítés
Az SQL-hitelesítés használatához az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
Felhasználónév | A kiszolgálóhoz való csatlakozáskor használandó felhasználónév. | Igen |
jelszó | A felhasználónév jelszava. Jelölje meg ezt a mezőt SecureStringként a biztonságos tároláshoz. Hivatkozhat az Azure Key Vaultban tárolt titkos kódokra is. | Nem |
Példa: SQL-hitelesítés használata
{
"name": "SqlServerLinkedService",
"properties": {
"type": "SqlServer",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "SQL",
"userName": "<user name>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Példa: SQL-hitelesítés használata jelszóval az Azure Key Vaultban
{
"name": "SqlServerLinkedService",
"properties": {
"type": "SqlServer",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "SQL",
"userName": "<user name>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Példa: Always Encrypted használata
{
"name": "SqlServerLinkedService",
"properties": {
"type": "SqlServer",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "SQL",
"userName": "<user name>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"alwaysEncryptedSettings": {
"alwaysEncryptedAkvAuthType": "ServicePrincipal",
"servicePrincipalId": "<service principal id>",
"servicePrincipalKey": {
"type": "SecureString",
"value": "<service principal key>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Windows-hitelesítés
A Windows-hitelesítés használatához az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
Felhasználónév | Adjon meg egy felhasználónevet. Ilyen például a tartománynév\felhasználónév. | Igen |
jelszó | Adja meg a felhasználónévhez megadott felhasználói fiók jelszavát. Jelölje meg ezt a mezőt SecureStringként a biztonságos tároláshoz. Hivatkozhat az Azure Key Vaultban tárolt titkos kódokra is. | Igen |
Feljegyzés
Az adatfolyam nem támogatja a Windows-hitelesítést.
Példa: Windows-hitelesítés használata
{
"name": "SqlServerLinkedService",
"properties": {
"type": "SqlServer",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "Windows",
"userName": "<domain\\username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Példa: Windows-hitelesítés használata jelszóval az Azure Key Vaultban
{
"name": "SqlServerLinkedService",
"properties": {
"annotations": [],
"type": "SqlServer",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "Windows",
"userName": "<domain\\username>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Felhasználó által hozzárendelt felügyelt identitás hitelesítése
Feljegyzés
A felhasználó által hozzárendelt felügyelt identitás hitelesítése csak az Azure-beli virtuális gépeken futó SQL Serverre vonatkozik.
Egy adat-előállító vagy Synapse-munkaterület társítható felhasználó által hozzárendelt felügyelt identitásokkal, amelyek a szolgáltatást képviselik az Azure más erőforrásaihoz való hitelesítéskor. Ezt a felügyelt identitást azure-beli virtuális gépeken futó SQL Serverhez használhatja . A kijelölt gyár vagy Synapse-munkaterület ezzel az identitással férhet hozzá és másolhat adatokat az adatbázisból vagy az adatbázisba.
A felhasználó által hozzárendelt felügyelt identitáshitelesítés használatához az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
hitelesítő adatok | Adja meg a felhasználó által hozzárendelt felügyelt identitást hitelesítő objektumként. | Igen |
Az alábbi lépéseket is követnie kell:
Adjon engedélyeket a felhasználó által hozzárendelt felügyelt identitásnak.
Engedélyezze a Microsoft Entra-hitelesítést az Azure-beli virtuális gépeken futó SQL Serveren.
Tartalmazott adatbázis-felhasználók létrehozása a felhasználó által hozzárendelt felügyelt identitáshoz. Csatlakozzon ahhoz az adatbázishoz, amelyből adatokat szeretne másolni az SQL Server Management Studióhoz hasonló eszközökkel, és olyan Microsoft Entra-identitással rendelkezik, amely rendelkezik legalább ALTER ANY FELHASZNÁLÓI engedéllyel. Futtassa a következő T-SQL-t:
CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
Hozzon létre egy vagy több felhasználó által hozzárendelt felügyelt identitást , és adja meg a felhasználó által hozzárendelt felügyelt identitásnak a szükséges engedélyeket, ahogyan azt az SQL-felhasználók és mások esetében általában teszi. Futtassa a következő kódot. További lehetőségekért tekintse meg ezt a dokumentumot.
ALTER ROLE [role name] ADD MEMBER [your_resource_name];
Rendeljen hozzá egy vagy több felhasználó által hozzárendelt felügyelt identitást az adat-előállítóhoz, és hozzon létre hitelesítő adatokat minden felhasználó által hozzárendelt felügyelt identitáshoz.
SQL Serverhez társított szolgáltatás konfigurálása.
Példa
{
"name": "SqlServerLinkedService",
"properties": {
"type": "SqlServer",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "UserAssignedManagedIdentity",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Örökölt verzió
Ezeket az általános tulajdonságokat az SQL Server társított szolgáltatásai támogatják az örökölt verzió alkalmazásakor:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A típustulajdonságot SqlServerre kell állítani. | Igen |
alwaysEncryptedSettings | Adja meg az Always Encrypted engedélyezéséhez szükséges Alwaysencryptedsettings-adatokat , amelyek felügyelt identitással vagy szolgáltatásnévvel védik az SQL Serveren tárolt bizalmas adatokat. További információ: Az Always Encrypted használata szakasz. Ha nincs megadva, az alapértelmezett mindig titkosított beállítás le van tiltva. | Nem |
connectVia | Ez az integrációs modul az adattárhoz való csatlakozásra szolgál. További információ az Előfeltételek szakaszból. Ha nincs megadva, a rendszer az alapértelmezett Azure-integrációs modult használja. | Nem |
Ez az SQL Server-összekötő a következő hitelesítési típusokat támogatja. Részletekért tekintse meg a megfelelő szakaszokat.
SQL-hitelesítés az örökölt verzióhoz
Az SQL-hitelesítés használatához az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
connectionString | Adja meg az SQL Server-adatbázishoz való csatlakozáshoz szükséges connectionString-adatokat . Adja meg a felhasználónévként a bejelentkezési nevet, és győződjön meg arról, hogy a csatlakozni kívánt adatbázis megfeleltetve van ehhez a bejelentkezéshez. | Igen |
jelszó | Ha jelszót szeretne elhelyezni az Azure Key Vaultban, húzza ki a konfigurációt password a kapcsolati sztring. További információ: Hitelesítő adatok tárolása az Azure Key Vaultban. |
Nem |
Windows-hitelesítés az örökölt verzióhoz
A Windows-hitelesítés használatához az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:
Tulajdonság | Leírás | Kötelező |
---|---|---|
connectionString | Adja meg az SQL Server-adatbázishoz való csatlakozáshoz szükséges connectionString-adatokat . | Igen |
Felhasználónév | Adjon meg egy felhasználónevet. Ilyen például a tartománynév\felhasználónév. | Igen |
jelszó | Adja meg a felhasználónévhez megadott felhasználói fiók jelszavát. Jelölje meg ezt a mezőt SecureStringként a biztonságos tároláshoz. Hivatkozhat az Azure Key Vaultban tárolt titkos kódokra is. | Igen |
Adathalmaz tulajdonságai
Az adathalmazok meghatározásához elérhető szakaszok és tulajdonságok teljes listáját az adathalmazokról szóló cikkben találja. Ez a szakasz az SQL Server-adatkészlet által támogatott tulajdonságok listáját tartalmazza.
Ha adatokat szeretne másolni egy SQL Server-adatbázisból és az adatbázisba, az alábbi tulajdonságok támogatottak:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | Az adathalmaz típustulajdonságának SqlServerTable értékre kell állítania. | Igen |
schema | A séma neve. | Nem a forráshoz, igen a fogadóhoz |
table | A tábla/nézet neve. | Nem a forráshoz, igen a fogadóhoz |
tableName | A táblázat/nézet neve sémával. Ez a tulajdonság támogatja a visszamenőleges kompatibilitást. Új számítási feladatokhoz használja schema és table . |
Nem a forráshoz, igen a fogadóhoz |
Példa
{
"name": "SQLServerDataset",
"properties":
{
"type": "SqlServerTable",
"linkedServiceName": {
"referenceName": "<SQL Server linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"typeProperties": {
"schema": "<schema_name>",
"table": "<table_name>"
}
}
}
Másolási tevékenység tulajdonságai
A tevékenységek definiálásához használható szakaszok és tulajdonságok teljes listáját a Folyamatok című cikkben találja. Ez a szakasz az SQL Server-forrás és -fogadó által támogatott tulajdonságok listáját tartalmazza.
SQL Server mint forrás
Tipp.
Ha hatékonyan szeretne adatokat betölteni az SQL Serverről adatparticionálással, további információt az SQL Database párhuzamos másolásáról tudhat meg.
Ha adatokat szeretne másolni az SQL Serverről, állítsa be a másolási tevékenység forrástípusát az SqlSource-ra. A másolási tevékenység forrás szakaszában a következő tulajdonságok támogatottak:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A másolási tevékenység forrásának típustulajdonságát SqlSource-ra kell állítani. | Igen |
sqlReaderQuery | Az adatok olvasásához használja az egyéni SQL-lekérdezést. Például: select * from MyTable . |
Nem |
sqlReaderStoredProcedureName | Ez a tulajdonság annak a tárolt eljárásnak a neve, amely adatokat olvas be a forrástáblából. Az utolsó SQL-utasításnak SELECT utasításnak kell lennie a tárolt eljárásban. | Nem |
storedProcedureParameters | Ezek a paraméterek a tárolt eljáráshoz tartoznak. Az engedélyezett értékek név- vagy értékpárok. A paraméterek nevének és burkolatának meg kell egyeznie a tárolt eljárásparaméterek nevével és burkolatával. |
Nem |
isolationLevel | Az SQL-forrás tranzakciózárolási viselkedését adja meg. Az engedélyezett értékek a következők: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Ha nincs megadva, a rendszer az adatbázis alapértelmezett elkülönítési szintjét használja. További részletekért tekintse meg ezt a dokumentumot. | Nem |
partitionOptions | Megadja az SQL Serverről történő adatok betöltéséhez használt adatparticionálási beállításokat. Az engedélyezett értékek a következők: Nincs (alapértelmezett), PhysicalPartitionsOfTable és DynamicRange. Ha egy partíciós beállítás engedélyezve van (vagyis nem None ), az SQL Serverről egyidejűleg betöltendő adatok párhuzamossági fokát a parallelCopies másolási tevékenység beállításai vezérlik. |
Nem |
partitionSettings | Adja meg az adatparticionálás beállításainak csoportját. Akkor alkalmazható, ha a partíciós beállítás nem None . |
Nem |
A következő alatt partitionSettings : |
||
partitionColumnName | Adja meg annak a forrásoszlopnak a nevét egész számban vagy dátum/dátum/idő típusban (int , , smallint , bigint , date smalldatetime , datetime , , datetime2 ) , datetimeoffset amelyet a tartomány particionálása használ a párhuzamos másoláshoz. Ha nincs megadva, a rendszer automatikusan észleli és partícióoszlopként használja a tábla indexét vagy elsődleges kulcsát.Akkor alkalmazható, ha a partíció beállítás. DynamicRange Ha lekérdezést használ a forrásadatok lekéréséhez, a WHERE záradékban kapcsoljon ?DfDynamicRangePartitionCondition be. Példaként tekintse meg az SQL Database párhuzamos másolatát. |
Nem |
partitionUpperBound | A partíciótartományok felosztásához használt partícióoszlop maximális értéke. Ez az érték határozza meg a partíciós léptetést, nem pedig a tábla sorainak szűrésére. A tábla vagy lekérdezés eredményének összes sora particionálásra és másolásra kerül. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értéket. Akkor alkalmazható, ha a partíció beállítás. DynamicRange Példaként tekintse meg az SQL Database párhuzamos másolatát. |
Nem |
partitionLowerBound | A partíciótartományok felosztásához használt partícióoszlop minimális értéke. Ez az érték határozza meg a partíciós léptetést, nem pedig a tábla sorainak szűrésére. A tábla vagy lekérdezés eredményének összes sora particionálásra és másolásra kerül. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értéket. Akkor alkalmazható, ha a partíció beállítás. DynamicRange Példaként tekintse meg az SQL Database párhuzamos másolatát. |
Nem |
Vegye figyelembe a következő szempontokat:
- Ha sqlReaderQuery van megadva az SqlSource-hoz, a másolási tevékenység ezt a lekérdezést az SQL Server-forráson futtatja az adatok lekéréséhez. Tárolt eljárást is megadhat az sqlReaderStoredProcedureName és a storedProcedureParameters megadásával, ha a tárolt eljárás paramétereket vesz fel.
- Ha tárolt eljárást használ a forrásban az adatok lekéréséhez, vegye figyelembe, hogy a tárolt eljárás más sémát ad vissza, amikor különböző paraméterértéket ad át, akkor előfordulhat, hogy a séma felhasználói felületről történő importálásakor vagy az adatok sql-adatbázisba való automatikus létrehozásakor hiba vagy váratlan eredmény jelenik meg.
Példa: SQL-lekérdezés használata
"activities":[
{
"name": "CopyFromSQLServer",
"type": "Copy",
"inputs": [
{
"referenceName": "<SQL Server input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlSource",
"sqlReaderQuery": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Példa: Tárolt eljárás használata
"activities":[
{
"name": "CopyFromSQLServer",
"type": "Copy",
"inputs": [
{
"referenceName": "<SQL Server input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlSource",
"sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
"storedProcedureParameters": {
"stringData": { "value": "str3" },
"identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
A tárolt eljárás definíciója
CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
@stringData varchar(20),
@identifier int
)
AS
SET NOCOUNT ON;
BEGIN
select *
from dbo.UnitTestSrcTable
where dbo.UnitTestSrcTable.stringData != stringData
and dbo.UnitTestSrcTable.identifier != identifier
END
GO
SQL Server fogadóként
Tipp.
További információ az SQL Serverbe való adatbetöltés ajánlott eljárásainak támogatott írási viselkedéseiről, konfigurációiról és ajánlott eljárásairól.
Ha adatokat szeretne az SQL Serverre másolni, állítsa a másolási tevékenység fogadótípusát az SqlSinkre. A másolási tevékenység fogadó szakasza a következő tulajdonságokat támogatja:
Tulajdonság | Leírás | Kötelező |
---|---|---|
típus | A másolási tevékenység fogadójának típustulajdonságát SqlSink értékre kell állítani. | Igen |
preCopyScript | Ez a tulajdonság egy SQL-lekérdezést ad meg a másolási tevékenység futtatásához, mielőtt adatokat írna az SQL Serverbe. Másolási futtatásonként csak egyszer lesz meghívva. Ezzel a tulajdonságkal törölheti az előre betöltött adatokat. | Nem |
tableOption | Megadja, hogy automatikusan létre kívánja-e hozni a fogadótáblát , ha nem létezik a forrásséma alapján. Az automatikus táblalétrehozás nem támogatott, ha a fogadó a tárolt eljárást határozza meg. Az engedélyezett értékek a következők: none (alapértelmezett), autoCreate . |
Nem |
sqlWriterStoredProcedureName | A tárolt eljárás neve, amely meghatározza a forrásadatok céltáblába való alkalmazását. Ezt a tárolt eljárást kötegenként hívja meg a rendszer. Olyan műveletek esetén, amelyek csak egyszer futnak, és nincs köze a forrásadatokhoz, például törléshez vagy csonkolási műveletekhez, használja a tulajdonságot preCopyScript .Tekintse meg az SQL-fogadó tárolt eljárásának meghívására vonatkozó példát. |
Nem |
storedProcedureTableTypeParameterName | A tárolt eljárásban megadott táblatípus paraméterneve. | Nem |
sqlWriterTableType | A tárolt eljárásban használandó táblatípus neve. A másolási tevékenység elérhetővé teszi az áthelyezett adatokat egy ilyen típusú ideiglenes táblában. A tárolt eljáráskód ezután egyesítheti a másolt adatokat a meglévő adatokkal. | Nem |
storedProcedureParameters | A tárolt eljárás paraméterei. Az engedélyezett értékek név- és értékpárok. A paraméterek nevének és burkolatának meg kell egyeznie a tárolt eljárásparaméterek nevével és burkolatával. |
Nem |
writeBatchSize | Az SQL-táblába kötegenként beszúrandó sorok száma. Az engedélyezett értékek a sorok számának egész száma. Alapértelmezés szerint a szolgáltatás dinamikusan határozza meg a megfelelő kötegméretet a sorméret alapján. |
Nem |
writeBatchTimeout | A beszúrási, upsert- és tárolt eljárásművelet befejezésének várakozási ideje, mielőtt túllépi az időkorlátot. Az engedélyezett értékek az időbélyeghez tartoznak. Ilyen például a "00:30:00" 30 percig. Ha nincs megadva érték, az időtúllépés alapértelmezés szerint "00:30:00". |
Nem |
maxConcurrentConnections | Az adattárhoz a tevékenység futtatása során létrehozott egyidejű kapcsolatok felső korlátja. Csak akkor adjon meg értéket, ha korlátozni szeretné az egyidejű kapcsolatokat. | Nem |
WriteBehavior | Adja meg az adatok SQL Server Database-be való betöltéséhez szükséges másolási tevékenység írási viselkedését. Az engedélyezett érték a Beszúrás és az Upsert. Alapértelmezés szerint a szolgáltatás beszúrással tölti be az adatokat. |
Nem |
upsertSettings | Adja meg az írási viselkedés beállításainak csoportját. Alkalmazza, ha a WriteBehavior beállítás a következő Upsert : . |
Nem |
A következő alatt upsertSettings : |
||
useTempDB | Adja meg, hogy a globális ideiglenes táblát vagy a fizikai táblát használja-e köztes táblaként az upserthez. Alapértelmezés szerint a szolgáltatás globális ideiglenes táblát használ köztes táblaként. értéke . true |
Nem |
interimSchemaName | Adja meg a köztes sémát a köztes tábla létrehozásához fizikai tábla használata esetén. Megjegyzés: a felhasználónak rendelkeznie kell a tábla létrehozására és törlésére vonatkozó engedéllyel. Alapértelmezés szerint a köztes tábla ugyanazt a sémát fogja megosztani, mint a fogadó táblát. Akkor alkalmazható, ha a useTempDB beállítás a False következő: . |
Nem |
keys | Adja meg az egyedi sorazonosítás oszlopnevét. Egy vagy több kulcs használható. Ha nincs megadva, a rendszer az elsődleges kulcsot használja. | Nem |
1. példa: Adatok hozzáfűzése
"activities":[
{
"name": "CopyToSQLServer",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<SQL Server output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SqlSink",
"tableOption": "autoCreate",
"writeBatchSize": 100000
}
}
}
]
2. példa: Tárolt eljárás meghívása másolás közben
További információ az SQL-fogadó tárolt eljárásának meghívásáról.
"activities":[
{
"name": "CopyToSQLServer",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<SQL Server output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SqlSink",
"sqlWriterStoredProcedureName": "CopyTestStoredProcedureWithParameters",
"storedProcedureTableTypeParameterName": "MyTable",
"sqlWriterTableType": "MyTableType",
"storedProcedureParameters": {
"identifier": { "value": "1", "type": "Int" },
"stringData": { "value": "str1" }
}
}
}
}
]
3. példa: Upsert data
"activities":[
{
"name": "CopyToSQLServer",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<SQL Server output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SqlSink",
"tableOption": "autoCreate",
"writeBehavior": "upsert",
"upsertSettings": {
"useTempDB": true,
"keys": [
"<column name>"
]
},
}
}
}
]
Párhuzamos másolás AZ SQL Database-ből
A másolási tevékenység SQL Server-összekötője beépített adatparticionálást biztosít az adatok párhuzamos másolásához. Az adatparticionálási beállításokat a másolási tevékenység Forrás lapján találja.
Ha engedélyezi a particionált másolást, a másolási tevékenység párhuzamos lekérdezéseket futtat az SQL Server-forráson az adatok partíciók szerinti betöltéséhez. A párhuzamos fokot a másolási parallelCopies
tevékenység beállításai vezérlik. Ha például négyre van állítva parallelCopies
, a szolgáltatás egyszerre generál és futtat négy lekérdezést a megadott partícióbeállítás és -beállítások alapján, és mindegyik lekérdezés lekéri az adatok egy részét az SQL Serverről.
Javasoljuk, hogy engedélyezze a párhuzamos másolást adatparticionálással, különösen akkor, ha nagy mennyiségű adatot tölt be az SQL Serverről. A következő javasolt konfigurációk különböző forgatókönyvekhez. Ha fájlalapú adattárba másol adatokat, ajánlott több fájlként írni egy mappába (csak a mappa nevét kell megadni), ebben az esetben a teljesítmény jobb, mint egyetlen fájlba írni.
Eset | Javasolt beállítások |
---|---|
Teljes terhelés nagy táblából, fizikai partíciókkal. | Partíciós beállítás: A tábla fizikai partíciói. A végrehajtás során a szolgáltatás automatikusan észleli a fizikai partíciókat, és partíciók alapján másolja az adatokat. Ha ellenőrizni szeretné, hogy a tábla rendelkezik-e fizikai partícióval, tekintse meg ezt a lekérdezést. |
Teljes terhelés nagy táblából fizikai partíciók nélkül, egész számmal vagy datetime oszlopmal az adatparticionáláshoz. | Partícióbeállítások: Dinamikus tartomány partíciója. Partícióoszlop (nem kötelező): Adja meg az adatok particionálásához használt oszlopot. Ha nincs megadva, a rendszer az elsődleges kulcs oszlopát használja. A partíció felső határa és a partíció alsó határa (nem kötelező): Adja meg, hogy meg szeretné-e határozni a partíciós lépést. Ez nem a táblázat sorainak szűrésére, hanem a tábla összes sorának particionálása és másolása történik. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értékeket, és a MIN és a MAX értékektől függően hosszú időt vehet igénybe. Javasoljuk, hogy felső és alsó határt adjon meg. Ha például az "ID" partícióoszlop értéke 1 és 100 között van, és az alsó kötést 20-ra, a felső kötést pedig 80-ra állítja be, a párhuzamos másolás 4-zel történik, a szolgáltatás 4 partícióval kéri le az adatokat – azonosítók az =20, [21, 50], [51, 80] és >=81 tartományban<. |
Nagy mennyiségű adat betöltése egyéni lekérdezéssel fizikai partíciók nélkül, az adatparticionáláshoz pedig egész számmal vagy dátum/dátum/idő oszlopmal. | Partícióbeállítások: Dinamikus tartomány partíciója. Lekérdezés: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> .Partícióoszlop: Adja meg az adatok particionálásához használt oszlopot. A partíció felső határa és a partíció alsó határa (nem kötelező): Adja meg, hogy meg szeretné-e határozni a partíciós lépést. Ez nem a tábla sorainak szűrésére használható, a lekérdezés eredményének összes sora particionálásra és másolásra kerül. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értéket. Ha például az "ID" partícióoszlop értéke 1 és 100 között van, és az alsó kötést 20-ra, a felső kötést pedig 80-ra állítja be, a párhuzamos másolás 4-zel, akkor a szolgáltatás 4 partícióazonosítóval kéri le az adatokat az =20, [21, 50], [51, 80] és >=81 tartományban<. Az alábbiakban további minta lekérdezéseket talál a különböző forgatókönyvekhez: 1. A teljes tábla lekérdezése: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition 2. Lekérdezés oszlopkijelöléssel és további where-clause szűrőkkel rendelkező táblából: SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> 3. Lekérdezés al lekérdezésekkel: SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> 4. Lekérdezés a partícióval az alkérdezésben: SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T |
Ajánlott eljárások az adatok partíciós beállítással való betöltéséhez:
- Válassza a megkülönböztető oszlopot partícióoszlopként (például elsődleges kulcs vagy egyedi kulcs) az adateltérés elkerülése érdekében.
- Ha a tábla beépített partícióval rendelkezik, a jobb teljesítmény érdekében használja a "Tábla fizikai partíciói" partícióbeállítást.
- Ha az Azure Integration Runtime-t használja az adatok másolásához, nagyobb "adatintegráció egységeket (DIU)" (>4) állíthat be a nagyobb számítási erőforrások használatához. Ellenőrizze a vonatkozó forgatókönyveket.
- A "másolási párhuzamosság foka" szabályozza a partíciószámokat, a túl nagy szám beállítása néha rontja a teljesítményt, javasoljuk, hogy állítsa be ezt a számot (DIU vagy a saját üzemeltetésű INTEGRÁCIÓs csomópontok száma) * (2–4).
Példa: teljes terhelés nagy táblából fizikai partíciókkal
"source": {
"type": "SqlSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
Példa: lekérdezés dinamikus tartománypartícióval
"source": {
"type": "SqlSource",
"query": "SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>",
"partitionOption": "DynamicRange",
"partitionSettings": {
"partitionColumnName": "<partition_column_name>",
"partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
"partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
}
}
Minta lekérdezés a fizikai partíció ellenőrzéséhez
SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, pf.name AS PartitionFunctionName, c.name AS ColumnName, iif(pf.name is null, 'no', 'yes') AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id
LEFT JOIN sys.partition_functions pf ON pf.function_id = ps.function_id
WHERE s.name='[your schema]' AND t.name = '[your table name]'
Ha a tábla fizikai partícióval rendelkezik, a "HasPartition" az alábbihoz hasonlóan "igen" értékként jelenik meg.
Ajánlott eljárás adatok SQL Serverbe való betöltéséhez
Ha adatokat másol az SQL Serverre, előfordulhat, hogy eltérő írási viselkedésre van szükség:
- Hozzáfűzés: A forrásadatok csak új rekordokat tartalmaznak.
- Upsert: A forrásadatok beszúrásokkal és frissítésekkel is rendelkeznek.
- Felülírás: Minden alkalommal újra szeretném betölteni a teljes dimenziótáblát.
- Írás egyéni logikával: További feldolgozásra van szükségem a végső beszúrás előtt a céltáblába.
A konfiguráláshoz és az ajánlott eljárásokhoz tekintse meg a megfelelő szakaszokat.
Adatok hozzáfűzése
Az SQL Server fogadó összekötőjének alapértelmezett viselkedése az adatok hozzáfűzése. A szolgáltatás tömeges beszúrással hatékonyan ír a táblába. Ennek megfelelően konfigurálhatja a forrást és a fogadót a másolási tevékenységben.
Adatok beszúrása és frissítése (upsert)
Copy tevékenység mostantól támogatja az adatok natív betöltését egy adatbázis ideiglenes táblájába, majd frissíti a fogadó táblában lévő adatokat, ha van kulcs, és egyéb módon szúrjon be új adatokat. Ha többet szeretne megtudni a másolási tevékenységek upsert beállításairól, tekintse meg az SQL Server mint fogadót.
A teljes táblázat felülírása
A preCopyScript tulajdonságot a másolási tevékenység fogadójában konfigurálhatja. Ebben az esetben minden futtatott másolási tevékenységnél először a szolgáltatás futtatja a szkriptet. Ezután futtatja a másolatot az adatok beszúrásához. Ha például felül szeretné írni a teljes táblát a legújabb adatokkal, adjon meg egy szkriptet, amely először törli az összes rekordot, mielőtt tömegesen betöltené az új adatokat a forrásból.
Adatok írása egyéni logikával
Az adatok egyéni logikával történő írásának lépései hasonlóak az Upsert adatszakaszban leírtakhoz. Ha további feldolgozást kell alkalmaznia a forrásadatok céltáblába történő végleges beszúrása előtt, betölthet egy átmeneti táblába, majd meghívhatja a tárolt eljárástevékenységet, vagy meghívhat egy tárolt eljárást a másolási tevékenység fogadójában az adatok alkalmazásához.
Tárolt eljárás meghívása SQL-fogadóból
Amikor adatokat másol az SQL Server-adatbázisba, konfigurálhat és meghívhat egy felhasználó által megadott tárolt eljárást a forrástábla minden kötegén további paraméterekkel. A tárolt eljárás funkció kihasználja a táblaértékű paraméterek előnyeit. Vegye figyelembe, hogy a szolgáltatás automatikusan a saját tranzakciójában burkolja a tárolt eljárást, így a tárolt eljárásban létrehozott összes tranzakció beágyazott tranzakcióvá válik, és hatással lehet a kivételkezelésre.
Tárolt eljárást akkor használhat, ha a beépített másolási mechanizmusok nem szolgálják a célt. Ilyen például, ha a forrásadatok végső beszúrása előtt további feldolgozást szeretne alkalmazni a céltáblába. További feldolgozási példák az oszlopok egyesítése, további értékek keresése és több táblába való beszúrás.
Az alábbi minta bemutatja, hogyan használható tárolt eljárás egy upsert az SQL Server-adatbázis táblájába. Tegyük fel, hogy a bemeneti adatok és a fogadó marketingtáblája három oszlopból áll: ProfileID, State és Category. Végezze el az upsertet a ProfileID oszlop alapján, és csak a "ProductA" nevű adott kategóriára alkalmazza.
Az adatbázisban adja meg az sqlWriterTableType nevével megegyező nevű táblatípust. A táblatípus sémája megegyezik a bemeneti adatok által visszaadott sémával.
CREATE TYPE [dbo].[MarketingType] AS TABLE( [ProfileID] [varchar](256) NOT NULL, [State] [varchar](256) NOT NULL, [Category] [varchar](256) NOT NULL )
Az adatbázisban adja meg a tárolt eljárást az sqlWriterStoredProcedureName névvel megegyező néven. Kezeli a megadott forrásból származó bemeneti adatokat, és egyesül a kimeneti táblában. A tárolt eljárásban a táblatípus paraméterneve megegyezik az adathalmazban definiált TableName paraméternévvel .
CREATE PROCEDURE spOverwriteMarketing @Marketing [dbo].[MarketingType] READONLY, @category varchar(256) AS BEGIN MERGE [dbo].[Marketing] AS target USING @Marketing AS source ON (target.ProfileID = source.ProfileID and target.Category = @category) WHEN MATCHED THEN UPDATE SET State = source.State WHEN NOT MATCHED THEN INSERT (ProfileID, State, Category) VALUES (source.ProfileID, source.State, source.Category); END
A másolási tevékenység SQL-fogadó szakaszának meghatározása az alábbiak szerint:
"sink": { "type": "SqlSink", "sqlWriterStoredProcedureName": "spOverwriteMarketing", "storedProcedureTableTypeParameterName": "Marketing", "sqlWriterTableType": "MarketingType", "storedProcedureParameters": { "category": { "value": "ProductA" } } }
Adatfolyam-tulajdonságok leképezése
A leképezési adatfolyam adatainak átalakításakor az SQL Server Database-ből olvashat és írhat táblákba. További információkért tekintse meg a forrásátalakítást és a fogadóátalakítást a leképezési adatfolyamokban.
Feljegyzés
A helyszíni SQL Server eléréséhez az Azure Data Factoryt vagy a Synapse-munkaterület felügyelt virtuális hálózatát kell használnia egy privát végpont használatával. A részletes lépésekért tekintse meg ezt az oktatóanyagot .
Forrásátalakítás
Az alábbi táblázat az SQL Server-forrás által támogatott tulajdonságokat sorolja fel. Ezeket a tulajdonságokat a Forrás beállításai lapon szerkesztheti.
Név | Leírás | Kötelező | Megengedett értékek | Adatfolyam-szkript tulajdonság |
---|---|---|---|---|
Tábla | Ha bemenetként a Táblázat lehetőséget választja, az adatfolyam lekéri az adathalmazban megadott táblából az összes adatot. | Nem | - | - |
Lekérdezés | Ha bemenetként a Lekérdezés lehetőséget választja, adjon meg egy SQL-lekérdezést az adatok forrásból való lekéréséhez, amely felülírja az adathalmazban megadott táblázatokat. A lekérdezések használatával csökkenthetők a tesztelési és keresési sorok. Az Order By záradék nem támogatott, de megadhat egy teljes SELECT FROM utasítást. Felhasználó által definiált táblafüggvényeket is használhat. A *elemet az udfGetData() egy UDF az SQL-ben, amely egy olyan táblát ad vissza, amelyet az adatfolyamban használhat. Példa lekérdezésre: Select * from MyTable where customerId > 1000 and customerId < 2000 |
Nem | Sztring | Lekérdezés |
Köteg mérete | Adjon meg egy kötegméretet, amely nagy méretű adatokat olvas be. | Nem | Egész | batchSize |
Elkülönítési szint | Válasszon az alábbi elkülönítési szintek közül: - Lekötött olvasás – Nem véglegesített olvasás (alapértelmezett) - Ismételhető olvasás -Szerializálható - Nincs (az elkülönítési szint figyelmen kívül hagyása) |
Nem | READ_COMMITTED READ_UNCOMMITTED REPEATABLE_READ SZERIALIZÁLHATÓ NINCS |
isolationLevel |
Növekményes kivonat engedélyezése | Ezzel a beállítással az ADF-nek csak azokat a sorokat kell feldolgoznia, amelyek a folyamat legutóbbi végrehajtása óta megváltoztak. | Nem | - | - |
Növekményes dátum oszlop | A növekményes kinyerési funkció használatakor ki kell választania a forrástáblában vízjelként használni kívánt dátum/idő oszlopot. | Nem | - | - |
Natív módosítási adatrögzítés engedélyezése (előzetes verzió) | Ezzel a beállítással azt jelezheti az ADF-nek, hogy a folyamat legutóbbi végrehajtása óta csak az SQL-változási adatrögzítési technológia által rögzített változásadatokat dolgozza fel. Ezzel a beállítással a rendszer automatikusan betölti a deltaadatokat, beleértve a sor beszúrását, frissítését és törlését anélkül, hogy növekményes dátumoszlopra lenne szükség. A beállítás ADF-ben való használata előtt engedélyeznie kell a változásadat-rögzítést az SQL Serveren. Az ADF-ben elérhető beállítással kapcsolatos további információkért lásd a natív változásadatok rögzítését. | Nem | - | - |
Olvasás indítása az elejétől | Ha ezt a beállítást növekményes kivonattal állítja be, az ADF arra utasítja az ADF-t, hogy olvassa be az összes sort egy folyamat első végrehajtásakor, és be van kapcsolva a növekményes kivonat. | Nem | - | - |
Tipp.
Az SQL-ben használt közös táblakifejezés (CTE) nem támogatott a leképezési adatfolyam lekérdezési módjában, mivel ennek a módnak az előfeltétele, hogy a lekérdezések használhatók legyenek az SQL-lekérdezés FROM záradékában, de a CTE-k ezt nem tehetik meg. A CTE-k használatához létre kell hoznia egy tárolt eljárást a következő lekérdezéssel:
CREATE PROC CTESP @query nvarchar(max)
AS
BEGIN
EXECUTE sp_executesql @query;
END
Ezután használja a Tárolt eljárás módot a leképezési adatfolyam forrásátalakításában, és állítsa be a @query
hasonló példát with CTE as (select 'test' as a) select * from CTE
. Ezután használhatja a CT-eket a várt módon.
Példa SQL Server-forrásszkriptre
Ha az SQL Servert használja forrástípusként, a társított adatfolyam-szkript a következő:
source(allowSchemaDrift: true,
validateSchema: false,
isolationLevel: 'READ_UNCOMMITTED',
query: 'select * from MYTABLE',
format: 'query') ~> SQLSource
Fogadó átalakítása
Az alábbi táblázat az SQL Server-fogadó által támogatott tulajdonságokat sorolja fel. Ezeket a tulajdonságokat a Fogadó beállításai lapon szerkesztheti.
Név | Leírás | Kötelező | Megengedett értékek | Adatfolyam-szkript tulajdonság |
---|---|---|---|---|
Frissítési módszer | Adja meg, hogy milyen műveletek engedélyezettek az adatbázis célhelyén. Az alapértelmezett beállítás csak a beszúrások engedélyezése. A sorok frissítéséhez, frissítéséhez vagy törléséhez a sorok címkézéséhez alter sorátalakítás szükséges. |
Igen | true vagy false |
törölhető beszúrható frissíthető upsertable |
Kulcsoszlopok | Frissítések, upserts és deletes esetén a kulcsoszlop(ok) beállításához meg kell határozni, hogy melyik sort kell módosítani. A kulcsként megadott oszlopnevet a rendszer a következő frissítés, a frissítés, a törlés részeként fogja használni. Ezért ki kell választania egy olyan oszlopot, amely a fogadóleképezésben található. |
Nem | Tömb | keys |
Kulcsoszlopok írásának kihagyása | Ha nem szeretné az értéket a kulcsoszlopba írni, válassza a "Kulcsoszlopok írásának kihagyása" lehetőséget. | Nem | true vagy false |
skipKeyWrites |
Táblaművelet | Meghatározza, hogy az írás előtt újra létre kell-e hozni vagy eltávolítani az összes sort a céltáblából. - Nincs: A rendszer nem hajt végre műveletet a táblán. - Újra: A tábla elvetve és újra létrehozva lesz. Új tábla dinamikus létrehozása esetén kötelező. - Csonkolási: A céltábla összes sora el lesz távolítva. |
Nem | true vagy false |
újra előállít megcsonkít |
Köteg mérete | Adja meg, hogy hány sor legyen megírva az egyes kötegekben. A nagyobb kötegméretek javítják a tömörítést és a memóriaoptimalizálást, de az adatok gyorsítótárazásakor a memóriakivételek kiesnek. | Nem | Egész | batchSize |
SQL-szkriptek elő- és postálása | Adja meg azokat a többsoros SQL-szkripteket, amelyek a fogadó adatbázisba való írása előtt (előzetes feldolgozás) és (utófeldolgozás) után hajtanak végre. | Nem | Sztring | preSQLs postSQLs |
Tipp.
PÉLDA AZ SQL Server fogadószkriptje
Ha az SQL Servert fogadótípusként használja, a társított adatfolyam-szkript a következő:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:false,
insertable:true,
updateable:true,
upsertable:true,
keys:['keyColumn'],
format: 'table',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> SQLSink
Az SQL Server adattípus-leképezése
Amikor adatokat másol az SQL Serverről és az SQL Serverre, a rendszer az alábbi leképezéseket használja az SQL Server adattípusaiból az Azure Data Factory köztes adattípusaiba. A Data Factoryt implementáló Synapse-folyamatok ugyanazokat a leképezéseket használják. Ha tudni szeretné, hogy a másolási tevékenység hogyan képezi le a forrássémát és az adattípust a fogadóhoz, tekintse meg a séma- és adattípus-leképezéseket.
SQL Server-adattípus | A Data Factory köztes adattípusa |
---|---|
bigint | Int64 |
bináris | Bájt[] |
bit | Logikai |
bejárónő | Sztring, Karakter[] |
dátum: | Dátum/idő |
Datetime | Dátum/idő |
datetime2 | Dátum/idő |
Datetimeoffset | DateTimeOffset |
Decimális | Decimális |
FILESTREAM attribútum (varbinary(max)) | Bájt[] |
Lebegőpontos értékek | Dupla |
rendszerkép | Bájt[] |
egész | Int32 |
pénz | Decimális |
nchar | Sztring, Karakter[] |
ntext | Sztring, Karakter[] |
Numerikus | Decimális |
nvarchar | Sztring, Karakter[] |
valós szám | Egyszeres |
rowversion | Bájt[] |
smalldatetime | Dátum/idő |
smallint | Int16 |
smallmoney | Decimális |
sql_variant | Objektum |
text | Sztring, Karakter[] |
time | időtartam |
időbélyeg | Bájt[] |
tinyint | Int16 |
uniqueidentifier | GUID |
varbinary | Bájt[] |
varchar | Sztring, Karakter[] |
xml | Sztring |
Feljegyzés
A decimális köztes típusra leképezhető adattípusok esetében jelenleg Copy tevékenység legfeljebb 28 pontosságot támogat. Ha 28-nál nagyobb pontosságot igénylő adatokkal rendelkezik, fontolja meg az SQL-lekérdezések sztringgé alakítását.
Amikor adatokat másol az SQL Serverről az Azure Data Factory használatával, a bit adattípusa a logikai köztes adattípusra van leképezve. Ha olyan adatokkal rendelkezik, amelyeket bit adattípusként kell tárolni, használjon lekérdezéseket a T-SQL CAST vagy a CONVERT használatával.
Keresési tevékenység tulajdonságai
A tulajdonságok részleteinek megismeréséhez tekintse meg a keresési tevékenységet.
GetMetadata tevékenység tulajdonságai
A tulajdonságok részleteinek megismeréséhez ellenőrizze a GetMetadata-tevékenységet
Always Encrypted használata
Amikor az Always Encrypted használatával másol adatokat az SQL Serverről vagy az SQL Serverre, kövesse az alábbi lépéseket:
Tárolja az oszlop főkulcsát (CMK) egy Azure Key Vaultban. További információ az Always Encrypted Azure Key Vault használatával történő konfigurálásáról
Győződjön meg arról, hogy hozzáférést biztosít ahhoz a kulcstartóhoz, amelyben az oszlop főkulcsa (CMK) található. A szükséges engedélyekért tekintse meg ezt a cikket .
Hozzon létre társított szolgáltatást az SQL-adatbázishoz való csatlakozáshoz, és engedélyezze az "Always Encrypted" függvényt felügyelt identitás vagy szolgáltatásnév használatával.
Feljegyzés
Az SQL Server Always Encrypted az alábbi forgatókönyveket támogatja:
- A forrás- vagy fogadóadattárak a felügyelt identitást vagy a szolgáltatásnevet használják kulcsszolgáltatói hitelesítési típusként.
- A forrás- és fogadóadattárak is a felügyelt identitást használják kulcsszolgáltatói hitelesítési típusként.
- A forrás- és fogadóadattárak ugyanazt a szolgáltatásnevet használják, mint a kulcsszolgáltatói hitelesítés típusát.
Feljegyzés
Az SQL Server Always Encrypted jelenleg csak a forrásátalakítást támogatja a leképezési adatfolyamokban.
Natív változásadat-rögzítés
Az Azure Data Factory támogatja az SQL Server, az Azure SQL DB és az Azure SQL MI natív változásadat-rögzítési képességeit. Az ADF-leképezési adatfolyam automatikusan észlelheti és kinyerheti a módosított adatokat, beleértve a sor beszúrását, frissítését és törlését az SQL-tárolókban. Mivel nincs kódélmény az adatfolyam leképezésében, a felhasználók egyszerűen elérhetik az SQL-tárolókból származó adatreplikációs forgatókönyvet úgy, hogy céltárolóként hozzáfűznek egy adatbázist. Ráadásul a felhasználók bármilyen adatátalakítási logikát is megírhatnak az SQL-tárolók növekményes ETL-forgatókönyvének elérése érdekében.
Győződjön meg arról, hogy a folyamat és a tevékenység neve változatlan marad, hogy az ADF rögzíthesse az ellenőrzőpontot, hogy a legutóbbi futtatás során automatikusan megváltoztassa az adatokat. Ha módosítja a feldolgozási sor nevét vagy a tevékenység nevét, az ellenőrzőpont alaphelyzetbe lesz állítva, ami azt eredményezi, hogy Ön elölről kezdi vagy mostantól kapja a változásokat a következő futtatásban. Ha módosítani szeretné a folyamat nevét vagy tevékenységnevét, de továbbra is megtartja az ellenőrzőpontot, hogy az utolsó futtatásból származó módosított adatokat automatikusan megkapja, használja a saját Ellenőrzőpont-kulcsát az adatfolyam-tevékenységben ennek eléréséhez.
A folyamat hibakeresésekor ez a funkció ugyanúgy működik. Vegye figyelembe, hogy az ellenőrzőpont alaphelyzetbe áll, amikor frissíti a böngészőt a hibakeresési futtatás során. Miután elégedett a hibakeresési futtatás folyamatának eredményével, közzéteheti és aktiválhatja a folyamatot. Abban a pillanatban, amikor először aktiválja a közzétett folyamatot, az automatikusan újraindul az elejétől, vagy mostantól módosításokat kap.
A figyelési szakaszban mindig lehetősége van egy folyamat újrafuttatására. Ha így tesz, a módosított adatok mindig a kiválasztott folyamatfuttatás előző ellenőrzőpontjáról lesznek rögzítve.
1. példa:
Ha közvetlenül láncol egy SQL CDC-kompatibilis adatkészletre hivatkozott forrásátalakítást egy leképezési adatfolyam adatbázisára hivatkozva, a rendszer automatikusan alkalmazza a módosításokat az SQL-forráson a céladatbázisra, így könnyen lekérheti az adatbázisok közötti adatreplikációs forgatókönyvet. A fogadóátalakítás frissítési metódusával kiválaszthatja, hogy engedélyezi-e a beszúrást, engedélyezi a frissítést vagy engedélyezi a törlést a céladatbázison. A leképezési adatfolyam példaszkriptje az alábbi módon érhető el.
source(output(
id as integer,
name as string
),
allowSchemaDrift: true,
validateSchema: false,
enableNativeCdc: true,
netChanges: true,
skipInitialLoad: false,
isolationLevel: 'READ_UNCOMMITTED',
format: 'table') ~> source1
source1 sink(allowSchemaDrift: true,
validateSchema: false,
deletable:true,
insertable:true,
updateable:true,
upsertable:true,
keys:['id'],
format: 'table',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true,
errorHandlingOption: 'stopOnFirstError') ~> sink1
2. példa:
Ha az sql CDC-n keresztüli adatreplikáció helyett az ETL-forgatókönyvet szeretné engedélyezni az adatbázis között, kifejezéseket használhat az adatfolyam leképezésében, beleértve az isInsert(1), az isUpdate(1) és az isDelete(1) függvényt a sorok különböző művelettípusokkal való megkülönböztetéséhez. Az alábbi példaszkriptek egyike az adatfolyamok leképezésére egy oszlopból származó érték alapján: 1 a beszúrt sorok jelzésére, 2 a frissített sorok jelzésére, 3 pedig a törölt sorok jelzésére az alsóbb rétegbeli átalakításokhoz a deltaadatok feldolgozásához.
source(output(
id as integer,
name as string
),
allowSchemaDrift: true,
validateSchema: false,
enableNativeCdc: true,
netChanges: true,
skipInitialLoad: false,
isolationLevel: 'READ_UNCOMMITTED',
format: 'table') ~> source1
source1 derive(operationType = iif(isInsert(1), 1, iif(isUpdate(1), 2, 3))) ~> derivedColumn1
derivedColumn1 sink(allowSchemaDrift: true,
validateSchema: false,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> sink1
Ismert korlátozás:
- Az ADF csak az SQL CDC nettó módosításait tölti be cdc.fn_cdc_get_net_changes_ keresztül.
Kapcsolati problémák hibaelhárítása
Konfigurálja az SQL Server-példányt távoli kapcsolatok elfogadására. Indítsa el az SQL Server Management Studiót, kattintson a jobb gombbal a kiszolgálóra, és válassza a Tulajdonságok lehetőséget. Válassza a Kapcsolatok lehetőséget a listából, és jelölje be a Kiszolgáló távoli kapcsolatainak engedélyezése jelölőnégyzetet.
Részletes lépésekért lásd a távelérési kiszolgáló konfigurációs beállításának konfigurálását ismertető cikket.
Indítsa el a SQL Server Konfigurációkezelő. Bontsa ki az SQL Server hálózati konfigurációját a kívánt példányhoz, és válassza az MSSQLSERVER protokolljait. A protokollok a jobb oldali panelen jelennek meg. A TCP/IP engedélyezéséhez kattintson a jobb gombbal a TCP/IP elemre , és válassza az Engedélyezés lehetőséget.
További információ és a TCP/IP protokoll engedélyezésének alternatív módjai: Kiszolgálói hálózati protokoll engedélyezése vagy letiltása.
Ugyanabban az ablakban kattintson duplán a TCP/IP elemre a TCP/IP-tulajdonságok ablak elindításához.
Váltson az IP-címek lapra. Görgessen le az IPAll szakasz megtekintéséhez. Írja le a TCP-portot. Az alapértelmezett érték 1433.
Hozzon létre egy szabályt a windowsos tűzfalhoz a gépen, amely engedélyezi a bejövő forgalmat ezen a porton keresztül.
Kapcsolat ellenőrzése: Ha teljesen minősített névvel szeretne csatlakozni az SQL Serverhez, használja egy másik gépről származó SQL Server Management Studiót. Például:
"<machine>.<domain>.corp.<company>.com,1433"
.
Az SQL Server verziójának frissítése
Az SQL Server verziójának frissítéséhez a Csatolt szolgáltatás szerkesztése lapon válassza az Ajánlott elemet a Verzió területen, és konfigurálja a társított szolgáltatást az ajánlott verzió társított szolgáltatás tulajdonságaira hivatkozva.
Az ajánlott és az örökölt verzió közötti különbségek
Az alábbi táblázat a javasolt és az örökölt verziót használó SQL Server közötti különbségeket mutatja be.
Ajánlott verzió | Örökölt verzió |
---|---|
TLS 1.3 támogatása a következőképpenstrict : encrypt . |
A TLS 1.3 nem támogatott. |
Kapcsolódó tartalom
A másolási tevékenység által forrásként és fogadóként támogatott adattárak listáját lásd : Támogatott adattárak.