Azure Data Factory veya Azure Synapse Analytics kullanarak Azure SQL Veritabanı verileri kopyalama ve dönüştürme
UYGULANANLAR: Azure Data Factory Azure Synapse Analytics
İpucu
Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!
Bu makalede, Azure Data Factory veya Azure Synapse işlem hatlarında kopyalama etkinliğini kullanarak verileri Azure SQL Veritabanı ve Azure SQL Veritabanı'de verileri dönüştürmek için Veri Akışı kullanma adımları açıklanmaktadır. Daha fazla bilgi edinmek için Azure Data Factory veya Azure Synapse Analytics ile ilgili giriş makalesini okuyun.
Desteklenen özellikler
Bu Azure SQL Veritabanı bağlayıcısı aşağıdaki özellikler için desteklenir:
Desteklenen özellikler | IR | Yönetilen özel uç nokta |
---|---|---|
Kopyalama etkinliği (kaynak/havuz) | (1) (2) | ✓ |
Eşleme veri akışı (kaynak/havuz) | (1) | ✓ |
Arama etkinliği | (1) (2) | ✓ |
GetMetadata etkinliği | (1) (2) | ✓ |
Betik etkinliği | (1) (2) | ✓ |
Saklı yordam etkinliği | (1) (2) | ✓ |
(1) Azure tümleştirme çalışma zamanı (2) Şirket içinde barındırılan tümleştirme çalışma zamanı
Kopyalama etkinliği için bu Azure SQL Veritabanı bağlayıcısı şu işlevleri destekler:
- Azure kaynakları için bir hizmet sorumlusu veya yönetilen kimliklerle SQL kimlik doğrulaması ve Microsoft Entra Uygulama belirteci kimlik doğrulaması kullanarak verileri kopyalama.
- Kaynak olarak, SQL sorgusu veya saklı yordam kullanarak veri alma. Ayrıca, Azure SQL Veritabanı bir kaynaktan paralel kopyalamayı da seçebilirsiniz. Ayrıntılar için SQL veritabanından paralel kopyalama bölümüne bakın.
- Havuz olarak, kaynak şemayı temel alarak hedef tablo yoksa otomatik olarak oluşturulur; verileri tabloya ekleme veya saklı yordamı kopyalama sırasında özel mantıkla çağırma.
Sunucusuz Azure SQL Veritabanı katmanı kullanıyorsanız, sunucunun duraklatıldığında otomatik sürdürmenin hazır olmasını beklemek yerine etkinlik çalıştırmasının başarısız olduğuna dikkat edin. Sunucunun gerçek yürütme sırasında canlı olduğundan emin olmak için etkinlik yeniden denemesi ekleyebilir veya ek etkinlikleri zincirleyebilirsiniz.
Önemli
Azure tümleştirme çalışma zamanını kullanarak veri kopyalarsanız, Azure hizmetlerinin sunucuya erişebilmesi için sunucu düzeyinde bir güvenlik duvarı kuralı yapılandırın. Şirket içinde barındırılan tümleştirme çalışma zamanı kullanarak verileri kopyalarsanız, güvenlik duvarını uygun IP aralığına izin verecek şekilde yapılandırın. Bu aralık, Azure SQL Veritabanı bağlanmak için kullanılan makinenin IP'sini içerir.
Kullanmaya başlayın
İşlem hattıyla Kopyalama etkinliği gerçekleştirmek için aşağıdaki araçlardan veya SDK'lardan birini kullanabilirsiniz:
- Veri Kopyalama aracı
- Azure portal
- .NET SDK'sı
- Python SDK'sı
- Azure PowerShell
- The REST API
- Azure Resource Manager şablonu
Kullanıcı arabirimini kullanarak Azure SQL Veritabanı bağlı hizmet oluşturma
Azure portalı kullanıcı arabiriminde Azure SQL Veritabanı bağlı bir hizmet oluşturmak için aşağıdaki adımları kullanın.
Azure Data Factory veya Synapse çalışma alanınızda Yönet sekmesine göz atın ve Bağlı Hizmetler'i seçin, ardından Yeni'ye tıklayın:
SQL'i arayın ve Azure SQL Veritabanı bağlayıcısını seçin.
Hizmet ayrıntılarını yapılandırın, bağlantıyı test edin ve yeni bağlı hizmeti oluşturun.
Bağlayıcı yapılandırma ayrıntıları
Aşağıdaki bölümlerde, Azure SQL Veritabanı bağlayıcısına özgü Azure Data Factory veya Synapse işlem hattı varlıklarını tanımlamak için kullanılan özelliklerle ilgili ayrıntılar sağlanır.
Bağlı hizmet özellikleri
Azure SQL Veritabanı bağlayıcısı Önerilen sürümü TLS 1.3'i destekler. Azure SQL Veritabanı bağlayıcı sürümünüzü Eski sürümden yükseltmek için bu bölüme bakın. Özellik ayrıntıları için ilgili bölümlere bakın.
İpucu
"UserErrorFailedToConnectToSqlServer" hata kodu ve "Veritabanının oturum sınırı XXX ve ulaşıldı" gibi bir iletiyle bir hatayla karşılaşırsanız, bağlantı dizesi ekleyin Pooling=false
ve yeniden deneyin. Pooling=false
SHIR (Şirket İçinde Barındırılan Tümleştirme Çalışma Zamanı) türü bağlı hizmet kurulumu için de önerilir. Havuz ve diğer bağlantı parametreleri, bağlı hizmet oluşturma formunun Ek bağlantı özellikleri bölümüne yeni parametre adları ve değerleri olarak eklenebilir.
Önerilen sürüm
Önerilen sürüm uygulandığında bu genel özellikler Azure SQL Veritabanı bağlı bir hizmet için desteklenir:
Özellik | Açıklama | Gerekli |
---|---|---|
Tür | tür özelliği AzureSqlDatabase olarak ayarlanmalıdır. | Yes |
sunucu | Bağlanmak istediğiniz SQL server örneğinin adı veya ağ adresi. | Yes |
database | Veritabanının adı. | Yes |
authenticationType | Kimlik doğrulaması için kullanılan tür. İzin verilen değerler SQL (varsayılan), ServicePrincipal, SystemAssignedManagedIdentity, UserAssignedManagedIdentity değerleridir. Belirli özellikler ve önkoşullar hakkında ilgili kimlik doğrulaması bölümüne gidin. | Yes |
alwaysEncryptedSettings | Yönetilen kimlik veya hizmet sorumlusu kullanarak SQL server'da depolanan hassas verileri korumak için Always Encrypted'ı etkinleştirmek için gereken alwaysencryptedsettings bilgilerini belirtin. Daha fazla bilgi için, tabloyu izleyen JSON örneğine ve Always Encrypted kullanma bölümüne bakın. Belirtilmezse, varsayılan always encrypted ayarı devre dışı bırakılır. | Hayır |
şifreleme | İstemci ile sunucu arasında gönderilen tüm veriler için TLS şifrelemesinin gerekli olup olmadığını belirtin. Seçenekler: zorunlu (true için, varsayılan)/isteğe bağlı (yanlış için)/strict. | Hayır |
trustServerCertificate | Güveni doğrulamak için sertifika zinciri atlanırken kanalın şifrelenip şifrelenmediğini belirtin. | Hayır |
hostNameInCertificate | Bağlantı için sunucu sertifikası doğrulanırken kullanılacak ana bilgisayar adı. Belirtilmediğinde, sunucu adı sertifika doğrulaması için kullanılır. | Hayır |
connectVia | Bu tümleştirme çalışma zamanı , veri deposuna bağlanmak için kullanılır. Veri deponuz özel bir ağda bulunuyorsa Azure tümleştirme çalışma zamanını veya şirket içinde barındırılan tümleştirme çalışma zamanını kullanabilirsiniz. Belirtilmezse, varsayılan Azure tümleştirme çalışma zamanı kullanılır. | Hayır |
Ek bağlantı özellikleri için aşağıdaki tabloya bakın:
Özellik | Açıklama | Gerekli |
---|---|---|
applicationIntent | Sunucuya bağlanırken uygulama iş yükü türü. İzin verilen değerler ve ReadWrite değerleridirReadOnly . |
Hayır |
connectTimeout | Denemeyi sonlandırmadan ve hata oluşturmadan önce sunucu bağlantısını bekleme süresi (saniye cinsinden). | Hayır |
connectRetryCount | Boşta bağlantı hatası belirlendikten sonra denenen yeniden bağlantı sayısı. Değer 0 ile 255 arasında bir tamsayı olmalıdır. | Hayır |
connectRetryInterval | Boşta bağlantı hatası tanımladıktan sonra her yeniden bağlanma girişimi arasındaki süre (saniye cinsinden). Değer 1 ile 60 arasında bir tamsayı olmalıdır. | Hayır |
loadBalanceTimeout | Bağlantı yok edilmeden önce bağlantının bağlantı havuzunda yaşaması için en kısa süre (saniye cinsinden). | Hayır |
commandTimeout | Komut yürütme girişimini sonlandırmadan ve hata oluşturmadan önce varsayılan bekleme süresi (saniye cinsinden). | Hayır |
integratedSecurity | İzin verilen değerler veya false şeklindedirtrue . belirtilirken false , bağlantıda userName ve password belirtilip belirtilmediği belirtilir. belirtirken true , geçerli Windows hesabı kimlik bilgilerinin kimlik doğrulaması için kullanılıp kullanılmadığını gösterir. |
Hayır |
failoverPartner | Birincil sunucu çalışmıyorsa bağlanacak iş ortağı sunucusunun adı veya adresi. | Hayır |
maxPoolSize | Belirli bir bağlantı için bağlantı havuzunda izin verilen en fazla bağlantı sayısı. | Hayır |
minPoolSize | Belirli bir bağlantı için bağlantı havuzunda izin verilen en az bağlantı sayısı. | Hayır |
multipleActiveResultSets | İzin verilen değerler veya false şeklindedirtrue . belirttiğinizde true , bir uygulama birden çok etkin sonuç kümesini (MARS) koruyabilir. belirttiğinizde false , bir uygulamanın bu bağlantıdaki diğer toplu işlemleri yürütebilmesi için önce bir toplu işlemden tüm sonuç kümelerini işlemesi veya iptal etmesi gerekir. |
Hayır |
multiSubnetFailover | İzin verilen değerler veya false şeklindedirtrue . Uygulamanız farklı alt ağlardaki bir AlwaysOn kullanılabilirlik grubuna (AG) bağlanıyorsa, bu özelliği o anda etkin olan sunucuya true daha hızlı algılama ve bağlantı sağlayacak şekilde ayarlayın. |
Hayır |
packetSize | Sunucu örneğiyle iletişim kurmak için kullanılan ağ paketlerinin bayt cinsinden boyutu. | Hayır |
Havuzu | İzin verilen değerler veya false şeklindedirtrue . belirttiğinizde true bağlantı havuza alınacaktır. belirttiğinizde false , bağlantı her istendiğinde açıkça açılır. |
Hayır |
SQL kimlik doğrulaması
SQL kimlik doğrulamasını kullanmak için, önceki bölümde açıklanan genel özelliklere ek olarak aşağıdaki özellikleri belirtin:
Özellik | Açıklama | Gerekli |
---|---|---|
userName | Sunucuya bağlanmak için kullanılan kullanıcı adı. | Yes |
password | Kullanıcı adının parolası. Güvenli bir şekilde depolamak için bu alanı SecureString olarak işaretleyin. İsterseniz Azure Key Vault'ta depolanan bir gizli diziye başvurabilirsiniz. | Yes |
Örnek: SQL kimlik doğrulaması kullanma
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"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"
}
}
}
Örnek: Azure Key Vault'ta parola
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"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"
}
}
}
Örnek: Always Encrypted kullanma
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"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"
}
}
}
Hizmet sorumlusu kimlik doğrulaması
Hizmet sorumlusu kimlik doğrulamasını kullanmak için, önceki bölümde açıklanan genel özelliklere ek olarak aşağıdaki özellikleri belirtin:
Özellik | Açıklama | Gerekli |
---|---|---|
servicePrincipalId | Uygulamanın istemci kimliğini belirtin. | Yes |
servicePrincipalCredential | Hizmet sorumlusu kimlik bilgileri. Uygulamanın anahtarını belirtin. Güvenli bir şekilde depolamak için bu alanı SecureString olarak işaretleyin veya Azure Key Vault'ta depolanan bir gizli diziye başvurun. | Yes |
tenant | Uygulamanızın bulunduğu etki alanı adı veya kiracı kimliği gibi kiracı bilgilerini belirtin. Fareyi Azure portalının sağ üst köşesine getirerek alın. | Yes |
azureCloudType | Hizmet sorumlusu kimlik doğrulaması için Microsoft Entra uygulamanızın kaydedildiği Azure bulut ortamının türünü belirtin. İzin verilen değerler AzurePublic, AzureChina, AzureUsGovernment ve AzureGermany'dir. Varsayılan olarak, veri fabrikası veya Synapse işlem hattının bulut ortamı kullanılır. |
Hayır |
Aşağıdaki adımları da izlemeniz gerekir:
Azure portalından bir Microsoft Entra uygulaması oluşturun. Uygulama adını ve bağlı hizmeti tanımlayan aşağıdaki değerleri not edin:
- Uygulama Kimliği
- Uygulama anahtarı
- Kiracı kimliği
Henüz yapmadıysanız Azure portalında sunucunuz için bir Microsoft Entra yöneticisi sağlayın. Microsoft Entra yöneticisinin bir Microsoft Entra kullanıcısı veya Microsoft Entra grubu olması gerekir, ancak hizmet sorumlusu olamaz. Bu adım, bir sonraki adımda hizmet sorumlusu için kapsanan veritabanı kullanıcısı oluşturmak üzere bir Microsoft Entra kimliği kullanabilmeniz için yapılır.
Hizmet sorumlusu için bağımsız veritabanı kullanıcıları oluşturun. SQL Server Management Studio gibi araçları kullanarak veya veritabanından veri kopyalamak istediğiniz veritabanına, en azından ALTER ANY USER iznine sahip bir Microsoft Entra kimliğiyle bağlanın. Aşağıdaki T-SQL'i çalıştırın:
CREATE USER [your application name] FROM EXTERNAL PROVIDER;
SQL kullanıcıları veya diğer kullanıcılar için normalde yaptığınız gibi hizmet sorumlusuna gereken izinleri verin. Aşağıdaki kodu çalıştırın. Diğer seçenekler için bu belgeye bakın.
ALTER ROLE [role name] ADD MEMBER [your application name];
Azure Data Factory veya Synapse çalışma alanında Azure SQL Veritabanı bağlı hizmeti yapılandırma.
Hizmet sorumlusu kimlik doğrulaması kullanan bağlı hizmet örneği
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"hostNameInCertificate": "<host name>",
"authenticationType": "ServicePrincipal",
"servicePrincipalId": "<service principal id>",
"servicePrincipalCredential": {
"type": "SecureString",
"value": "<application key>"
},
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Sistem tarafından atanan yönetilen kimlik kimlik doğrulaması
Veri fabrikası veya Synapse çalışma alanı, Azure'daki diğer kaynaklarda kimlik doğrulaması yaparken hizmeti temsil eden Azure kaynakları için sistem tarafından atanan yönetilen kimlikle ilişkilendirilebilir. Bu yönetilen kimliği Azure SQL Veritabanı kimlik doğrulaması için kullanabilirsiniz. Belirlenen fabrika veya Synapse çalışma alanı, bu kimliği kullanarak veritabanınızdan veya veritabanınızdan verilere erişebilir ve bunları kopyalayabilir.
Sistem tarafından atanan yönetilen kimlik kimlik doğrulamasını kullanmak için, önceki bölümde açıklanan genel özellikleri belirtin ve aşağıdaki adımları izleyin.
Henüz yapmadıysanız Azure portalında sunucunuz için bir Microsoft Entra yöneticisi sağlayın. Microsoft Entra yöneticisi bir Microsoft Entra kullanıcısı veya Bir Microsoft Entra grubu olabilir. Yönetilen kimliğe sahip gruba yönetici rolü verirseniz 3. ve 4. adımları atlayın. Yöneticinin veritabanına tam erişimi vardır.
Yönetilen kimlik için bağımsız veritabanı kullanıcıları oluşturun. SQL Server Management Studio gibi araçları kullanarak veya veritabanından veri kopyalamak istediğiniz veritabanına, en azından ALTER ANY USER iznine sahip bir Microsoft Entra kimliğiyle bağlanın. Aşağıdaki T-SQL'i çalıştırın:
CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
SQL kullanıcıları ve diğer kullanıcılar için normalde yaptığınız gibi yönetilen kimliğe gereken izinleri verin. Aşağıdaki kodu çalıştırın. Diğer seçenekler için bu belgeye bakın.
ALTER ROLE [role name] ADD MEMBER [your_resource_name];
Azure SQL Veritabanı bağlı hizmeti yapılandırın.
Örnek
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"typeProperties": {
"server": "<name or network address of the SQL server instance>",
"database": "<database name>",
"encrypt": "<encrypt>",
"trustServerCertificate": false,
"authenticationType": "SystemAssignedManagedIdentity"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması
Veri fabrikası veya Synapse çalışma alanı, Azure'daki diğer kaynaklarda kimlik doğrulaması yaparken hizmeti temsil eden kullanıcı tarafından atanan yönetilen kimliklerle ilişkilendirilebilir. Bu yönetilen kimliği Azure SQL Veritabanı kimlik doğrulaması için kullanabilirsiniz. Belirlenen fabrika veya Synapse çalışma alanı, bu kimliği kullanarak veritabanınızdan veya veritabanınızdan verilere erişebilir ve bunları kopyalayabilir.
Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulamasını kullanmak için, önceki bölümde açıklanan genel özelliklere ek olarak aşağıdaki özellikleri belirtin:
Özellik | Açıklama | Gerekli |
---|---|---|
kimlik bilgileri | Kimlik bilgisi nesnesi olarak kullanıcı tarafından atanan yönetilen kimliği belirtin. | Yes |
Aşağıdaki adımları da izlemeniz gerekir:
Henüz yapmadıysanız Azure portalında sunucunuz için bir Microsoft Entra yöneticisi sağlayın. Microsoft Entra yöneticisi bir Microsoft Entra kullanıcısı veya Bir Microsoft Entra grubu olabilir. Gruba kullanıcı tarafından atanan yönetilen kimliğe yönetici rolü verirseniz 3. adımları atlayın. Yöneticinin veritabanına tam erişimi vardır.
Kullanıcı tarafından atanan yönetilen kimlik için bağımsız veritabanı kullanıcıları oluşturun. SQL Server Management Studio gibi araçları kullanarak veya veritabanından veri kopyalamak istediğiniz veritabanına, en azından ALTER ANY USER iznine sahip bir Microsoft Entra kimliğiyle bağlanın. Aşağıdaki T-SQL'i çalıştırın:
CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
Kullanıcı tarafından atanan bir veya birden çok yönetilen kimlik oluşturun ve sql kullanıcıları ve diğer kullanıcılar için normalde yaptığınız gibi kullanıcı tarafından atanan yönetilen kimliğe gerekli izinleri verin. Aşağıdaki kodu çalıştırın. Diğer seçenekler için bu belgeye bakın.
ALTER ROLE [role name] ADD MEMBER [your_resource_name];
Veri fabrikanıza kullanıcı tarafından atanan bir veya birden çok yönetilen kimlik atayın ve kullanıcı tarafından atanan her yönetilen kimlik için kimlik bilgileri oluşturun.
Azure SQL Veritabanı bağlı hizmeti yapılandırın.
Örnek
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"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"
}
}
}
Eski sürüm
Bu genel özellikler, Eski sürümü uyguladığınızda Azure SQL Veritabanı bağlı bir hizmet için desteklenir:
Özellik | Açıklama | Gerekli |
---|---|---|
Tür | tür özelliği AzureSqlDatabase olarak ayarlanmalıdır. | Yes |
connectionString | connectionString özelliğinin Azure SQL Veritabanı örneğine bağlanmak için gereken bilgileri belirtin. Azure Key Vault'a bir parola veya hizmet sorumlusu anahtarı da koyabilirsiniz. SQL kimlik doğrulamasıysa yapılandırmayı password bağlantı dizesi çıkarın. Daha fazla bilgi için bkz . Kimlik bilgilerini Azure Key Vault'ta depolama. |
Yes |
alwaysEncryptedSettings | Yönetilen kimlik veya hizmet sorumlusu kullanarak SQL server'da depolanan hassas verileri korumak için Always Encrypted'ı etkinleştirmek için gereken alwaysencryptedsettings bilgilerini belirtin. Daha fazla bilgi için Bkz . Always Encrypted kullanma bölümü. Belirtilmezse, varsayılan always encrypted ayarı devre dışı bırakılır. | Hayır |
connectVia | Bu tümleştirme çalışma zamanı , veri deposuna bağlanmak için kullanılır. Veri deponuz özel bir ağda bulunuyorsa Azure tümleştirme çalışma zamanını veya şirket içinde barındırılan tümleştirme çalışma zamanını kullanabilirsiniz. Belirtilmezse, varsayılan Azure tümleştirme çalışma zamanı kullanılır. | Hayır |
Farklı kimlik doğrulama türleri için sırasıyla belirli özellikler ve önkoşullar hakkında aşağıdaki bölümlere bakın:
- Eski sürüm için SQL kimlik doğrulaması
- Eski sürüm için hizmet sorumlusu kimlik doğrulaması
- Eski sürüm için sistem tarafından atanan yönetilen kimlik kimlik doğrulaması
- Eski sürüm için kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması
Eski sürüm için SQL kimlik doğrulaması
SQL kimlik doğrulamasını kullanmak için, önceki bölümde açıklanan genel özellikleri belirtin.
Eski sürüm için hizmet sorumlusu kimlik doğrulaması
Hizmet sorumlusu kimlik doğrulamasını kullanmak için, önceki bölümde açıklanan genel özelliklere ek olarak aşağıdaki özellikleri belirtin:
Özellik | Açıklama | Gerekli |
---|---|---|
servicePrincipalId | Uygulamanın istemci kimliğini belirtin. | Yes |
servicePrincipalKey | Uygulamanın anahtarını belirtin. Güvenli bir şekilde depolamak veya Azure Key Vault'ta depolanan bir gizli diziye başvurmak için bu alanı SecureString olarak işaretleyin. | Yes |
tenant | Uygulamanızın bulunduğu etki alanı adı veya kiracı kimliği gibi kiracı bilgilerini belirtin. Fareyi Azure portalının sağ üst köşesine getirerek alın. | Yes |
azureCloudType | Hizmet sorumlusu kimlik doğrulaması için Microsoft Entra uygulamanızın kaydedildiği Azure bulut ortamının türünü belirtin. İzin verilen değerler AzurePublic, AzureChina, AzureUsGovernment ve AzureGermany'dir. Varsayılan olarak, veri fabrikası veya Synapse işlem hattının bulut ortamı kullanılır. |
Hayır |
İlgili izni vermek için Hizmet sorumlusu kimlik doğrulamasındaki adımları da izlemeniz gerekir.
Eski sürüm için sistem tarafından atanan yönetilen kimlik kimlik doğrulaması
Sistem tarafından atanan yönetilen kimlik kimlik doğrulamasını kullanmak için, Sistem tarafından atanan yönetilen kimlik kimlik doğrulamasında önerilen sürüm için aynı adımı izleyin.
Eski sürüm için kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması
Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulamasını kullanmak için, Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması bölümünde önerilen sürüm için aynı adımı izleyin.
Veri kümesi özellikleri
Veri kümelerini tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için bkz . Veri kümeleri.
Azure SQL Veritabanı veri kümesi için aşağıdaki özellikler desteklenir:
Özellik | Açıklama | Gerekli |
---|---|---|
Tür | Veri kümesinin type özelliği AzureSqlTable olarak ayarlanmalıdır. | Yes |
schema | Şemanın adı. | Kaynak için Hayır, havuz için Evet |
table | Tablo/görünümün adı. | Kaynak için Hayır, havuz için Evet |
tableName | Şema içeren tablonun/görünümün adı. Bu özellik geriye dönük uyumluluk için desteklenir. Yeni iş yükü için ve table kullanınschema . |
Kaynak için Hayır, havuz için Evet |
Veri kümesi özellikleri örneği
{
"name": "AzureSQLDbDataset",
"properties":
{
"type": "AzureSqlTable",
"linkedServiceName": {
"referenceName": "<Azure SQL Database linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"typeProperties": {
"schema": "<schema_name>",
"table": "<table_name>"
}
}
}
Kopyalama etkinliğinin özellikleri
Etkinlikleri tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için bkz . İşlem hatları. Bu bölümde, Azure SQL Veritabanı kaynağı ve havuzu tarafından desteklenen özelliklerin listesi sağlanır.
Kaynak olarak Azure SQL Veritabanı
İpucu
Veri bölümlemeyi kullanarak verileri Azure SQL Veritabanı verimli bir şekilde yüklemek için SQL veritabanından paralel kopyalama bölümünden daha fazla bilgi edinin.
verileri Azure SQL Veritabanı kopyalamak için kopyalama etkinliği kaynağı bölümünde aşağıdaki özellikler desteklenir:
Özellik | Açıklama | Gerekli |
---|---|---|
Tür | Kopyalama etkinliği kaynağının type özelliği AzureSqlSource olarak ayarlanmalıdır. Geriye dönük uyumluluk için "SqlSource" türü hala desteklenmektedir. | Yes |
sqlReaderQuery | Bu özellik, verileri okumak için özel SQL sorgusunu kullanır. select * from MyTable bunun bir örneğidir. |
Hayır |
sqlReaderStoredProcedureName | Kaynak tablodaki verileri okuyan saklı yordamın adı. Son SQL deyimi, saklı yordamda bir SELECT deyimi olmalıdır. | Hayır |
storedProcedureParameters | Saklı yordam için parametreler. İzin verilen değerler ad veya değer çiftleridir. Parametrelerin adları ve büyük/küçük harf değerleri, saklı yordam parametrelerinin adlarıyla ve büyük/küçük harfleriyle eşleşmelidir. |
Hayır |
isolationLevel | SQL kaynağı için işlem kilitleme davranışını belirtir. İzin verilen değerler şunlardır: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Belirtilmezse, veritabanının varsayılan yalıtım düzeyi kullanılır. Daha fazla ayrıntı için bu belgeyi inceleyin . | Hayır |
partitionOptions | Azure SQL Veritabanı'dan veri yüklemek için kullanılan veri bölümleme seçeneklerini belirtir. İzin verilen değerler şunlardır: Hiçbiri (varsayılan), PhysicalPartitionsOfTable ve DynamicRange. Bir bölüm seçeneği etkinleştirildiğinde (başka bir ifadeyle değil None ), bir Azure SQL Veritabanı verileri eşzamanlı olarak yüklemek için paralellik derecesi kopyalama etkinliğindeki parallelCopies ayar tarafından denetlenmektedir. |
Hayır |
partitionSettings | Veri bölümleme ayarlarının grubunu belirtin. Bölüm seçeneği olmadığında None uygulayın. |
Hayır |
altında partitionSettings : |
||
partitionColumnName | Paralel kopyalama için aralık bölümleme tarafından kullanılacak kaynak sütunun adını tamsayı veya tarih/tarih saat türünde (int , smallint , bigint , date , smalldatetime , , datetime , veya datetime2 datetimeoffset ) belirtin. Belirtilmezse, tablonun dizini veya birincil anahtarı otomatik olarak algılanır ve bölüm sütunu olarak kullanılır.Bölüm seçeneği olduğunda DynamicRange uygulayın. Kaynak verileri almak için bir sorgu kullanırsanız WHERE yan tümcesine bağlanın ?DfDynamicRangePartitionCondition . Bir örnek için SQL veritabanından paralel kopyalama bölümüne bakın. |
Hayır |
partitionUpperBound | Bölüm aralığı bölme için bölüm sütununun en büyük değeri. Bu değer, tablodaki satırları filtrelemek için değil bölüm adımlarını belirlemek için kullanılır. Tablodaki veya sorgu sonucundaki tüm satırlar bölümlenir ve kopyalanır. Belirtilmezse kopyalama etkinliği değeri otomatik olarak algılar. Bölüm seçeneği olduğunda DynamicRange uygulayın. Bir örnek için SQL veritabanından paralel kopyalama bölümüne bakın. |
Hayır |
partitionLowerBound | Bölüm aralığı bölme için bölüm sütununun en düşük değeri. Bu değer, tablodaki satırları filtrelemek için değil bölüm adımlarını belirlemek için kullanılır. Tablodaki veya sorgu sonucundaki tüm satırlar bölümlenir ve kopyalanır. Belirtilmezse kopyalama etkinliği değeri otomatik olarak algılar. Bölüm seçeneği olduğunda DynamicRange uygulayın. Bir örnek için SQL veritabanından paralel kopyalama bölümüne bakın. |
Hayır |
Aşağıdaki noktalara dikkat edin:
- AzureSqlSource için sqlReaderQuery belirtilirse kopyalama etkinliği verileri almak için bu sorguyu Azure SQL Veritabanı kaynağına karşı çalıştırır. Saklı yordam parametre alıyorsa sqlReaderStoredProcedureName ve storedProcedureParameters belirterek de saklı yordam belirtebilirsiniz.
- Verileri almak için kaynakta saklı yordamı kullanırken, saklı yordamınızın farklı parametre değeri geçirildiğinde farklı şema döndürme olarak tasarlanıp tasarlanmadiğini, kullanıcı arabiriminden şema içeri aktarılırken veya otomatik tablo oluşturma özelliğiyle SQL veritabanına veri kopyalarken hatayla karşılaşabileceğinizi veya beklenmeyen bir sonuçla karşılaşabileceğinizi unutmayın.
SQL sorgusu örneği
"activities":[
{
"name": "CopyFromAzureSQLDatabase",
"type": "Copy",
"inputs": [
{
"referenceName": "<Azure SQL Database input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "AzureSqlSource",
"sqlReaderQuery": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Saklı yordam örneği
"activities":[
{
"name": "CopyFromAzureSQLDatabase",
"type": "Copy",
"inputs": [
{
"referenceName": "<Azure SQL Database input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "AzureSqlSource",
"sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
"storedProcedureParameters": {
"stringData": { "value": "str3" },
"identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
Saklı yordam tanımı
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
Havuz olarak Azure SQL Veritabanı
İpucu
Desteklenen yazma davranışları, yapılandırmalar ve en iyi yöntemler hakkında daha fazla bilgi edinmek için bkz. Verileri Azure SQL Veritabanı yüklemeye yönelik en iyi yöntem.
Verileri Azure SQL Veritabanı kopyalamak için kopyalama etkinliği havuzu bölümünde aşağıdaki özellikler desteklenir:
Özellik | Açıklama | Gerekli |
---|---|---|
Tür | Kopyalama etkinliği havuzu type özelliği AzureSqlSink olarak ayarlanmalıdır. Geriye dönük uyumluluk için "SqlSink" türü hala desteklenmektedir. | Yes |
preCopyScript | Azure SQL Veritabanı'a veri yazmadan önce kopyalama etkinliğinin çalıştırılması için bir SQL sorgusu belirtin. Kopyalama çalıştırması başına yalnızca bir kez çağrılır. Önceden yüklenmiş verileri temizlemek için bu özelliği kullanın. | Hayır |
tableOption | Kaynak şemayı temel alarak havuz tablosunun yoksa otomatik olarak oluşturulup oluşturulmayacağını belirtir. Havuz saklı yordamı belirttiğinde otomatik tablo oluşturma desteklenmez. İzin verilen değerler şunlardır: none (varsayılan), autoCreate . |
Hayır |
sqlWriterStoredProcedureName | Kaynak verilerin hedef tabloya nasıl uygulanacağını tanımlayan saklı yordamın adı. Bu saklı yordam toplu iş başına çağrılır. Yalnızca bir kez çalışan ve kaynak verilerle hiçbir ilgisi olmayan işlemler (örneğin, silme veya kesme) için özelliğini kullanın preCopyScript .Bkz. SQL havuzundaki saklı yordamı çağırma. |
Hayır |
storedProcedureTableTypeParameterName | Saklı yordamda belirtilen tablo türünün parametre adı. | Hayır |
sqlWriterTableType | Saklı yordamda kullanılacak tablo türü adı. Kopyalama etkinliği, taşınan verilerin bu tablo türüne sahip bir geçici tabloda kullanılabilir olmasını sağlar. Saklı yordam kodu daha sonra kopyalanan verileri mevcut verilerle birleştirebilir. | Hayır |
storedProcedureParameters | Saklı yordam için parametreler. İzin verilen değerler ad ve değer çiftleridir. Parametrelerin adları ve büyük/küçük harf değerleri saklı yordam parametrelerinin adlarıyla ve büyük/küçük harfleriyle eşleşmelidir. |
Hayır |
writeBatchSize | Toplu iş başına SQL tablosuna eklenecek satır sayısı. İzin verilen değer tamsayıdır (satır sayısı). Varsayılan olarak, hizmet satır boyutuna göre uygun toplu iş boyutunu dinamik olarak belirler. |
Hayır |
writeBatchTimeout | Ekleme, upsert ve saklı yordam işleminin zaman aşımına uğramadan önce tamamlanması için bekleme süresi. İzin verilen değerler zaman aralığı içindir. 30 dakika boyunca "00:30:00" örnektir. Değer belirtilmezse, zaman aşımı varsayılan olarak "00:30:00" olur. |
Hayır |
disableMetricsCollection | Hizmet, kopyalama performansı iyileştirmesi için Azure SQL Veritabanı DTU'ları gibi ölçümleri ve ek ana veritabanı erişimi sunan önerileri toplar. Bu davranışla ilgileniyorsanız, kapatmak için belirtin true . |
Hayır (varsayılan değer )false |
maxConcurrentConnections | Etkinlik çalıştırması sırasında veri deposuna kurulan eş zamanlı bağlantıların üst sınırı. Yalnızca eşzamanlı bağlantıları sınırlamak istediğinizde bir değer belirtin. | Hayır |
WriteBehavior | Kopyalama etkinliğinin verileri Azure SQL Veritabanı yüklemek için yazma davranışını belirtin. İzin verilen değer Insert ve Upsert'tir. Varsayılan olarak hizmet, verileri yüklemek için insert kullanır. |
Hayır |
upsertSettings | Yazma davranışı için ayarların grubunu belirtin. WriteBehavior seçeneği olduğunda Upsert uygulayın. |
Hayır |
altında upsertSettings : |
||
useTempDB | Upsert için geçici tablo olarak genel geçici tablonun mı yoksa fiziksel tablonun mı kullanılacağını belirtin. Varsayılan olarak, hizmet geçici tablo olarak genel geçici tabloyu kullanır. değeridir true . |
Hayır |
interimSchemaName | Fiziksel tablo kullanılıyorsa, ara tablo oluşturmak için ara şemayı belirtin. Not: kullanıcının tablo oluşturma ve silme iznine sahip olması gerekir. Varsayılan olarak, ara tablo havuz tablosuyla aynı şemayı paylaşır. useTempDB seçeneği olduğunda False uygulayın. |
Hayır |
keys | Benzersiz satır belirleme için sütun adlarını belirtin. Tek bir anahtar veya bir dizi anahtar kullanılabilir. Belirtilmezse, birincil anahtar kullanılır. | Hayır |
Örnek 1: Verileri ekleme
"activities":[
{
"name": "CopyToAzureSQLDatabase",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure SQL Database output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureSqlSink",
"tableOption": "autoCreate",
"writeBatchSize": 100000
}
}
}
]
Örnek 2: Kopyalama sırasında saklı yordam çağırma
SQL havuzundaki saklı yordamı çağırma bölümünden daha fazla bilgi edinin.
"activities":[
{
"name": "CopyToAzureSQLDatabase",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure SQL Database output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureSqlSink",
"sqlWriterStoredProcedureName": "CopyTestStoredProcedureWithParameters",
"storedProcedureTableTypeParameterName": "MyTable",
"sqlWriterTableType": "MyTableType",
"storedProcedureParameters": {
"identifier": { "value": "1", "type": "Int" },
"stringData": { "value": "str1" }
}
}
}
}
]
Örnek 3: Upsert verileri
"activities":[
{
"name": "CopyToAzureSQLDatabase",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure SQL Database output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureSqlSink",
"tableOption": "autoCreate",
"writeBehavior": "upsert",
"upsertSettings": {
"useTempDB": true,
"keys": [
"<column name>"
]
},
}
}
}
]
SQL veritabanından paralel kopyalama
Kopyalama etkinliğindeki Azure SQL Veritabanı bağlayıcısı, verileri paralel olarak kopyalamak için yerleşik veri bölümleme sağlar. Veri bölümleme seçeneklerini kopyalama etkinliğinin Kaynak sekmesinde bulabilirsiniz.
Bölümlenmiş kopyalamayı etkinleştirdiğinizde kopyalama etkinliği, verileri bölümlere göre yüklemek için Azure SQL Veritabanı kaynağınızda paralel sorgular çalıştırır. Paralel derece, kopyalama etkinliğindeki parallelCopies
ayar tarafından denetlenilir. Örneğin, dört olarak ayarlarsanızparallelCopies
, hizmet aynı anda belirtilen bölüm seçeneğinize ve ayarlarınıza göre dört sorgu oluşturur ve çalıştırır ve her sorgu Azure SQL Veritabanı verinin bir bölümünü alır.
Özellikle Azure SQL Veritabanı büyük miktarda veri yüklediğinizde veri bölümleme ile paralel kopyalamayı etkinleştirmeniz önerilir. Farklı senaryolar için önerilen yapılandırmalar aşağıdadır. Verileri dosya tabanlı veri deposuna kopyalarken, bir klasöre birden çok dosya olarak yazmanız önerilir (yalnızca klasör adını belirtin), bu durumda performans tek bir dosyaya yazmaktan daha iyidir.
Bölüm seçeneğiyle veri yüklemek için en iyi yöntemler:
- Veri dengesizliği önlemek için bölüm sütunu (birincil anahtar veya benzersiz anahtar gibi) olarak ayırt edici sütunu seçin.
- Tabloda yerleşik bölüm varsa, daha iyi performans elde etmek için "Tablonun fiziksel bölümleri" bölüm seçeneğini kullanın.
- Verileri kopyalamak için Azure Integration Runtime kullanıyorsanız, daha fazla bilgi işlem kaynağı kullanmak için daha büyük "Veri Entegrasyonu Birimleri (DIU)" (>4) ayarlayabilirsiniz. İlgili senaryoları burada kontrol edin.
- "Kopyalama paralelliği derecesi" bölüm numaralarını denetler, bu sayıyı bazen çok büyük ayarlamak performansı düşürür, bu sayıyı (ŞIRKET içinde barındırılan IR düğümlerinin DIU veya sayısı) * (2 - 4) olarak ayarlamanızı öneririz.
Örnek: Fiziksel bölümleri olan büyük tablodan tam yük
"source": {
"type": "AzureSqlSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
Örnek: dinamik aralık bölümü olan sorgu
"source": {
"type": "AzureSqlSource",
"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>"
}
}
Fiziksel bölümü denetlemek için örnek sorgu
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]'
Tabloda fiziksel bölüm varsa, "HasPartition" öğesini aşağıdaki gibi "evet" olarak görürsünüz.
Azure SQL Veritabanı'a veri yüklemek için en iyi yöntem
verileri Azure SQL Veritabanı kopyalarken farklı yazma davranışı gerekebilir:
- Ekleme: Kaynak verilerimde yalnızca yeni kayıtlar var.
- Upsert: Kaynak verilerimde hem eklemeler hem de güncelleştirmeler var.
- Üzerine yaz: Her seferinde bir boyut tablosunun tamamını yeniden yüklemek istiyorum.
- Özel mantıkla yazma: Hedef tabloya son eklemeden önce ek işlemeye ihtiyacım var.
Hizmette yapılandırma ve en iyi yöntemler hakkında ilgili bölümlere bakın.
Verileri ekleme
Verilerin eklenmesi, bu Azure SQL Veritabanı havuz bağlayıcısının varsayılan davranışıdır. Hizmet, tablonuza verimli bir şekilde yazmak için toplu ekleme yapar. Kaynak ve havuzu kopyalama etkinliğinde uygun şekilde yapılandırabilirsiniz.
Verileri upsert etme
Kopyalama etkinliği artık verileri bir veritabanı geçici tablosuna yerel olarak yüklemeyi destekliyor ve anahtar varsa havuz tablosundaki verileri güncelleştirin ve başka bir şekilde yeni veri ekleyin. Kopyalama etkinliklerindeki upsert ayarları hakkında daha fazla bilgi edinmek için bkz. havuz olarak Azure SQL Veritabanı.
Tablonun tamamının üzerine yazma
Kopyalama etkinliği havuzundaki preCopyScript özelliğini yapılandırabilirsiniz. Bu durumda, çalışan her kopyalama etkinliği için hizmet önce betiği çalıştırır. Ardından, verileri eklemek için kopyayı çalıştırır. Örneğin, en son verilerle tablonun tamamının üzerine yazmak için, yeni verileri kaynaktan toplu olarak yüklemeden önce tüm kayıtları silmek için bir betik belirtin.
Özel mantık ile veri yazma
Özel mantıkla veri yazma adımları, Upsert verileri bölümünde açıklananlara benzer. Kaynak verilerin hedef tabloya son kez eklenmesinden önce ek işlem uygulamanız gerektiğinde, hazırlama tablosuna yüklenip saklı yordam etkinliğini çağırabilir veya verileri uygulamak için kopyalama etkinliği havuzundaki saklı yordamı çağırabilir veya Eşleme Veri Akışı kullanabilirsiniz.
SQL havuzundaki saklı yordamı çağırma
Verileri Azure SQL Veritabanı kopyaladığınızda, kaynak tablonun her toplu işleminde ek parametrelerle kullanıcı tarafından belirtilen saklı yordamı yapılandırabilir ve çağırabilirsiniz. Saklı yordam özelliği tablo değerli parametrelerden yararlanır.
Yerleşik kopyalama mekanizmaları amaca hizmet etmediğinde saklı yordamı kullanabilirsiniz. Kaynak verilerin hedef tabloya son eklenmesinden önce ek işlem uygulamak istemenize örnek olarak verilmiştir. Bazı ek işleme örnekleri sütunları birleştirmek, ek değerler aramak ve birden fazla tabloya eklemek istediğinizde verilebilir.
Aşağıdaki örnekte, Azure SQL Veritabanı'da bir tabloya upsert uygulamak için saklı yordamın nasıl kullanılacağı gösterilmektedir. Giriş verilerinin ve havuz Pazarlama tablosunun her birinin üç sütunu olduğunu varsayalım: ProfileID, State ve Category. ProfileID sütununu temel alarak upsert'i yapın ve yalnızca "ProductA" adlı belirli bir kategori için uygulayın.
Veritabanınızda, sqlWriterTableType ile aynı ada sahip tablo türünü tanımlayın. Tablo türünün şeması, giriş verileriniz tarafından döndürülen şemayla aynıdır.
CREATE TYPE [dbo].[MarketingType] AS TABLE( [ProfileID] [varchar](256) NOT NULL, [State] [varchar](256) NOT NULL, [Category] [varchar](256) NOT NULL )
Veritabanınızda sqlWriterStoredProcedureName ile aynı ada sahip saklı yordamı tanımlayın. Belirtilen kaynağınızdaki giriş verilerini işler ve çıkış tablosuyla birleştirilir. Saklı yordamdaki tablo türünün parametre adı, veri kümesinde tanımlanan tableName ile aynıdır.
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
Azure Data Factory veya Synapse işlem hattınızda kopyalama etkinliğinde SQL havuzu bölümünü aşağıdaki gibi tanımlayın:
"sink": { "type": "AzureSqlSink", "sqlWriterStoredProcedureName": "spOverwriteMarketing", "storedProcedureTableTypeParameterName": "Marketing", "sqlWriterTableType": "MarketingType", "storedProcedureParameters": { "category": { "value": "ProductA" } } }
Depolanmış yordamı kullanarak Azure SQL Veritabanı'a veri yazarken havuz, kaynak verileri mini toplu işlemlere böler ve sonra ekleme işlemini yapar, böylece saklı yordamdaki ek sorgu birden çok kez yürütülebilir. Azure SQL Veritabanı'a veri yazmadan önce kopyalama etkinliğinin çalıştırılabilmesi için sorgunuz varsa, bunu saklı yordama eklemeniz önerilmez; kopyalama öncesi betik kutusuna ekleyin.
Eşleme veri akışı özellikleri
Eşleme veri akışındaki verileri dönüştürürken, Azure SQL Veritabanı tabloları okuyabilir ve tablolara yazabilirsiniz. Daha fazla bilgi için bkz . Eşleme veri akışlarında kaynak dönüştürme ve havuz dönüşümü .
Kaynak dönüştürme
Azure SQL Veritabanı özgü ayarlar, kaynak dönüştürmenin Kaynak Seçenekleri sekmesinde kullanılabilir.
Giriş: Kaynağınızı bir tabloya (eşdeğeri Select * from <table-name>
) işaret edip etmediğinizi seçin veya özel bir SQL sorgusu girin.
Sorgu: Giriş alanında Sorgu'yu seçerseniz kaynağınız için bir SQL sorgusu girin. Bu ayar, veri kümesinde seçtiğiniz tüm tabloları geçersiz kılar. Order By yan tümceleri burada desteklenmez, ancak tam SELECT FROM deyimi ayarlayabilirsiniz. Kullanıcı tanımlı tablo işlevlerini de kullanabilirsiniz. select * from udfGetData() , SQL'de tablo döndüren bir UDF'dir. Bu sorgu, veri akışınızda kullanabileceğiniz bir kaynak tablo oluşturur. Sorguları kullanmak, test veya arama için satırları azaltmanın da harika bir yoludur.
İpucu
SQL'deki ortak tablo ifadesi (CTE), eşleme veri akışı Sorgu modunda desteklenmez, çünkü bu modu kullanmanın önkoşulu sorguların SQL sorgusu FROM yan tümcesinde kullanılabilmesidir, ancak CTE'ler bunu yapamaz. CTE'leri kullanmak için aşağıdaki sorguyu kullanarak bir saklı yordam oluşturmanız gerekir:
CREATE PROC CTESP @query nvarchar(max)
AS
BEGIN
EXECUTE sp_executesql @query;
END
Ardından eşleme veri akışının kaynak dönüşümünde Saklı yordam modunu kullanın ve örneğini @query
with CTE as (select 'test' as a) select * from CTE
ayarlayın. Ardından CTES'yi beklendiği gibi kullanabilirsiniz.
Saklı yordam: Kaynak veritabanınızdan yürütülen bir saklı yordamdan projeksiyon ve kaynak veri oluşturmak istiyorsanız bu seçeneği belirleyin. Şemayı, yordam adını ve parametreleri yazabilir veya hizmetin şemaları ve yordam adlarını bulmasını istemek için Yenile'ye tıklayabilirsiniz. Ardından, formu @paraName
kullanarak tüm yordam parametrelerini içeri aktarmak için İçeri Aktar'a tıklayabilirsiniz.
- SQL Örneği:
Select * from MyTable where customerId > 1000 and customerId < 2000
- Parametreli SQL Örneği:
"select * from {$tablename} where orderyear > {$year}"
Toplu iş boyutu: Büyük verileri okumalara ayırmak için bir toplu iş boyutu girin.
Yalıtım Düzeyi: Eşleme veri akışındaki SQL kaynakları için varsayılan değer okunmamış olarak ayarlanır. Burada yalıtım düzeyini şu değerlerden biriyle değiştirebilirsiniz:
- Okundu
- Okunmamış
- Yinelenebilir Okuma
- Serileştirilebilir
- Yok (yalıtım düzeyini yoksay)
Artımlı ayıklamayı etkinleştir: ADF'ye yalnızca işlem hattının son yürütülmesinden bu yana değişen satırları işlemesini bildirmek için bu seçeneği kullanın. Şema kaymasıyla artımlı ayıklamayı etkinleştirmek için, Yerel Değişiklik Veri Yakalama için etkinleştirilmiş tablolar yerine Artımlı / Filigran sütunlarına göre tabloları seçin.
Artımlı sütun: Artımlı ayıklama özelliğini kullanırken, kaynak tablonuzda filigran olarak kullanmak istediğiniz tarih/saat veya sayısal sütunu seçmeniz gerekir.
Yerel değişiklik veri yakalamayı etkinleştir(Önizleme): ADF'ye işlem hattının son yürütülmesinden bu yana yalnızca SQL değişiklik veri yakalama teknolojisi tarafından yakalanan delta verilerini işlemesini bildirmek için bu seçeneği kullanın. Bu seçenekle, satır ekleme, güncelleştirme ve silme dahil olmak üzere delta verileri artımlı sütun gerekmeden otomatik olarak yüklenir. ADF'de bu seçeneği kullanmadan önce Azure SQL DB'de değişiklik verilerini yakalamayı etkinleştirmeniz gerekir. ADF'de bu seçenek hakkında daha fazla bilgi için bkz . yerel değişiklik verileri yakalama.
Okumaya baştan başlayın: Artımlı ayıklama ile bu seçeneğin ayarlanması, ADF'ye artımlı ayıklamanın açık olduğu bir işlem hattının ilk yürütülmesinde tüm satırları okumasını bildirecektir.
Havuz dönüşümü
Azure SQL Veritabanı özgü ayarlar, havuz dönüştürmesinin Ayarlar sekmesinde kullanılabilir.
Güncelleştirme yöntemi: Veritabanı hedefinizde hangi işlemlere izin verileceğini belirler. Varsayılan değer yalnızca eklemelere izin vermektir. Satırları güncelleştirmek, eklemek veya silmek için, bu eylemlerin satırlarını etiketlemek için bir değişiklik satırı dönüştürmesi gerekir. Güncelleştirmeler, upsert'ler ve silmeler için, hangi satırın değiştirileceğini belirlemek için bir anahtar sütun veya sütun ayarlanmalıdır.
Burada anahtar olarak seçtiğiniz sütun adı, sonraki upsert, delete güncelleştirmesinin bir parçası olarak hizmet tarafından kullanılır. Bu nedenle, Havuz eşlemesinde var olan bir sütun seçmelisiniz. Değeri bu anahtar sütununa yazmak istemiyorsanız "Anahtar sütunlarını yazmayı atla" seçeneğine tıklayın.
Burada hedef Azure SQL Veritabanı tablonuzu güncelleştirmek için kullanılan anahtar sütununu parametreleştirebilirsiniz. Bileşik anahtar için birden çok sütun varsa, "Özel İfade"ye tıkladığınızda veri akışı ifade dilini kullanarak dinamik içerik ekleyebilirsiniz. Bu, bileşik anahtar için sütun adlarına sahip bir dize dizisi içerebilir.
Tablo eylemi: Yazmadan önce hedef tablodan tüm satırların yeniden oluşturulmasını veya kaldırılmasını belirler.
- Yok: Tabloda hiçbir eylem yapılmaz.
- Yeniden oluştur: Tablo bırakılır ve yeniden oluşturulur. Dinamik olarak yeni bir tablo oluşturuyorsanız gereklidir.
- Kesme: Hedef tablodaki tüm satırlar kaldırılır.
Toplu iş boyutu: Her demette kaç satır yazıldığını denetler. Daha büyük toplu iş boyutları sıkıştırmayı ve bellek iyileştirmeyi geliştirir, ancak verileri önbelleğe alırken bellek özel durumlarının dışına çıkma riskiyle karşı karşıyadır.
TempDB kullanma: Varsayılan olarak, hizmet verileri yükleme işleminin bir parçası olarak depolamak için genel bir geçici tablo kullanır. Alternatif olarak ,"TempDB Kullan" seçeneğinin işaretini kaldırabilir ve bunun yerine hizmetteki geçici tutma tablosunu bu Havuz için kullanılan veritabanında bulunan bir kullanıcı veritabanında depolamasını isteyebilirsiniz.
SQL Öncesi ve Sonrası betikleri: Havuz veritabanınıza veri yazıldıktan önce (ön işleme) ve sonra (işleme sonrası) yürütülecek çok satırlı SQL betiklerini girin
İpucu
- Birden çok komut içeren tek toplu iş betiklerini birden çok toplu iş olarak bölmeniz önerilir.
- Yalnızca basit bir güncelleştirme sayısı döndüren Veri Tanımlama Dili (DDL) ve Veri İşleme Dili (DML) deyimleri toplu iş kapsamında çalıştırılabilir. Toplu işlem gerçekleştirme'den daha fazla bilgi edinin
Hata satırı işleme
Azure SQL DB'ye yazarken, hedef tarafından ayarlanan kısıtlamalar nedeniyle belirli veri satırları başarısız olabilir. Bazı sık karşılaşılan hatalar şunlardır:
- Dize veya ikili veriler tabloda kesilebilir
- NULL değeri sütuna eklenemiyor
- INSERT deyimi CHECK kısıtlamasıyla çakışıyor
Varsayılan olarak, veri akışı çalıştırması aldığı ilk hatada başarısız olur. Tek tek satırlarda hata olsa bile veri akışınızın tamamlanmasını sağlayan hatada devam etmeyi seçebilirsiniz. Hizmet, bu hata satırlarını işlemeniz için farklı seçenekler sağlar.
İşlem İşleme: Verilerinizin tek bir işlemde mi yoksa toplu olarak mı yazileceğini seçin. Tek işlem daha kötü performans sağlar, ancak yazılan hiçbir veri işlem tamamlanana kadar başkaları tarafından görülmeyecektir.
Reddedilen verilerin çıktısını alma: Etkinleştirilirse, hata satırlarını Azure Blob Depolama bir csv dosyasına veya seçtiğiniz bir Azure Data Lake Storage 2. Nesil hesabına aktarabilirsiniz. Bu, hata satırlarını üç ek sütunla yazar: INSERT veya UPDATE gibi SQL işlemi, veri akışı hata kodu ve satırdaki hata iletisi.
Hatanın başarılı olduğunu bildirin: Etkinleştirilirse, hata satırları bulunsa bile veri akışı başarılı olarak işaretlenir.
Azure SQL Veritabanı için veri türü eşlemesi
Veriler Azure SQL Veritabanı'den veya Azure SQL Veritabanı kopyalandığında, Azure SQL Veritabanı veri türlerinden Azure Data Factory ara veri türlerine aşağıdaki eşlemeler kullanılır. Aynı eşlemeler, Azure Data Factory'yi doğrudan uygulayan Synapse işlem hattı özelliği tarafından kullanılır. Kopyalama etkinliğinin kaynak şemayı ve veri türünü havuza nasıl eşlediğini öğrenmek için bkz . Şema ve veri türü eşlemeleri.
veri türünü Azure SQL Veritabanı | Data Factory geçici veri türü |
---|---|
bigint | Int64 |
ikili | Bayt[] |
bit | Boolean |
char | Dize, Karakter[] |
tarih | DateTime |
Datetime | DateTime |
datetime2 | DateTime |
Datetimeoffset | DateTimeOffset |
Ondalık | Ondalık |
FILESTREAM özniteliği (varbinary(max)) | Bayt[] |
Satışa Arz | Çift |
görüntü | Bayt[] |
int | Int32 |
para | Ondalık |
nchar | Dize, Karakter[] |
ntext | Dize, Karakter[] |
sayısal | Ondalık |
nvarchar | Dize, Karakter[] |
real | Tekli |
rowversion | Bayt[] |
smalldatetime | DateTime |
smallint | Int16 |
smallmoney | Ondalık |
sql_variant | Object |
text | Dize, Karakter[] |
time | TimeSpan |
timestamp | Bayt[] |
tinyint | Bayt |
uniqueidentifier | GUID |
varbinary | Bayt[] |
varchar | Dize, Karakter[] |
xml | String |
Not
Ondalık ara türüne eşleyen veri türleri için şu anda Kopyalama etkinliği en fazla 28 duyarlık destekler. Duyarlık değeri 28'den büyük olan verileriniz varsa SQL sorgusunda bir dizeye dönüştürmeyi göz önünde bulundurun.
Arama etkinliği özellikleri
Özellikler hakkında ayrıntılı bilgi edinmek için Arama etkinliği'ne bakın.
GetMetadata etkinlik özellikleri
Özellikler hakkında ayrıntılı bilgi edinmek için GetMetadata etkinliğini denetleyin
Always Encrypted kullanma
Always Encrypted ile Azure SQL Veritabanı'dan/Azure SQL Veritabanı veri kopyalarken aşağıdaki adımları izleyin:
Sütun Ana Anahtarı'nı (CMK) bir Azure Key Vault'ta depolayın. Azure Key Vault kullanarak Always Encrypted'ı yapılandırma hakkında daha fazla bilgi edinin
Sütun Ana Anahtarı'nın (CMK) depolandığı anahtar kasasına eriştiğinden emin olun. Gerekli izinler için bu makaleye bakın.
SQL veritabanınıza bağlanmak için bağlı hizmet oluşturun ve yönetilen kimlik veya hizmet sorumlusu kullanarak 'Always Encrypted' işlevini etkinleştirin.
Not
Azure SQL Veritabanı Always Encrypted aşağıdaki senaryoları destekler:
- Kaynak veya havuz veri depoları, anahtar sağlayıcısı kimlik doğrulama türü olarak yönetilen kimlik veya hizmet sorumlusu kullanıyor.
- Hem kaynak hem de havuz veri depoları, anahtar sağlayıcısı kimlik doğrulama türü olarak yönetilen kimliği kullanır.
- Hem kaynak hem de havuz veri depoları, anahtar sağlayıcısı kimlik doğrulama türüyle aynı hizmet sorumlusunu kullanıyor.
Not
Şu anda Azure SQL Veritabanı Always Encrypted yalnızca eşleme veri akışlarında kaynak dönüşümü için desteklenmektedir.
Yerel değişiklik verisi yakalama
Azure Data Factory, SQL Server, Azure SQL DB ve Azure SQL MI için yerel değişiklik verileri yakalama özelliklerini destekleyebilir. SQL depolarında satır ekleme, güncelleştirme ve silme dahil olmak üzere değiştirilen veriler otomatik olarak algılanabilir ve ADF eşleme veri akışı tarafından ayıklanabilir. Eşleme veri akışında kod deneyimi olmadan, kullanıcılar bir veritabanını hedef depo olarak ekleyerek SQL depolarından kolayca veri çoğaltma senaryosu elde edebilir. Dahası, kullanıcılar SQL depolarından artımlı ETL senaryosu elde etmek için arasında herhangi bir veri dönüştürme mantığı da oluşturabilir.
Son çalıştırmadan otomatik olarak değiştirilen verileri alabilmeniz için denetim noktasının ADF tarafından kaydedilebilmesi için işlem hattı ve etkinlik adını değiştirmediğinizden emin olun. İşlem hattı adınızı veya etkinlik adınızı değiştirirseniz denetim noktası sıfırlanır ve bu da sizi baştan başlamanıza veya bir sonraki çalıştırmada değişiklikler almanıza neden olur. İşlem hattı adını veya etkinlik adını değiştirmek istiyor ancak son çalıştırmadan otomatik olarak değiştirilen verileri almak için denetim noktasını yine de tutuyorsanız, bunu elde etmek için veri akışı etkinliğinde kendi Denetim Noktası anahtarınızı kullanın.
İşlem hattında hata ayıkladığınızda, bu özellik aynı şekilde çalışır. Hata ayıklama çalıştırması sırasında tarayıcınızı yenilediğinizde denetim noktasının sıfırlanacağını unutmayın. Hata ayıklama çalıştırmasından elde edilen işlem hattı sonucundan memnun olduktan sonra işlem hattını yayımlamaya ve tetikleme işlemine geçebilirsiniz. Yayımlanan işlem hattınızı ilk tetiklediğiniz anda, başlangıçtan itibaren otomatik olarak yeniden başlatılır veya bundan sonra değişiklikler alır.
İzleme bölümünde her zaman bir işlem hattını yeniden çalıştırma şansınız olur. Bunu yaparken, değiştirilen veriler her zaman seçili işlem hattı çalıştırmanızın önceki denetim noktasından yakalanır.
Örnek 1:
Sql CDC özellikli veri kümesine başvuruda bulunan bir kaynak dönüşümünü eşleme veri akışındaki bir veritabanına başvuruda bulunan havuz dönüşümüyle doğrudan zincirlediğinizde, SQL kaynağında gerçekleşen değişiklikler otomatik olarak hedef veritabanına uygulanır, böylece veritabanları arasında veri çoğaltma senaryolarını kolayca alabilirsiniz. Hedef veritabanında eklemeye izin vermek, güncelleştirmeye izin vermek veya silmeye izin vermek isteyip istemediğinizi seçmek için havuz dönüşümünde güncelleştirme yöntemini kullanabilirsiniz. Eşleme veri akışındaki örnek betik aşağıdaki gibidir.
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
Örnek 2:
SQL CDC aracılığıyla veritabanı arasında veri çoğaltması yerine ETL senaryolarını etkinleştirmek istiyorsanız, satırları farklı işlem türleriyle ayırt etmek için isInsert(1), isUpdate(1) ve isDelete(1) gibi veri akışını eşlemede ifadeleri kullanabilirsiniz. Aşağıdaki örnek betikler, veri akışını değerle bir sütun türetmeye yönelik örnek betiklerden biridir: Eklenen satırları belirtmek için 1, güncelleştirilmiş satırları belirtmek için 2 ve delta verilerini işlemek üzere aşağı akış dönüşümleri için silinen satırları belirtmek için 3.
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
Bilinen sınırlama:
- ADF tarafından yalnızca SQL CDC'den yapılan net değişiklikler cdc.fn_cdc_get_net_changes_ aracılığıyla yüklenir.
Azure SQL Veritabanı sürümünü yükseltme
Azure SQL Veritabanı sürümünü yükseltmek için Bağlı hizmeti düzenle sayfasında, Sürüm altında Önerilen'i seçin ve önerilen sürüm için Bağlı hizmet özelliklerine başvurarak bağlı hizmeti yapılandırın.
Önerilen ve eski sürüm arasındaki farklar
Aşağıdaki tabloda, önerilen ve eski sürümü kullanan Azure SQL Veritabanı arasındaki farklar gösterilmektedir.
Önerilen sürüm | Eski sürüm |
---|---|
aracılığıyla TLS 1.3'i destekleyin encrypt strict . |
TLS 1.3 desteklenmez. |
İlgili içerik
Kopyalama etkinliği tarafından kaynak ve havuz olarak desteklenen veri depolarının listesi için bkz . Desteklenen veri depoları ve biçimleri.