Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ŞUNLARA UYGULANIR:
Azure Data Factory
Azure Synapse Analytics
İpucu
Microsoft Fabric'daki
Bu makalede, Copy Etkinliği kullanarak verilerin Azure SQL Managed Instance'a ve Azure SQL Managed Instance'dan nasıl kopyalanacağı ve Data Flow kullanılarak verilerin Azure SQL Managed Instance içinde nasıl dönüştürüleceği açıklanmaktadır. Daha fazla bilgi edinmek için Azure Data Factory ve Synapse Analytics giriş makalelerini okuyun.
Desteklenen özellikler
Bu Azure SQL Managed Instance bağlayıcısı aşağıdaki özellikler için desteklenir:
| Desteklenen özellikler | Kızılötesi | Yönetilen özel uç nokta |
|---|---|---|
| Copy activity (kaynak/havuz) | (1) (2) | ✓ Genel önizleme |
| Veri akışının haritalanması (kaynak/hedef) | (1) | ✓ Genel önizleme |
| Arama etkinliği | (1) (2) | ✓ Genel önizleme |
| GetMetadata etkinliği | (1) (2) | ✓ Genel önizleme |
| Betik etkinliği | (1) (2) | ✓ Genel önizleme |
| Saklı yordam etkinliği | (1) (2) | ✓ Genel önizleme |
(1) Azure tümleştirme çalışma zamanı (2) Yerel barındırılan tümleştirme çalışma zamanı
Copy activity için bu Azure SQL Database bağlayıcısı şu işlevleri destekler:
- Azure kaynakları için hizmet sorumlusu veya yönetilen kimliklerle ya da Microsoft Entra uygulama belirteci kimlik doğrulamasıyla SQL kimlik doğrulamasını kullanarak veri kopyalama.
- Kaynak olarak, SQL sorgusu veya saklı yordam kullanarak veri alma. Ayrıca SQL MI kaynağından paralel kopyalamayı da seçebilirsiniz. Ayrıntılar için SQL MI'den 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.
Önkoşullar
SQL Managed Instance public uç noktasına erişmek için yönetilen Azure tümleştirme çalışma zamanı kullanabilirsiniz. Hizmetin veritabanınıza bağlanabilmesi için genel uç noktayı etkinleştirdiğinizden ve ağ güvenlik grubunda genel uç nokta trafiğine izin verdiğinizden emin olun. Daha fazla bilgi için bu kılavuza bakın.
SQL Managed Instance özel uç noktasına erişmek için veritabanına erişebilecek bir self-hosted integration runtime ayarlayın. Eğer kendinden barındırılan entegrasyon çalışma zamanını yönetilen örneğinizle aynı sanal ağda sağlıyorsanız, entegrasyon çalışma zamanı makinenizin yönetilen örneğinizden farklı bir alt ağda bulunduğundan emin olun. Şirket içinde barındırılan tümleştirme çalışma zamanınızı yönetilen örneğinizden farklı bir sanal ağda sağlıyorsanız, sanal ağ eşleştirmesi veya sanal ağdan sanal ağa bağlantı kullanabilirsiniz. Daha fazla bilgi için bkz. Uygulamanızı SQL Managed Instance bağlama.
Kullanmaya başlayın
Kopyalama etkinliğini bir işlem hattıyla gerçekleştirmek için aşağıdaki araçlardan veya SDK'lardan birini kullanabilirsiniz:
- Veri Kopyalama aracı
- Azure portalı
- .NET SDK
- Python SDK'sı
- Azure PowerShell
- REST API
- Azure Resource Manager şablonu
Kullanıcı arabirimini kullanarak Azure SQL Yönetilen örneğine bağlı hizmet oluşturma
Azure portalı kullanıcı arabiriminde SQL Yönetilen örneğine bağlı bir hizmet oluşturmak için aşağıdaki adımları kullanın.
Azure Data Factory veya Synapse çalışma alanınızdaki Yönet sekmesine göz atın ve Bağlı Hizmetler'i seçin, ardından Yeni'ye tıklayın:
Azure Data Factory UI ile yeni bir bağlı hizmet oluşturma ekranının ekran görüntüsü. SQL'i arayın ve Azure SQL Server Managed Instance 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, SQL Managed Instance bağlayıcısına özgü Azure Data Factory varlıkları tanımlamak için kullanılan özelliklerle ilgili ayrıntılar sağlanır.
Bağlı hizmet özellikleri
Azure SQL Managed Instance bağlayıcısı Recommended sürümü TLS 1.3'i destekler. Azure SQL Managed Instance bağlayıcınızın sürümünü Legacy sürümünden yükseltmek için bu section'a başvurun. Özellik ayrıntıları için ilgili bölümlere bakın.
Önerilen sürüm
Bu genel özellikler, Recommended sürümünü uyguladığınızda Azure SQL Managed Instance bağlı bir hizmet için desteklenir:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| Tip | type özelliği AzureSqlMI olarak ayarlanmalıdır. | Yes |
| sunucu | Bağlanmak istediğiniz SQL server örneğinin adı veya ağ adresi. | Yes |
| veritabanı | Veritabanının adı. | Yes |
| kimlik doğrulama türü | 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 |
| daimaŞifrelenmişAyarlar | Yönetilen kimlik veya hizmet ilkesi kullanarak SQL server'da depolanan hassas verileri korumak amacıyla Always Encrypted'i 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 (doğru için, varsayılan)/isteğe bağlı (yanlış için)/katı. | Hayır |
| trustServerCertificate | Güveni doğrulamak için sertifika zinciri atlanırken kanalın şifrelenip şifrelenmediğini belirtin. | Hayır |
| SertifikadakiAnaMakineAdı | 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. Yönetilen örneğinizin genel uç noktası varsa ve hizmetin erişimine izin veriyorsa, kendi kendine barındırılan tümleştirme çalışma zamanı veya Azure tümleştirme çalışma zamanı kullanabilirsiniz. Belirtilmezse, varsayılan Azure tümleştirme çalışma zamanı kullanılır. | Yes |
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 ReadOnly ve ReadWrite. |
Hayır |
| connectTimeout | Denemeyi sonlandırmadan ve hata oluşturmadan önce sunucu bağlantısını bekleme süresi (saniye cinsinden). | Hayır |
| bağlantıTekrarDenemeSayısı | Tanımlanan bir boşta bağlantı hatasından sonra denenen yeniden bağlantı girişimlerinin sayısı. Değer 0 ile 255 arasında bir tamsayı olmalıdır. | Hayır |
| connectRetryInterval | Boşta bağlantı hatası belirlendikten sonra her bir 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 true veya false'dir. tr-TR: false belirttiğinizde, bağlantıda kullanıcı adı ve şifre belirtilip belirtilmediğini belirtin.
true belirtilirken, 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 (birden fazla aktif sonuç kümesi) | İzin verilen değerler true veya false'dir. 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 true veya false'dir. 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 |
| Toplama | İzin verilen değerler true veya false'dir. "true" belirttiğinizde, bağlantı havuza alınacaktır. Bağlantıyı false olarak belirttiğinizde, 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 |
| şifre | Kullanıcı adının parolası. Güvenli bir şekilde depolamak için bu alanı SecureString olarak işaretleyin. İsterseniz Azure Key Vault içinde depolanan bir gizli anahtarı kullanabilirsiniz. | Yes |
Örnek 1: SQL kimlik doğrulaması kullanma
{
"name": "AzureSqlMILinkedService",
"properties": {
"type": "AzureSqlMI",
"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"
}
}
}
{
"name": "AzureSqlMILinkedService",
"properties": {
"type": "AzureSqlMI",
"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 3: Always Encrypted ile SQL kimlik doğrulaması kullanma
{
"name": "AzureSqlMILinkedService",
"properties": {
"type": "AzureSqlMI",
"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. Bu alanı güvenli bir şekilde depolamak için SecureString olarak işaretleyin veya Azure Key Vault'ta depolanan bir sırrı referans alın. | Yes |
| kiracı | Uygulamanızın bulunduğu etki alanı adı veya kiracı kimliği gibi kiracı bilgilerini belirtin. Fare imlecini Azure portal'ının sağ üst köşesine getirerek erişin. | 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, hizmetin bulut ortamı kullanılır. |
Hayır |
Aşağıdaki adımları da izlemeniz gerekir:
Managed Instance için Microsoft Entra yöneticisi sağlama adımlarını izleyin.
Azure portalından 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
Hizmet sorumlusu için oturum açma bilgileri oluşturun. SQL Server Management Studio'de (SSMS), sysadmin olan bir SQL Server hesabı kullanarak yönetilen örneğinize bağlanın. Ana veritabanında aşağıdaki T-SQL'i çalıştırın:
CREATE LOGIN [your application name] FROM EXTERNAL PROVIDERHizmet sorumlusu için bağımsız veritabanı kullanıcıları oluşturun. Veri kopyalamak istediğiniz veritabanına veya kopyalayacağınız veritabanından bağlanın, aşağıdaki T-SQL'i çalıştırın:
CREATE USER [your application name] FROM EXTERNAL PROVIDERSQL kullanıcıları ve diğerleri 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 e.g. db_owner] ADD MEMBER [your application name]SQL Managed Instance bağlı hizmeti yapılandırın.
Örnek: hizmet sorumlusu kimlik doğrulamayı kullanma
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlMI",
"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 atamalı yönetilen kimlik doğrulama
Veri fabrikası veya Synapse çalışma alanı, diğer Azure hizmetlerine kimlik doğrulama için hizmeti temsil eden, Azure kaynakları için sistem tarafından atanan yönetilen bir kimlikle ilişkilendirilebilir. Bu yönetilen kimliği SQL Managed Instance kimlik doğrulaması için kullanabilirsiniz. Belirlenen hizmet, bu kimliği kullanarak veritabanınızdan veya veritabanınıza 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.
Managed Instance için Microsoft Entra yöneticisi sağlama adımlarını izleyin.
Sistem tarafından atanan yönetilen kimlik için oturum açma bilgileri oluşturun. SQL Server Management Studio'de (SSMS), sysadmin olan bir SQL Server hesabı kullanarak yönetilen örneğinize bağlanın. Ana veritabanında aşağıdaki T-SQL'i çalıştırın:
CREATE LOGIN [your_factory_or_workspace_ name] FROM EXTERNAL PROVIDERSistem tarafından atanan yönetilen kimlik için bağımsız veritabanı kullanıcıları oluşturun. Veri kopyalamak istediğiniz veritabanına veya kopyalayacağınız veritabanından bağlanın, aşağıdaki T-SQL'i çalıştırın:
CREATE USER [your_factory_or_workspace_name] FROM EXTERNAL PROVIDERSql kullanıcıları ve diğer kullanıcılar için normalde yaptığınız gibi sistem tarafından atanan 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 e.g. db_owner] ADD MEMBER [your_factory_or_workspace_name]SQL Managed Instance bağlı hizmeti yapılandırın.
Örnek: Sistem tarafından atanan yönetilen kimlik doğrulaması kullanır
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlMI",
"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ı atanmış yönetilen kimlik doğrulaması
Veri fabrikası veya Synapse çalışma alanı, diğer Azure hizmetlerinde kimlik doğrulaması için hizmeti temsil eden kullanıcı tarafından atanan yönetilen kimliklerle ilişkilendirilebilir. Bu yönetilen kimliği SQL Managed Instance kimlik doğrulaması için kullanabilirsiniz. Belirlenen hizmet, bu kimliği kullanarak veritabanınızdan veya veritabanınıza 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:
Managed Instance için Microsoft Entra yöneticisi sağlama adımlarını izleyin.
Kullanıcı tarafından atanan yönetilen kimlik için oturum açma bilgileri oluşturun. SQL Server Management Studio'de (SSMS), sysadmin olan bir SQL Server hesabı kullanarak yönetilen örneğinize bağlanın. Ana veritabanında aşağıdaki T-SQL'i çalıştırın:
CREATE LOGIN [your_factory_or_workspace_ name] FROM EXTERNAL PROVIDERKullanıcı tarafından atanan yönetilen kimlik için bağımsız veritabanı kullanıcıları oluşturun. Veri kopyalamak istediğiniz veritabanına veya kopyalayacağınız veritabanından bağlanın, aşağıdaki T-SQL'i çalıştırın:
CREATE USER [your_factory_or_workspace_name] FROM EXTERNAL PROVIDERKullanı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 e.g. db_owner] ADD MEMBER [your_factory_or_workspace_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.
SQL Managed Instance bağlı hizmeti yapılandırın.
Örnek: kullanıcı tarafından atanan yönetilen kimlik doğrulamayı kullanır
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlMI",
"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, Legacy sürümünü uyguladığınızda Azure SQL Managed Instance bağlı bir hizmet için desteklenir:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| Tip | type özelliği AzureSqlMI olarak ayarlanmalıdır. | Yes |
| bağlantı dizesi | Bu özellik, SQL kimlik doğrulaması kullanarak SQL Managed Instance bağlanmak için gereken connectionString bilgilerini belirtir. Daha fazla bilgi için aşağıdaki örneklere bakın. Varsayılan bağlantı noktası 1433'tür. SQL Managed Instance genel uç noktayla kullanıyorsanız 3342 numaralı bağlantı noktasını açıkça belirtin. Ayrıca Azure Key Vault bir parola koyabilirsiniz. SQL kimlik doğrulamasıysa password yapılandırmasını bağlantı dizgesinden çıkarın. Daha fazla bilgi için bkz. Azure Key Vault'da kimlik bilgilerini depolama. |
Yes |
| daimaŞifrelenmişAyarlar | Yönetilen kimlik veya hizmet ilkesi kullanarak SQL server'da depolanan hassas verileri korumak amacıyla Always Encrypted'i etkinleştirmek için gereken alwaysencryptedsettings bilgilerini belirtin. Daha fazla bilgi için Always Encrypted'i Kullanma Bölümü'ne bakın. 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. Yönetilen örneğinizin genel uç noktası varsa ve hizmetin erişimine izin veriyorsa, kendi kendine barındırılan tümleştirme çalışma zamanı veya Azure tümleştirme çalışma zamanı kullanabilirsiniz. Belirtilmezse, varsayılan Azure tümleştirme çalışma zamanı kullanılır. | Yes |
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 doğrulaması
- Eski sürüm için kullanıcı atamalı yönetilen 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. Bu alanı güvenli bir şekilde depolamak için SecureString olarak işaretleyin veya Azure Key Vault'ta depolanan bir sırra referans verin. | Yes |
| kiracı | Uygulamanızın bulunduğu etki alanı adı veya kiracı kimliği gibi kiracı bilgilerini belirtin. Fare imlecini Azure portal'ının sağ üst köşesine getirerek erişin. | 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 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ı atanmış yönetilen 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ılabilecek bölümlerin ve özelliklerin tam listesi için veri kümeleri makalesine bakın. Bu bölümde, SQL Managed Instance veri kümesi tarafından desteklenen özelliklerin listesi sağlanır.
SQL Managed Instance'a veri kopyalamak için ve SQL Managed Instance'tan veri kopyalamak için aşağıdaki özellikler desteklenir:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| Tip | Veri kümesinin tür özelliği AzureSqlMITable olarak ayarlanmalıdır. | Yes |
| şema | Şemanın adı. | Kaynak için Hayır, havuz için Evet |
| tablo | Tablo/görünümün adı. | Kaynak için Hayır, havuz için Evet |
| tabloAdı | Ş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 schema ve table kullanın. |
Kaynak için Hayır, havuz için Evet |
Örnek
{
"name": "AzureSqlMIDataset",
"properties":
{
"type": "AzureSqlMITable",
"linkedServiceName": {
"referenceName": "<SQL Managed Instance linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"typeProperties": {
"schema": "<schema_name>",
"table": "<table_name>"
}
}
}
Copy activity özellikleri
Etkinlikleri tanımlamak için kullanılabilecek bölümlerin ve özelliklerin tam listesi için İşlem Hatları makalesine bakın. Bu bölümde, SQL Managed Instance kaynağı ve havuzu tarafından desteklenen özelliklerin listesi sağlanır.
Kaynak olarak SQL Managed Instance
İpucu
Veri bölümlemeyi kullanarak SQL MI'den verileri verimli bir şekilde yüklemek için SQL MI'den paralel kopyalama bölümünden daha fazla bilgi edinin.
SQL Managed Instance verilerini kopyalamak için kopyalama etkinliği kaynağında aşağıdaki özellikler desteklenir:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| Tip | Kopyalama etkinliği kaynağının type özelliği SqlMISource olarak ayarlanmalıdır. | Yes |
| sqlReaderQuery | Bu özellik, verileri okumak için özel SQL sorgusunu kullanır.
select * from MyTable bunun bir örneğidir. |
Hayır |
| sqlReaderStoredProcedureName | Bu özellik, kaynak tablodan verileri okuyan saklı yordamın adıdır. Saklı yordamda son SQL ifadesi bir SELECT deyimi olmalıdır. | Hayır |
| saklıProsedürParametreleri | Bu parametreler saklı yordam içindir. İzin verilen değerler ad veya değer çiftleridir. Parametrelerin adları ve büyük/küçük harf değerleri, saklı prosedür parametrelerinin adları ve büyük/küçük harfleriyle eşleşmelidir. |
Hayır |
| yalıtım seviyesi (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 |
| bölüm seçenekleri | SQL MI'den 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 (yani değil None), SQL MI'den verileri eşzamanlı olarak yüklemek için paralellik derecesi kopyalama etkinliğindeki parallelCopies ayar tarafından denetlenmektedir. |
Hayır |
| bölüm ayarları | Veri bölümleme ayarlarının grubunu belirtin. Bölüm seçeneği ` None` olmadığında 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 datetime2datetimeoffset) 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 DynamicRange olduğunda uygulayın. Kaynak verileri almak için bir sorgu kullanıyorsanız, ?DfDynamicRangePartitionCondition WHERE yan tümcesine bağlayın. Bir örnek için SQL veritabanından paralel kopyalama bölümüne bakın. |
Hayır |
| bölümÜstSınır | Bölüm aralığı ayırma için bölüm sütununun maksimum 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 DynamicRange olduğunda uygulayın. Bir örnek için SQL veritabanından paralel kopyalama bölümüne bakın. |
Hayır |
| partitionLowerBound | Bölüntü aralığı bölme için bölüntü sütununun en küçü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 DynamicRange olduğunda 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:
- SqlMISource için sqlReaderQuery belirtilirse, kopyalama etkinliği verileri almak için bu sorguyu SQL Managed Instance kaynağında çalıştırır. Saklı yordamın parametre alması durumunda, sqlReaderStoredProcedureName ve storedProcedureParameters belirterek saklı yordamı belirleyebilirsiniz.
- 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.
Örnek: SQL sorgusu kullanma
"activities":[
{
"name": "CopyFromAzureSqlMI",
"type": "Copy",
"inputs": [
{
"referenceName": "<SQL Managed Instance input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlMISource",
"sqlReaderQuery": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Örnek: Saklı prosedür kullanma
"activities":[
{
"name": "CopyFromAzureSqlMI",
"type": "Copy",
"inputs": [
{
"referenceName": "<SQL Managed Instance input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlMISource",
"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 SQL Managed Instance
İpucu
SQL Managed Instance'a veri yüklemek için
Verileri SQL Managed Instance'a kopyalamak için kopyalama etkinliği hedef bölümünde aşağıdaki özellikler desteklenir:
| Özellik | Açıklama | Gerekli |
|---|---|---|
| Tip | Kopyalama etkinliği hedefinin type özelliği SqlMISink olarak ayarlanmalıdır. | Yes |
| preCopyScript | Bu özellik, SQL Managed Instance veri yazmadan önce kopyalama etkinliğinin çalıştırılabilmesi için bir SQL sorgusu belirtir. Kopyalama çalıştırması başına yalnızca bir kez çağrılır. Önceden yüklenmiş verileri temizlemek için bu özelliği kullanabilirsiniz. | Hayır |
| tabloSeçeneği | 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 her toplu işlem için ç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 .Örneğe bakın: SQL havuzundaki saklı yordamı çağırma. |
Hayır |
| storedProcedureTabloTipParametreAdı | 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 |
| saklıProsedürParametreleri | Saklı yordam için parametreler. İzin verilen değerler ad ve değer çiftleridir. Parametre adları ve büyük/küçük harf uyumu, saklı yordam parametrelerinin adları ve büyük/küçük harf uyumuyla eşleşmelidir. |
Hayır |
| writeBatchSize | SQL tablosuna toplu işlem başına eklenecek satır sayısı. İzin verilen değerler, satır sayısı için tamsayılardır. 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. Bir örnek, 30 dakikanın "00:30:00" olarak gösterilmesidir. Değer belirtilmezse, zaman aşımı varsayılan olarak "00:30:00" olur. |
Hayır |
| Eşzamanlı Bağlantıların Maksimum Sayısı | 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 |
| Yazma Davranışı | Azure SQL MI'ye veri yüklemek için kopyalama etkinliğinin 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 Upsert olduğunda 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 ara tablo olarak global 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 Falseuygulayın. |
Hayır |
| anahtarlar | 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": "CopyToAzureSqlMI",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<SQL Managed Instance output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SqlMISink",
"tableOption": "autoCreate",
"writeBatchSize": 100000
}
}
}
]
Örnek 2: Kopyalama sırasında saklı yordam çağırma
SQL MI havuzundaki saklı yordamı çağırma bölümünden daha fazla bilgi edinin.
"activities":[
{
"name": "CopyToAzureSqlMI",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<SQL Managed Instance output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SqlMISink",
"sqlWriterStoredProcedureName": "CopyTestStoredProcedureWithParameters",
"storedProcedureTableTypeParameterName": "MyTable",
"sqlWriterTableType": "MyTableType",
"storedProcedureParameters": {
"identifier": { "value": "1", "type": "Int" },
"stringData": { "value": "str1" }
}
}
}
}
]
Örnek 3: Upsert verileri
"activities":[
{
"name": "CopyToAzureSqlMI",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<SQL Managed Instance output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "SqlMISink",
"tableOption": "autoCreate",
"writeBehavior": "upsert",
"upsertSettings": {
"useTempDB": true,
"keys": [
"<column name>"
]
},
}
}
}
]
SQL MI'den paralel kopyalama
Kopyalama etkinliğindeki Azure SQL Managed Instance 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 SQL MI 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ız parallelCopies , 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 SQL MI'nizden verilerin bir bölümünü alır.
Özellikle SQL MI'nizden 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ırsanız, daha fazla bilgi işlem kaynağı kullanmak için daha büyük "Data Integration Units (DIU)" (>4) ayarlayabilirsiniz. İlgili senaryoları burada kontrol edin.
- "Kopyalama paralellik derecesi" bölümlerin sayısını kontrol eder; bu sayının çok büyük ayarlanması bazen performansı düşürebilir, bu sayıyı DIU'nun veya Şirket içinde barındırılan IR düğümü sayısının * (2 ila 4) arasında ayarlamanızı öneririz.
Örnek: Fiziksel bölümlendirmeler içeren büyük bir tablodan tam veri yüklemesi
"source": {
"type": "SqlMISource",
"partitionOption": "PhysicalPartitionsOfTable"
}
Örnek: dinamik aralık bölümü olan sorgu
"source": {
"type": "SqlMISource",
"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.
SQL Managed Instance'a veri yüklemek için en iyi yöntem
Verileri SQL Managed Instance 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: Boyut tablosunun tamamını her seferinde yeniden yüklemek istiyorum.
- Özel mantıkla yazma: Hedef tabloya son eklemeden önce ek işlemeye ihtiyacım var.
Yapılandırma ve en iyi yöntemler için ilgili bölümlere bakın.
Verileri ekleme
Verilerin eklenmesi, SQL Managed Instance 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 güncelle ve ekle
Copy activity artık verileri bir veritabanı geçici tablosuna yerel olarak yüklemeyi ve anahtar varsa havuz tablosundaki verileri güncelleştirmeyi ve başka şekilde yeni veri eklemeyi destekliyor. Kopyalama etkinliklerindeki upsert ayarları hakkında daha fazla bilgi edinmek için SQL Managed Instance'ı hedef olarak kullanmayı inceleyin.
Tablonun tamamını üzerine yaz
PreCopyScript özelliğini bir kopyalama etkinliği havuzu içinde yapılandırabilirsiniz. Bu durumda, her gerçekleştirilen kopyalama etkinliği için hizmet, önce otomatik olarak 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ı güncellemek için, yeni verileri kaynaktan toplu olarak yüklemeden önce tüm kayıtları silmek üzere bir komut dosyası 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, bir hazırlama tablosuna yükleyebilir, ardından saklı yordam etkinliğini çağırabilir veya verileri uygulamak için kopyalama etkinliği havuzundaki saklı yordamı çağırabilirsiniz.
SQL havuzundaki saklı yordamı çağırma
Verileri SQL Managed Instance'a kopyaladığınızda, kaynak tablonun her bir veri kümesi grubunda ek parametrelerle kullanıcının belirlediği saklı yordamı çağırabilirsiniz. Saklı yordam özelliği tablo değerli parametrelerden yararlanır.
Yerleşik kopyalama mekanizmaları amaca hizmet etmediğinde saklı bir 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, SQL Server veritabanındaki 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İşlem hattınızda kopyalama etkinliğinde SQL MI havuzu bölümünü aşağıdaki gibi tanımlayın:
"sink": { "type": "SqlMISink", "sqlWriterStoredProcedureName": "spOverwriteMarketing", "storedProcedureTableTypeParameterName": "Marketing", "sqlWriterTableType": "MarketingType", "storedProcedureParameters": { "category": { "value": "ProductA" } } }
Veri akışı haritalama özellikleri
Eşleme veri akışındaki verileri dönüştürürken, Azure SQL Managed Instance tablolarını okuyabilir ve tablolara yazabilirsiniz. Daha fazla bilgi için kaynak dönüşümü ve depolama dönüşümü kısmına bkz.
Kaynak dönüştürme
Aşağıdaki tabloda, Azure SQL Managed Instance kaynağı tarafından desteklenen özellikler listelenmektedir. Bu özellikleri Kaynak seçenekleri sekmesinde düzenleyebilirsiniz.
| Veri Akışı Adı | Açıklama | Gerekli | İzin verilen değerler | Veri akışı betiği özelliği |
|---|---|---|---|---|
| Tablo | Giriş olarak Tablo'yı seçerseniz, veri akışı veri kümesinde belirtilen tablodan tüm verileri getirir. | Hayır | - | - |
| Sorgu | Giriş olarak Sorgu'yu seçerseniz, kaynaktan veri getirmek için bir SQL sorgusu belirtin. Bu sorgu, veri kümesinde belirttiğiniz tüm tabloları geçersiz kılar. Sorguları kullanmak, test veya arama için satırları azaltmanın harika bir yoludur. Order By yan tümcesi desteklenmez, ancak tam bir SELECT FROM deyimi ayarlayabilirsiniz. Kullanıcı tanımlı tablo işlevlerini de kullanabilirsiniz. select * from udfGetData() , SQL'de veri akışında kullanabileceğiniz bir tablo döndüren bir UDF'dir. Sorgu örneği: Select * from MyTable where customerId > 1000 and customerId < 2000 |
Hayır | String | query |
| Parti boyutu | Büyük verileri okumalara ayırmak için bir toplu iş boyutu belirtin. | Hayır | Tamsayı | yığınBoyutu |
| Yalıtım Düzeyi | Aşağıdaki yalıtım düzeylerinden birini seçin: - Okundu Taahhütlü - Okunmamış Veriyi Okuma (varsayılan) - Yinelenebilir Okuma -Serileştirilebilir - Yok (yalıtım düzeyini göz ardı et) |
Hayır | OKUNMUŞ_ONAYLANDI Okunmamış_İşlem TEKRARLANABİLİR_OKUMA SERİLEŞTİRİLEBİLİR HİÇBİRİ |
yalıtım seviyesi (isolationLevel) |
| Artımlı ayıklamayı etkinleştirme | 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. | Hayır | - | - |
| 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. | Hayır | - | - |
| Yerel değişiklik veri yakalamayı etkinleştirme(Önizleme) | ADF'ye işlem hattının son yürütülmesinden bu yana yalnızca SQL değişiklik verileri yakalama teknolojisi tarafından yakalanan delta verilerini işlemesini söylemek 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. Bu seçeneği ADF'de kullanmadan önce Azure SQL MI üzerinde 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. | Hayır | - | - |
| Okumaya baştan başlama | 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. | Hayır | - | - |
İ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 @query örnekte olduğu gibi with CTE as (select 'test' as a) select * from CTE ayarlayın. Ardından CTES'yi beklendiği gibi kullanabilirsiniz.
Azure SQL Managed Instance kaynak betik örneği
Kaynak türü olarak Azure SQL Managed Instance kullandığınızda, ilişkili veri akışı betiği şöyledir:
source(allowSchemaDrift: true,
validateSchema: false,
isolationLevel: 'READ_UNCOMMITTED',
query: 'select * from MYTABLE',
format: 'query') ~> SQLMISource
Havuz dönüşümü
Aşağıdaki tabloda Azure SQL Managed Instance havuzu tarafından desteklenen özellikler listelenmektedir. Bu özellikleri Havuz seçenekleri sekmesinde düzenleyebilirsiniz.
| Veri Akışı Adı | Açıklama | Gerekli | İzin verilen değerler | Veri akışı betiği özelliği |
|---|---|---|---|---|
| Güncelleştirme yöntemi | Veritabanı hedefinizde hangi işlemlere izin verileceğini belirtin. Varsayılan değer yalnızca eklemelere izin vermektir. Satırları güncelleştirmek, ekle-güncelle veya silmek için, bu eylemler için satırları etiketlemek amacıyla bir Satır değiştirme dönüşümü gerekir. |
Yes |
true veya false |
silinebilir eklenebilir güncelleştirilebilir güncellenebilir/eklenebilir |
| Anahtar sütunlar | Güncellemeler, upsert işlemleri ve silmeler için, hangi satırın değiştirilmesi gerektiğini belirlemek üzere anahtar sütunları ayarlanmalıdır. Anahtar olarak seçtiğiniz sütun adı, sonraki güncelleme, ekleme/yenileme, silme işlemlerinin bir parçası olarak kullanılır. Bu nedenle, Havuz eşlemesinde var olan bir sütun seçmelisiniz. |
Hayır | Dizi | anahtarlar |
| Anahtar sütunları yazmayı atlama | Değeri anahtar sütununa yazmak istemiyorsanız "Anahtar sütunlarını yazmayı atla" seçeneğini belirleyin. | Hayır |
true veya false |
anahtar yazmalarını atla |
| Tablo eylemi | Yazmadan önce hedef tablodan tüm satırların yeniden oluşturulmasını veya kaldırılıp kaldırılmayacağını belirler. - Yok: Tabloda hiçbir işlem yapılmayacak. - Yeniden oluştur: Tablo silinir ve yeniden oluşturulur. Dinamik olarak yeni bir tablo oluşturuyorsanız gereklidir. - Tümünü Sil: Hedef tablodaki tüm satırlar kaldırılacak. |
Hayır |
true veya false |
Yeniden oluşturun kesmek |
| Parti boyutu | Her toplu işlemde kaç satır yazıldığını belirtin. Daha büyük toplu iş boyutları sıkıştırmayı ve bellek iyileştirmeyi geliştirir, fakat verileri önbelleğe alırken bellek yetersizliği istisnaları riski taşır. | Hayır | Tamsayı | yığınBoyutu |
| SQL Betikleri Öncesi ve Sonrası | 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 belirtin. | Hayır | String | preSQL'ler postSQL'ler |
İpucu
- Birden çok komut içeren tek toplu iş betiklerini birden çok partiye 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
Azure SQL Managed Instance havuz betiği örneği
havuz türü olarak Azure SQL Managed Instance kullandığınızda, ilişkili veri akışı betiği şöyledir:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:false,
insertable:true,
updateable:true,
upsertable:true,
keys:['keyColumn'],
format: 'table',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> SQLMISink
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
SQL Managed Instance için veri türü eşlemesi
Kopyalama etkinliği kullanılarak veriler SQL Managed Instance kopyalandığında, SQL Managed Instance veri türlerinden hizmet içinde kullanılan ara veri türlerine aşağıdaki eşlemeler kullanılır. Kopyalama etkinliğinin kaynak şema ve veri türünden havuza nasıl eşlendiğini öğrenmek için "Şema ve veri türü eşlemeleri"ne bkz
| SQL Managed Instance veri türü | Ara hizmet veri türü |
|---|---|
| bigint | Int64 |
| ikili | Byte[] |
| bit | Boolean (İkili Mantık) |
| char | Dize, Karakter[] |
| tarih | TarihSaat |
| Tarih ve Zaman | TarihSaat |
| datetime2 | TarihSaat |
| Datetimeoffset | DateTimeOffset |
| Ondalık | Ondalık |
| FILESTREAM özniteliği (varbinary(max)) | Byte[] |
| Kayan | Çift |
| görüntü | Byte[] |
| int | Int32 |
| para | Ondalık |
| nchar | Dize, Karakter[] |
| ntext | Dize, Karakter[] |
| sayısal | Ondalık |
| nvarchar | Dize, Karakter[] |
| gerçek | Tek |
| satır sürümü | Byte[] |
| smalldatetime | TarihSaat |
| smallint | Int16 |
| smallmoney | Ondalık |
| sql_variant | Nesne |
| text | Dize, Karakter[] |
| zaman | TimeSpan |
| timestamp | Byte[] |
| tinyint | Int16 |
| benzersiz tanımlayıcı | GUID |
| varbinary | Byte[] |
| varchar | Dize, Karakter[] |
| xml | String |
Not
Ondalık ara türüne eşlenen veri türleri için şu anda Copy Activity, 28'e kadar hassasiyeti destekler. 28'den büyük duyarlık gerektiren verileriniz varsa, SQL sorgusundaki bir dizeye dönüştürmeyi göz önünde bulundurun.
Always Encrypted'i kullanma
Always Encrypted ile SQL Managed Instance veri kopyaladığınızda aşağıdaki adımları izleyin:
Column Ana Anahtarı (CMK)Azure Key Vault içinde depolayın. Always Encrypted'ı Azure Key Vault kullanarak yapılandırma hakkında daha fazla bilgi edinin
Sütun Ana Anahtarı (CMK) depolandığı anahtar kasasına doğru bir şekilde eriştiğinizden 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
SQL Managed Instance Always Encrypted aşağıdaki senaryoları destekler:
- Kaynak veya alıcı 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 alıcı veri depoları, anahtar sağlayıcısı kimlik doğrulama türü olarak aynı hizmet ilkesini kullanıyor.
Not
Şu anda SQL Managed Instance Always Encrypted yalnızca eşleme veri akışlarında kaynak dönüşümü için desteklenmektedir.
Yerleşik değişiklik verisi yakalama
Azure Data Factory SQL Server, Azure SQL DB ve Azure SQL MI için yerel değişiklik veri 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ındaki verilere yönelik artımlı bir ETL senaryosu elde etmek için araya çeşitli veri dönüştürme mantıkları da ekleyebilir.
ADF'nin denetim noktasını kaydedebilmesi için işlem hattı ve etkinlik adını değiştirmediğinizden emin olun, böylece son çalıştırmadan otomatik olarak güncellenmiş verileri alabilirsiniz. İşlem hattı adınızı veya etkinlik adınızı değiştirirseniz, denetim noktası sıfırlanır ve bu durumda ya en baştan başlamanız ya da bir sonraki çalıştırmada değişiklikleri almanız gerekir. İşlem hattı adını veya etkinlik adını değiştirmek istiyorsanız ancak son çalıştırmadan otomatik olarak değişen verileri almak için denetim noktasını yine de tutmak istiyorsanız, bunu elde etmek için veri akışı etkinliğinde kendi belirlediğiniz bir 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 otomatik olarak yeniden başlatılır veya o andan itibaren değişiklikleri uygular.
İ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 Managed Instance sürümünü yükseltme
Azure SQL Managed Instance sürümünü yükseltmek için
Önerilen ve eski sürüm arasındaki farklar
Aşağıdaki tabloda, önerilen ve eski sürümü kullanan Azure SQL Managed Instance arasındaki farklar gösterilmektedir.
| Önerilen sürüm | Eski sürüm |
|---|---|
TLS 1.3'ü encrypt üzerinden strict olarak destekleyin. |
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ı.