Aracılığıyla paylaş


Azure Data Factory veya Azure Synapse Analytics kullanarak SQL Server'a veri 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, Sql Server veritabanından ve veritabanından veri kopyalamak için Azure Data Factory ve Azure Synapse işlem hatlarında kopyalama etkinliğinin nasıl kullanılacağı ve SQL Server veritabanındaki verileri dönüştürmek için Veri Akışı nasıl kullanılacağı özetlenmiştir. Daha fazla bilgi edinmek için Azure Data Factory veya Azure Synapse Analytics ile ilgili giriş makalesini okuyun.

Desteklenen özellikler

Bu SQL Server bağlayıcısı aşağıdaki özellikler için desteklenir:

Desteklenen özellikler IR
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 tarafından kaynak veya havuz olarak desteklenen veri depolarının listesi için Desteklenen veri depoları tablosuna bakın.

Özellikle, bu SQL Server bağlayıcısı şunları destekler:

  • SQL Server sürüm 2005 ve üzeri.
  • SQL veya Windows kimlik doğrulamasını kullanarak veri kopyalama.
  • Kaynak olarak, SQL sorgusu veya saklı yordam kullanarak veri alma. Ayrıca SQL Server kaynağından 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.

SQL Server Express LocalDB desteklenmez.

Önemli

Veriler üzerinde evrensel olmayan bir kodlama uygulandığında veri kodlamayı etkilediği için veri kaynağı NVARCHAR veri türünü desteklemelidir.

Önkoşullar

Veri deponuz bir şirket içi ağ, Azure sanal ağı veya Amazon Sanal Özel Bulut içinde bulunuyorsa, şirket içinde barındırılan tümleştirme çalışma zamanını buna bağlanmak için yapılandırmanız gerekir.

Veri deponuz yönetilen bir bulut veri hizmetiyse Azure Integration Runtime'ı kullanabilirsiniz. Erişim, güvenlik duvarı kurallarında onaylanan IP'ler ile sınırlıysa Azure Integration Runtime IP'lerini izin verme listesine ekleyebilirsiniz.

Şirket içinde barındırılan tümleştirme çalışma zamanı yüklemeden ve yapılandırmadan şirket içi ağa erişmek için Azure Data Factory'deki yönetilen sanal ağ tümleştirme çalışma zamanı özelliğini de kullanabilirsiniz.

Data Factory tarafından desteklenen ağ güvenlik mekanizmaları ve seçenekleri hakkında daha fazla bilgi için bkz . Veri erişim stratejileri.

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:

Kullanıcı arabirimini kullanarak SQL Server bağlı hizmeti oluşturma

Azure portalı kullanıcı arabiriminde bir SQL Server bağlı hizmeti oluşturmak için aşağıdaki adımları kullanın.

  1. 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:

  2. SQL'i arayın ve SQL Server bağlayıcısını seçin.

    SQL Server bağlayıcısının ekran görüntüsü.

  3. Hizmet ayrıntılarını yapılandırın, bağlantıyı test edin ve yeni bağlı hizmeti oluşturun.

    SQL Server bağlı hizmeti yapılandırmasının ekran görüntüsü.

Bağlayıcı yapılandırma ayrıntıları

Aşağıdaki bölümlerde, SQL Server veritabanı bağlayıcısına özgü Data Factory ve 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

SQL Server Önerilen sürümü TLS 1.3'i destekler. Eski sürümü kullanıyorsanız SQL Server bağlı hizmetinizi 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.

Önerilen sürüm uygulandığında bu genel özellikler SQL server bağlı hizmeti için desteklenir:

Özellik Açıklama Gerekli
Tür tür özelliği SqlServer 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), Windows ve UserAssignedManagedIdentity değerleridir (yalnızca Azure VM'lerinde SQL Server için). 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. Önkoşullar bölümünden daha fazla bilgi edinin. 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 ReadWritedeğ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 truebağ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ğlanırken kullanılacak 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. Hayır

Örnek: SQL kimlik doğrulaması kullanma

{
    "name": "SqlServerLinkedService",
    "properties": {
        "type": "SqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Örnek: Azure Key Vault'ta sql kimlik doğrulamasını parolayla kullanma

{
    "name": "SqlServerLinkedService",
    "properties": {
        "type": "SqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Örnek: Always Encrypted kullanma

{
    "name": "SqlServerLinkedService",
    "properties": {
        "type": "SqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "alwaysEncryptedSettings": {
            "alwaysEncryptedAkvAuthType": "ServicePrincipal",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Windows kimlik doğrulması

Windows 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 Bir kullanıcı adı belirtin. Etkialanıadı\kullanıcıadı örnektir. Yes
password Kullanıcı adı için belirttiğiniz kullanıcı hesabı için bir parola belirtin. 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

Not

Veri akışında Windows kimlik doğrulaması desteklenmez.

Örnek: Windows kimlik doğrulamayı kullanma

{
    "name": "SqlServerLinkedService",
    "properties": {
        "type": "SqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "Windows",
            "userName": "<domain\\username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Örnek: Azure Key Vault'ta parola ile Windows kimlik doğrulamasını kullanma

{
    "name": "SqlServerLinkedService",
    "properties": {
        "annotations": [],
        "type": "SqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "Windows",
            "userName": "<domain\\username>",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                },
                "secretName": "<secretName>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması

Not

Kullanıcı tarafından atanan yönetilen kimlik kimlik doğrulaması yalnızca Azure VM'lerindeki SQL Server için geçerlidir.

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. Azure VM'lerinde SQL Server kimlik doğrulaması için bu yönetilen kimliği 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:

  1. Kullanıcı tarafından atanan yönetilen kimliğinize izinler verin.

  2. Azure VM'lerinde SQL Server'ınız için Microsoft Entra kimlik doğrulamasını etkinleştirin.

  3. 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;
    
  4. 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];
    
  5. 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.

  6. SQL Server bağlı hizmetini yapılandırın.

Örnek

{
    "name": "SqlServerLinkedService",
    "properties": {
        "type": "SqlServer",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "UserAssignedManagedIdentity",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Eski sürüm

Bu genel özellikler, Eski sürümü uyguladığınızda SQL server bağlı hizmeti için desteklenir:

Özellik Açıklama Gerekli
Tür tür özelliği SqlServer olarak ayarlanmalıdır. 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. Önkoşullar bölümünden daha fazla bilgi edinin. Belirtilmezse, varsayılan Azure tümleştirme çalışma zamanı kullanılır. Hayır

Bu SQL Server bağlayıcısı aşağıdaki kimlik doğrulama türlerini destekler. Ayrıntılar için ilgili bölümlere bakın.

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 özelliklere ek olarak aşağıdaki özellikleri belirtin:

Özellik Açıklama Gerekli
connectionString SQL Server veritabanına bağlanmak için gereken connectionString bilgilerini belirtin. Kullanıcı adınız olarak bir oturum açma adı belirtin ve bağlanmak istediğiniz veritabanının bu oturum açma bilgileriyle eşlendiğinden emin olun. Yes
password Azure Key Vault'a parola eklemek istiyorsanız yapılandırmayı password bağlantı dizesi çıkarın. Daha fazla bilgi için bkz . Kimlik bilgilerini Azure Key Vault'ta depolama. Hayır

Eski sürüm için Windows kimlik doğrulaması

Windows 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
connectionString SQL Server veritabanına bağlanmak için gereken connectionString bilgilerini belirtin. Yes
userName Bir kullanıcı adı belirtin. Etkialanıadı\kullanıcıadı örnektir. Yes
password Kullanıcı adı için belirttiğiniz kullanıcı hesabı için bir parola belirtin. 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

Veri kümesi özellikleri

Veri kümelerini tanımlamak için kullanılabilen bölümlerin ve özelliklerin tam listesi için veri kümeleri makalesine bakın. Bu bölümde, SQL Server veri kümesi tarafından desteklenen özelliklerin listesi sağlanır.

SQL Server veritabanından ve veritabanından veri kopyalamak için aşağıdaki özellikler desteklenir:

Özellik Açıklama Gerekli
Tür Veri kümesinin tür özelliği SqlServerTable 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 tablekullanınschema. Kaynak için Hayır, havuz için Evet

Örnek

{
    "name": "SQLServerDataset",
    "properties":
    {
        "type": "SqlServerTable",
        "linkedServiceName": {
            "referenceName": "<SQL Server linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

Kopyalama etkinliğinin ö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üm, SQL Server kaynağı ve havuzu tarafından desteklenen özelliklerin listesini sağlar.

Kaynak olarak SQL Server

İpucu

Veri bölümlemeyi kullanarak SQL Server'dan verileri verimli bir şekilde yüklemek için SQL veritabanından paralel kopyalama bölümünden daha fazla bilgi edinin.

SQL Server'dan veri kopyalamak için kopyalama etkinliğindeki kaynak türünü SqlSource olarak ayarlayın. 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 SqlSource olarak ayarlanmalıdır. Yes
sqlReaderQuery Verileri okumak için özel SQL sorgusunu kullanın. select * from MyTable bunun bir örneğidir. Hayır
sqlReaderStoredProcedureName Bu özellik, kaynak tablodan verileri okuyan saklı yordamın adıdır. Son SQL deyimi, saklı yordamda bir SELECT deyimi olmalıdır. Hayır
storedProcedureParameters 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ı 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 SQL Server'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 (yani değil None), SQL Server'dan 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 Noneuygulayı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 olduğunda DynamicRangeuygulayı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 DynamicRangeuygulayı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 DynamicRangeuygulayın. Bir örnek için SQL veritabanından paralel kopyalama bölümüne bakın.
Hayır

Aşağıdaki noktalara dikkat edin:

  • SqlSource için sqlReaderQuery belirtilirse, kopyalama etkinliği verileri almak için bu sorguyu SQL Server 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.

Örnek: SQL sorgusu kullanma

"activities":[
    {
        "name": "CopyFromSQLServer",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<SQL Server input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlSource",
                "sqlReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Örnek: Saklı yordam kullanma

"activities":[
    {
        "name": "CopyFromSQLServer",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<SQL Server input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlSource",
                "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
                "storedProcedureParameters": {
                    "stringData": { "value": "str3" },
                    "identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

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 Server

İpucu

Desteklenen yazma davranışları, yapılandırmalar ve en iyi yöntemler hakkında daha fazla bilgi için bkz. Sql Server'a veri yüklemek için en iyi yöntem.

VERILERI SQL Server'a kopyalamak için kopyalama etkinliğindeki havuz türünü SqlSink olarak ayarlayın. 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 SqlSink olarak ayarlanmalıdır. Yes
preCopyScript Bu özellik, SQL Server'a 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
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ğ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. 30 dakika boyunca "00:30:00" örnektir. Değer belirtilmezse, zaman aşımı varsayılan olarak "00:30:00" olur.
Hayır
 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 VERILERI SQL Server Veritabanı'na 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 olduğunda Upsertuygulayı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 Falseuygulayı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": "CopyToSQLServer",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<SQL Server output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SqlSink",
                "tableOption": "autoCreate",
                "writeBatchSize": 100000
            }
        }
    }
]

Ö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": "CopyToSQLServer",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<SQL Server output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SqlSink",
                "sqlWriterStoredProcedureName": "CopyTestStoredProcedureWithParameters",
                "storedProcedureTableTypeParameterName": "MyTable",
                "sqlWriterTableType": "MyTableType",
                "storedProcedureParameters": {
                    "identifier": { "value": "1", "type": "Int" },
                    "stringData": { "value": "str1" }
                }
            }
        }
    }
]

Örnek 3: Upsert verileri

"activities":[
    {
        "name": "CopyToSQLServer",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<SQL Server output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SqlSink",
                "tableOption": "autoCreate",
                "writeBehavior": "upsert",
                "upsertSettings": {
                    "useTempDB": true,
                    "keys": [
                        "<column name>"
                    ]
                },
            }
        }
    }
]

SQL veritabanından paralel kopyalama

Kopyalama etkinliğindeki SQL Server 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üm seçeneklerinin ekran görüntüsü

Bölümlenmiş kopyalamayı etkinleştirdiğinizde kopyalama etkinliği, verileri bölümlere göre yüklemek için SQL Server 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 Server'ınızdan verilerin bir bölümünü alır.

Özellikle SQL Server'ınızdan 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.

Senaryo Önerilen ayarlar
Fiziksel bölümleri olan büyük tablodan tam yük. Bölüm seçeneği: Tablonun fiziksel bölümleri.

Yürütme sırasında, hizmet fiziksel bölümleri otomatik olarak algılar ve bölümlere göre verileri kopyalar.

Tablonuzda fiziksel bölüm olup olmadığını denetlemek için bu sorguya bakabilirsiniz.
Veri bölümleme için bir tamsayı veya tarih saat sütunuyla birlikte fiziksel bölümler olmadan büyük tablodan tam yük. Bölüm seçenekleri: Dinamik aralık bölümü.
Bölüm sütunu (isteğe bağlı): Verileri bölümleme için kullanılan sütunu belirtin. Belirtilmezse birincil anahtar sütunu kullanılır.
Bölüm üst sınırı ve bölüm alt sınırı (isteğe bağlı): Bölüm adımını belirlemek isteyip istemediğinizi belirtin. Bu, tablodaki satırları filtrelemek için değildir, tablodaki tüm satırlar bölümlenir ve kopyalanır. Belirtilmezse kopyalama etkinliği otomatik olarak değerleri algılar ve MIN ve MAX değerlerine bağlı olarak uzun sürebilir. Üst ve alt sınır sağlanması önerilir.

Örneğin, "ID" bölüm sütununuzun değerleri 1 ile 100 arasındaysa ve alt sınırı 20, üst sınırı da 80 olarak ayarladıysanız, paralel kopya 4 bölüme göre veri alır: =20, [21, 50], [51, 80] ve >=81 aralığındaki <kimlikler.
Veri bölümleme için tamsayı veya tarih/tarih saat sütunuylayken fiziksel bölümler olmadan özel bir sorgu kullanarak büyük miktarda veri yükleyin. Bölüm seçenekleri: Dinamik aralık bölümü.
Sorgu: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.
Bölüm sütunu: Verileri bölümleme için kullanılan sütunu belirtin.
Bölüm üst sınırı ve bölüm alt sınırı (isteğe bağlı): Bölüm adımını belirlemek isteyip istemediğinizi belirtin. Bu tablodaki satırları filtrelemek için değildir, sorgu sonucundaki tüm satırlar bölümlenir ve kopyalanır. Belirtilmezse kopyalama etkinliği değeri otomatik olarak algılar.

Örneğin, bölüm sütununuz "ID" 1 ile 100 arasında değerlere sahipse ve alt sınırı 20, üst sınırı 80 olarak ayarlarsanız ve paralel kopya 4 olarak ayarlanırsa, hizmet verileri sırasıyla =20, [21, 50], [51, 80] ve >=81 aralığındaki <4 bölüme göre alır.

Farklı senaryolar için daha fazla örnek sorgu aşağıda verilmiştir:
1. Tablonun tamamını sorgula:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
2. Sütun seçimi ve ek where-yan tümcesi filtreleri içeren bir tablodan sorgu yapın:
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
3. Alt sorgularla sorgu:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
4. Alt sorguda bölüm içeren sorgu:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T

Bölüm seçeneğiyle veri yüklemek için en iyi yöntemler:

  1. 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.
  2. 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.
  3. 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.
  4. "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": "SqlSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

Örnek: dinamik aralık bölümü olan sorgu

"source": {
    "type": "SqlSource",
    "query": "SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
        "partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
    }
}

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

SQL Server'a veri yüklemek için en iyi yöntem

SQL Server'a veri 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, bu SQL Server 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 SQL Server.

Tablonun tamamının üzerine yazma

PreCopyScript özelliğini bir kopyalama etkinliği havuzu içinde 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, 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 Server veritabanına 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. Hizmetin saklı yordamı otomatik olarak kendi işlemine sardığını, bu nedenle saklı yordamın içinde oluşturulan tüm işlemlerin iç içe bir işlem haline geleceğini ve özel durum işleme için etkileri olabileceğini unutmayın.

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

  1. 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
    )
    
  2. 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
    
  3. Kopyalama etkinliğinde SQL havuzu bölümünü aşağıdaki gibi tanımlayın:

    "sink": {
        "type": "SqlSink",
        "sqlWriterStoredProcedureName": "spOverwriteMarketing",
        "storedProcedureTableTypeParameterName": "Marketing",
        "sqlWriterTableType": "MarketingType",
        "storedProcedureParameters": {
            "category": {
                "value": "ProductA"
            }
        }
    }
    

Eşleme veri akışı özellikleri

Eşleme veri akışındaki verileri dönüştürürken SQL Server Veritabanı'ndan 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ü .

Not

Şirket içi SQL Server'a erişmek için özel uç nokta kullanarak Azure Data Factory veya Synapse çalışma alanı Yönetilen Sanal Ağ kullanmanız gerekir. Ayrıntılı adımlar için bu öğreticiye bakın.

Kaynak dönüştürme

Aşağıdaki tabloda SQL Server 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
Toplu iş boyutu Büyük verileri okumalara ayırmak için bir toplu iş boyutu belirtin. Hayır Tamsayı batchSize
Yalıtım Düzeyi Aşağıdaki yalıtım düzeylerinden birini seçin:
- Okundu
- Okunmamış (varsayılan)
- Yinelenebilir Okuma
-Serileştirilebilir
- Yok (yalıtım düzeyini yoksay)
Hayır READ_COMMITTED
READ_UNCOMMITTED
REPEATABLE_READ
SERİLEŞTİRİLEBİLİR
HİÇBİRİ
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ı tarih sütunu Artımlı ayıklama özelliğini kullanırken, kaynak tablonuzda filigran olarak kullanmak istediğiniz tarih/saat sütununu 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ı tarih sütunu gerekmeden otomatik olarak yüklenir. ADF'de bu seçeneği kullanmadan önce SQL Server'da 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 örneğini @query with CTE as (select 'test' as a) select * from CTEayarlayın. Ardından CTES'yi beklendiği gibi kullanabilirsiniz.

SQL Server kaynak betiği örneği

Kaynak türü olarak SQL Server kullandığınızda, ilişkili veri akışı betiği şöyledir:

source(allowSchemaDrift: true,
    validateSchema: false,
    isolationLevel: 'READ_UNCOMMITTED',
    query: 'select * from MYTABLE',
    format: 'query') ~> SQLSource

Havuz dönüşümü

Aşağıdaki tabloda SQL Server 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, eklemek veya silmek için, bu eylemlerin satırlarını etiketlemek için bir Değişiklik satırı dönüştürmesi gerekir.
Yes true veya false deletable
eklenebilir
güncelleştirilebilir
upsertable
Anahtar sütunlar Güncelleştirmeler, upsert'ler ve silmeler için, hangi satırın değiştirileceğini belirlemek için anahtar sütunlarının ayarlanması gerekir.
Anahtar olarak seçtiğiniz sütun adı, sonraki upsert, delete güncelleştirmesinin bir parçası olarak kullanılır. Bu nedenle, Havuz eşlemesinde var olan bir sütun seçmelisiniz.
Hayır Dizi keys
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 skipKeyWrites
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 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.
Hayır true veya false Yeni -den oluşturun
truncate
Toplu iş 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, ancak verileri önbelleğe alırken bellek özel durumlarının dışına çıkma riskiyle karşı karşıyadır. Hayır Tamsayı batchSize
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

  1. Birden çok komut içeren tek toplu iş betiklerini birden çok toplu iş olarak bölmeniz önerilir.
  2. 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

SQL Server havuz betiği örneği

Havuz türü olarak SQL Server 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) ~> SQLSink

SQL Server için veri türü eşlemesi

SQL Server'dan ve SQL Server'a veri kopyaladığınızda, SQL Server veri türlerinden Azure Data Factory ara veri türlerine aşağıdaki eşlemeler kullanılır. Data Factory'yi uygulayan Synapse işlem hatları aynı eşlemeleri kullanı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.

SQL Server veri türü 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 Int16
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. 28'den büyük duyarlık gerektiren verileriniz varsa, SQL sorgusundaki bir dizeye dönüştürmeyi göz önünde bulundurun.

Azure Data Factory kullanarak SQL Server'dan veri kopyalarken, bit veri türü Boole ara veri türüne eşlenir. Bit veri türü olarak tutulması gereken verileriniz varsa, T-SQL CAST veya CONVERT ile sorguları kullanın.

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 SQL Server'dan/SQL Server'a veri kopyalarken aşağıdaki adımları izleyin:

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

  2. Sütun Ana Anahtarı'nın (CMK) depolandığı anahtar kasasına erişim izni verildiğinden emin olun. Gerekli izinler için bu makaleye bakın.

  3. 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 Server Always Encrypted aşağıdaki senaryoları destekler:

  1. Kaynak veya havuz veri depoları, anahtar sağlayıcısı kimlik doğrulama türü olarak yönetilen kimlik veya hizmet sorumlusu kullanıyor.
  2. Hem kaynak hem de havuz veri depoları, anahtar sağlayıcısı kimlik doğrulama türü olarak yönetilen kimliği kullanır.
  3. 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 SQL Server 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.

Bağlantı sorunlarını giderme

  1. SQL Server örneğinizi uzak bağlantıları kabul etmek için yapılandırın. SQL Server Management Studio'yu başlatın, sunucuya sağ tıklayın ve Özellikler'i seçin. Listeden Bağlantılar'ı seçin ve Bu sunucuya uzak bağlantılara izin ver onay kutusunu seçin.

    Uzak bağlantıları etkinleştir

    Ayrıntılı adımlar için bkz . Uzaktan erişim sunucusu yapılandırma seçeneğini yapılandırma.

  2. SQL Server Yapılandırma Yöneticisi'ı başlatın. İstediğiniz örnek için SQL Server Ağ Yapılandırması'nı genişletin ve MSSQLSERVER protokolleri'ni seçin. Protokoller sağ bölmede görünür. TCP/IP'ye sağ tıklayıp Etkinleştir'i seçerek TCP/IP'yi etkinleştirin.

    TCP/IP'yi etkinleştirme

    TCP/IP protokolünün etkinleştirilmesinin alternatif yolları ve daha fazla bilgi için bkz . Sunucu ağ protokollerini etkinleştirme veya devre dışı bırakma.

  3. Aynı pencerede TCP/IP Özellikleri penceresini başlatmak için TCP/IP'ye çift tıklayın.

  4. IP Adresleri sekmesine geçin. IPAll bölümünü görmek için aşağı kaydırın. TCP Bağlantı Noktasını not edin. Varsayılan değer 1433'dür.

  5. Bu bağlantı noktası üzerinden gelen trafiğe izin vermek için makinede Windows Güvenlik Duvarı için bir kural oluşturun.

  6. Bağlantıyı doğrulama: Tam ad kullanarak SQL Server'a bağlanmak için farklı bir makineden SQL Server Management Studio kullanın. "<machine>.<domain>.corp.<company>.com,1433" bunun bir örneğidir.

SQL Server sürümünü yükseltme

SQL Server 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.

Aşağıdaki tabloda, önerilen ve eski sürümü kullanan SQL Server 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.

Kopyalama etkinliği tarafından kaynak ve havuz olarak desteklenen veri depolarının listesi için bkz . Desteklenen veri depoları.