Saklı Yordam Etkinliğini SQL Server

Not

Bu makale, Azure Data Factory’nin 1. sürümü için geçerlidir. Data Factory hizmetinin geçerli sürümünü kullanıyorsanız bkz. Data Factory'de saklı yordam etkinliğini kullanarak verileri dönüştürme.

Genel Bakış

Data Factory işlem hattında veri dönüştürme etkinliklerini kullanarak ham verileri tahminlere ve içgörülere dönüştürür ve işlersiniz. Saklı Yordam Etkinliği, Data Factory'nin desteklediği dönüştürme etkinliklerinden biridir. Bu makale, veri dönüştürmeye ve Data Factory'de desteklenen dönüştürme etkinliklerine genel bir genel bakış sunan veri dönüştürme etkinlikleri makalesini oluşturur.

Saklı Yordam Etkinliği'ni kullanarak kuruluşunuzda veya azure sanal makinesinde (VM) aşağıdaki veri depolarından birinde saklı yordamı çağırabilirsiniz:

  • Azure SQL Veritabanı
  • Azure Synapse Analytics
  • veritabanı SQL Server. SQL Server kullanıyorsanız, Veri Yönetimi Ağ Geçidi'ni veritabanını barındıran makineye veya veritabanına erişimi olan ayrı bir makineye yükleyin. Veri Yönetimi Ağ Geçidi, şirket içindeki/Azure VM'deki veri kaynaklarını bulut hizmetleriyle güvenli ve yönetilen bir şekilde bağlayan bir bileşendir. Ayrıntılar için Veri Yönetimi Gateway makalesine bakın.

Önemli

verileri Azure SQL Veritabanı veya SQL Server kopyalarken, sqlWriterStoredProcedureName özelliğini kullanarak saklı yordamı çağırmak için kopyalama etkinliğinde SqlSink'i yapılandırabilirsiniz. Daha fazla bilgi için bkz. Kopyalama etkinliğinden saklı yordamı çağırma. Özelliği hakkında ayrıntılı bilgi için şu bağlayıcı makalelerine bakın: Azure SQL Veritabanı, SQL Server. Kopyalama etkinliği kullanarak verileri Azure Synapse Analytics'e kopyalarken saklı yordamı çağırmak desteklenmez. Ancak saklı yordam etkinliğini kullanarak Azure Synapse Analytics'te saklı yordamı çağırabilirsiniz.

Azure SQL Veritabanı, SQL Server veya Azure Synapse Analytics'ten veri kopyalarken sqlReaderStoredProcedureName özelliğini kullanarak kaynak veritabanından veri okumak için saklı yordamı çağırmak üzere kopyalama etkinliğinde SqlSource'u yapılandırabilirsiniz. Daha fazla bilgi için şu bağlayıcı makalelerine bakın: Azure SQL Veritabanı, SQL Server, Azure Synapse Analytics

Aşağıdaki kılavuzda, Azure SQL Veritabanı'de saklı yordamı çağırmak için işlem hattındaki Saklı Yordam Etkinliği kullanılır.

Kılavuz

Örnek tablo ve saklı yordam

  1. SQL Server Management Studio veya rahat olduğunuz başka bir aracı kullanarak Azure SQL Veritabanı aşağıdaki tabloyu oluşturun. datetimestamp sütunu, karşılık gelen kimliğin oluşturulduğu tarih ve saattir.

    CREATE TABLE dbo.sampletable
    (
        Id uniqueidentifier,
        datetimestamp nvarchar(127)
    )
    GO
    
    CREATE CLUSTERED INDEX ClusteredID ON dbo.sampletable(Id);
    GO
    

    Id benzersiz tanımlayıcıdır ve datetimestamp sütun, karşılık gelen kimliğin oluşturulduğu tarih ve saattir.

    Sample data

    Bu örnekte saklı yordam bir Azure SQL Veritabanı. Saklı yordam Azure Synapse Analytics ve SQL Server Veritabanı'ndaysa yaklaşım benzerdir. SQL Server veritabanı için bir Veri Yönetimi Ağ Geçidi yüklemeniz gerekir.

  2. sampletable'a veri ekleyen aşağıdaki saklı yordamı oluşturun.

    CREATE PROCEDURE usp_sample @DateTime nvarchar(127)
    AS
    
    BEGIN
        INSERT INTO [sampletable]
        VALUES (newid(), @DateTime)
    END
    

    Önemli

    Parametrenin adı ve büyük/küçük harf kullanımı (bu örnekte DateTime), işlem hattı/etkinlik JSON'unda belirtilen parametreyle eşleşmelidir. Saklı yordam tanımında parametresi için ön ek olarak kullanıldığından emin olun @ .

Veri fabrikası oluşturma

  1. Azure portal oturum açın.

  2. Soldaki menüde YENİ'ye tıklayın, Intelligence + Analytics'e ve Data Factory'ye tıklayın.

    New data factory 1

  3. Yeni veri fabrikası dikey penceresinde Ad için SProcDF girin. Azure Data Factory adları genel olarak benzersizdir. Fabrikanın başarıyla oluşturulmasını sağlamak için veri fabrikasının adına adınızın ön ekini eklemeniz gerekir.

    New data factory 2

  4. Azure aboneliğinizi seçin.

  5. Kaynak Grubu için aşağıdaki adımlardan birini uygulayın:

    1. Yeni oluştur'a tıklayın ve kaynak grubu için bir ad girin.
    2. Var olanı kullan'a tıklayın ve var olan bir kaynak grubunu seçin.
  6. Data factory için konum seçin.

  7. Bir sonraki oturum açışınızda panoda veri fabrikasını görebilmek için Panoya sabitle'yi seçin.

  8. Yeni data factory dikey penceresinde Oluştur’a tıklayın.

  9. Azure portal panosunda oluşturulan veri fabrikasını görürsünüz. Data factory sorunsuz oluşturulduktan sonra data factory sayfasını görürsünüz, burada size data factory içeriği gösterilir.

    Data Factory home page

Azure SQL bağlı hizmeti oluşturma

Veri fabrikasını oluşturduktan sonra, veritabanınızı Azure SQL Veritabanı'de örneklenebilir tabloyu ve usp_sample saklı yordamı içeren veri fabrikanıza bağlayan Azure SQL bağlı bir hizmet oluşturursunuz.

  1. Data Factory Düzenleyicisi'ni başlatmak için SProcDF'ninData Factory dikey penceresinde Yazar ve dağıt'a tıklayın.

  2. Komut çubuğunda Yeni veri deposu'na tıklayın ve Azure SQL Veritabanı'ı seçin. Düzenleyicide Azure SQL bağlı hizmet oluşturmak için JSON betiğini görmeniz gerekir.

    New data store 1

  3. JSON betiğinde aşağıdaki değişiklikleri yapın:

    1. değerini sunucunuzun adıyla değiştirin <servername> .

    2. değerini, tabloyu oluşturduğunuz veritabanı ve saklı yordamla değiştirin <databasename> .

    3. değerini veritabanına erişimi olan kullanıcı hesabıyla değiştirin <username@servername> .

    4. değerini kullanıcı hesabının parolasıyla değiştirin <password> .

      New data store 2

  4. Bağlı hizmeti dağıtmak için komut çubuğunda Dağıt'a tıklayın. Soldaki ağaç görünümünde AzureSqlLinkedService'i gördüğünüzden emin olmanız gerekir.

    tree view with linked service 1

Çıktı veri kümesi oluşturma

Saklı yordam herhangi bir veri üretmese bile saklı yordam etkinliği için bir çıkış veri kümesi belirtmeniz gerekir. Bunun nedeni etkinliğin zamanlamasını (etkinliğin çalışma sıklıkları ( saatlik, günlük vb.) yönlendiren çıkış veri kümesi olmasıdır. Çıktı veri kümesi, saklı yordamın çalışmasını istediğiniz bir Azure SQL Veritabanı veya Azure Synapse Analytics'e ya da SQL Server Veritabanına başvuran bağlı bir hizmet kullanmalıdır. Çıkış veri kümesi, saklı yordamın sonucunu başka bir etkinlik (işlem hattındaki zincirleme etkinlikleri) tarafından sonraki işleme için geçirmenin bir yolu olabilir. Ancak Data Factory, saklı yordamın çıkışını bu veri kümesine otomatik olarak yazmaz. Çıktı veri kümesinin işaret olduğu bir SQL tablosuna yazan saklı yordamdır. Bazı durumlarda, çıkış veri kümesi sahte bir veri kümesi (saklı yordamın çıktısını gerçekten barındırmayan bir tabloya işaret eden bir veri kümesi) olabilir. Bu sahte veri kümesi yalnızca saklı yordam etkinliğini çalıştırma zamanlamasını belirtmek için kullanılır.

  1. ... öğesine tıklayın. Araç çubuğunda daha fazla bilgi için Yeni veri kümesi'ne ve Azure SQL'e tıklayın. Komut çubuğunda yeni veri kümesi ve Azure SQL'yi seçin.

    tree view with linked service 2

  2. Aşağıdaki JSON betiğini kopyalayın/JSON düzenleyicisine yapıştırın.

    {
        "name": "sprocsampleout",
        "properties": {
            "type": "AzureSqlTable",
            "linkedServiceName": "AzureSqlLinkedService",
            "typeProperties": {
                "tableName": "sampletable"
            },
            "availability": {
                "frequency": "Hour",
                "interval": 1
            }
        }
    }
    
  3. Veri kümesini dağıtmak için komut çubuğunda Dağıt'a tıklayın. Veri kümesini ağaç görünümünde gördüğünüzden emin olmanız gerekir.

    tree view with linked services

SqlServerStoredProcedure etkinliğiyle işlem hattı oluşturma

Şimdi saklı yordam etkinliğiyle bir işlem hattı oluşturalım.

Aşağıdaki özelliklere dikkat edin:

  • type özelliği SqlServerStoredProcedure olarak ayarlanır.
  • Tür özelliklerindeki storedProcedureNamedeğeri usp_sample (saklı yordamın adı) olarak ayarlanır.
  • storedProcedureParameters bölümü DateTime adlı bir parametre içerir. JSON'daki parametrenin adı ve büyük/küçük harfle olması, saklı yordam tanımındaki parametrenin adı ve büyük/küçük harfle eşleşmelidir. Bir parametre için pass null kullanmanız gerekiyorsa, söz dizimini kullanın: "param1": null (tümü küçük harf).
  1. ... öğesine tıklayın. Komut çubuğunda daha fazla bilgi ve Yeni işlem hattı'na tıklayın.

  2. Aşağıdaki JSON parçacığını kopyalayın/yapıştırın:

    {
        "name": "SprocActivitySamplePipeline",
        "properties": {
            "activities": [
                {
                    "type": "SqlServerStoredProcedure",
                    "typeProperties": {
                        "storedProcedureName": "usp_sample",
                        "storedProcedureParameters": {
                            "DateTime": "$$Text.Format('{0:yyyy-MM-dd HH:mm:ss}', SliceStart)"
                        }
                    },
                    "outputs": [
                        {
                            "name": "sprocsampleout"
                        }
                    ],
                    "scheduler": {
                        "frequency": "Hour",
                        "interval": 1
                    },
                    "name": "SprocActivitySample"
                }
            ],
            "start": "2017-04-02T00:00:00Z",
            "end": "2017-04-02T05:00:00Z",
            "isPaused": false
        }
    }
    
  3. İşlem hattını dağıtmak için araç çubuğunda Dağıt'a tıklayın.

İşlem hattını izleme

  1. Data Factory Düzenleyici dikey penceresini kapatmak ve Data Factory dikey penceresine dönmek için X işaretine, sonra da Diyagram’a tıklayın.

    diagram tile 1

  2. Diyagram Görünümü'nde, bu öğreticide kullanılan işlem hatlarına ve veri kümelerine genel bir bakış görürsünüz.

    diagram tile 2

  3. Diyagram Görünümü'nde veri kümesine sprocsampleoutçift tıklayın. Dilimleri Hazır durumda görürsünüz. Başlangıç saati ile JSON'dan bitiş saati arasında her saat için bir dilim üretildiği için beş dilim olmalıdır.

    diagram tile 3

  4. Bir dilim Hazır durumdayken, verilerin saklı yordam tarafından tabloya eklendiğini doğrulamak için veritabanında bir select * from sampletable sorgu çalıştırın.

    Output data

    Azure Data Factory işlem hatlarını izleme hakkında ayrıntılı bilgi için bkz. İşlem hattını izleme.

Giriş veri kümesi belirtme

İzlenecek yolda saklı yordam etkinliğinin giriş veri kümesi yoktur. Bir giriş veri kümesi belirtirseniz, giriş veri kümesi dilimi kullanılabilir olana kadar saklı yordam etkinliği çalışmaz (Hazır durumda). Veri kümesi bir dış veri kümesi (aynı işlem hattındaki başka bir etkinlik tarafından üretilmeyen) veya bir yukarı akış etkinliği (bu etkinlikten önce çalıştırılan etkinlik) tarafından üretilen bir iç veri kümesi olabilir. Saklı yordam etkinliği için birden çok giriş veri kümesi belirtebilirsiniz. Bunu yaparsanız saklı yordam etkinliği yalnızca tüm giriş veri kümesi dilimleri kullanılabilir olduğunda çalışır (Hazır durumda). Giriş veri kümesi saklı yordamda parametre olarak kullanılamaz. Yalnızca saklı yordam etkinliğini başlatmadan önce bağımlılığı denetlemek için kullanılır.

Diğer etkinliklerle zincirleme

Bu etkinlikle bir yukarı akış etkinliğini zincirleme yapmak istiyorsanız, bu etkinliğin girişi olarak yukarı akış etkinliğinin çıkışını belirtin. Bunu yaptığınızda, yukarı akış etkinliği tamamlanana ve yukarı akış etkinliğinin çıkış veri kümesi kullanılabilir olana kadar saklı yordam etkinliği çalışmaz (Hazır durumda). Birden çok yukarı akış etkinliğinin çıkış veri kümelerini saklı yordam etkinliğinin giriş veri kümeleri olarak belirtebilirsiniz. Bunu yaptığınızda saklı yordam etkinliği yalnızca tüm giriş veri kümesi dilimleri kullanılabilir olduğunda çalıştırılır.

Aşağıdaki örnekte kopyalama etkinliğinin çıktısı şu şekildedir: OutputDataset, saklı yordam etkinliğinin bir girişidir. Bu nedenle, saklı yordam etkinliği kopyalama etkinliği tamamlanana ve OutputDataset dilimi kullanılabilir olana kadar çalışmaz (Hazır durumda). Birden çok giriş veri kümesi belirtirseniz, tüm giriş veri kümesi dilimleri kullanılabilir duruma gelene kadar saklı yordam etkinliği çalışmaz (Hazır durumda). Giriş veri kümeleri doğrudan saklı yordam etkinliğine parametre olarak kullanılamaz.

Zincirleme etkinlikleri hakkında daha fazla bilgi için bkz. İşlem hattındaki birden çok etkinlik

{
    "name": "ADFTutorialPipeline",
    "properties": {
        "description": "Copy data from a blob to blob",
        "activities": [
            {
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "BlobSource"
                    },
                    "sink": {
                        "type": "BlobSink",
                        "writeBatchSize": 0,
                        "writeBatchTimeout": "00:00:00"
                    }
                },
                "inputs": [ { "name": "InputDataset" } ],
                "outputs": [ { "name": "OutputDataset" } ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1,
                    "executionPriorityOrder": "NewestFirst"
                },
                "name": "CopyFromBlobToSQL"
            },
            {
                "type": "SqlServerStoredProcedure",
                "typeProperties": {
                    "storedProcedureName": "SPSproc"
                },
                "inputs": [ { "name": "OutputDataset" } ],
                "outputs": [ { "name": "SQLOutputDataset" } ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1,
                    "retry": 3
                },
                "name": "RunStoredProcedure"
            }
        ],
        "start": "2017-04-12T00:00:00Z",
        "end": "2017-04-13T00:00:00Z",
        "isPaused": false,
    }
}

Benzer şekilde, depolama yordamı etkinliğini aşağı akış etkinlikleriyle (saklı yordam etkinliği tamamlandıktan sonra çalışan etkinlikler) bağlamak için saklı yordam etkinliğinin çıkış veri kümesini işlem hattındaki aşağı akış etkinliğinin girişi olarak belirtin.

Önemli

verileri Azure SQL Veritabanı veya SQL Server kopyalarken, sqlWriterStoredProcedureName özelliğini kullanarak saklı yordamı çağırmak için kopyalama etkinliğinde SqlSink'i yapılandırabilirsiniz. Daha fazla bilgi için bkz. Kopyalama etkinliğinden saklı yordamı çağırma. Özelliği hakkında ayrıntılı bilgi için şu bağlayıcı makalelerine bakın: Azure SQL Veritabanı, SQL Server.

Azure SQL Veritabanı, SQL Server veya Azure Synapse Analytics'ten veri kopyalarken sqlReaderStoredProcedureName özelliğini kullanarak kaynak veritabanındaki verileri okumak için saklı yordamı çağırmak üzere kopyalama etkinliğinde SqlSource'ı yapılandırabilirsiniz. Daha fazla bilgi için şu bağlayıcı makalelerine bakın: Azure SQL Veritabanı, SQL ServerAzure Synapse Analytics

JSON biçimi

Saklı Yordam Etkinliği tanımlamaya yönelik JSON biçimi aşağıdadır:

{
    "name": "SQLSPROCActivity",
    "description": "description",
    "type": "SqlServerStoredProcedure",
    "inputs": [ { "name": "inputtable" } ],
    "outputs": [ { "name": "outputtable" } ],
    "typeProperties":
    {
        "storedProcedureName": "<name of the stored procedure>",
        "storedProcedureParameters":
        {
            "param1": "param1Value"
            …
        }
    }
}

Aşağıdaki tabloda bu JSON özellikleri açıklanmaktadır:

Özellik Açıklama Gerekli
name Etkinliğin adı Yes
açıklama Etkinliğin ne için kullanıldığını açıklayan metin No
tür Şu şekilde ayarlanmalıdır: SqlServerStoredProcedure Yes
Giriş İsteğe bağlı. Bir giriş veri kümesi belirtirseniz saklı yordam etkinliğinin çalışması için veri kümesinin kullanılabilir ('Hazır' durumunda) olması gerekir. Giriş veri kümesi saklı yordamda parametre olarak kullanılamaz. Yalnızca saklı yordam etkinliğini başlatmadan önce bağımlılığı denetlemek için kullanılır. No
Çıkış Saklı yordam etkinliği için bir çıkış veri kümesi belirtmeniz gerekir. Çıktı veri kümesi saklı yordam etkinliği (saatlik, haftalık, aylık vb.) için zamanlamayı belirtir.

Çıktı veri kümesi, saklı yordamın çalışmasını istediğiniz bir Azure SQL Veritabanı veya Azure Synapse Analytics'e ya da SQL Server Veritabanına başvuran bağlı bir hizmet kullanmalıdır.

Çıkış veri kümesi, saklı yordamın sonucunu başka bir etkinlik (işlem hattındaki zincirleme etkinlikler ) tarafından sonraki işleme için geçirmenin bir yolu olarak görev yapabilir. Ancak Data Factory, saklı yordamın çıkışını bu veri kümesine otomatik olarak yazmaz. Çıktı veri kümesinin işaret olduğu bir SQL tablosuna yazan saklı yordamdır.

Bazı durumlarda, çıkış veri kümesi yalnızca saklı yordam etkinliğini çalıştırma zamanlamasını belirtmek için kullanılan bir kukla veri kümesi olabilir.
Yes
storedProcedureName Azure SQL Veritabanı, Azure Synapse Analytics veya çıkış tablosunun kullandığı bağlı hizmet tarafından temsil edilen SQL Server saklı yordamın adını belirtin. Yes
storedProcedureParameters Saklı yordam parametreleri için değerleri belirtin. Bir parametre için null geçirmeniz gerekiyorsa, "param1": null (tümü küçük harf) söz dizimini kullanın. Bu özelliği kullanma hakkında bilgi edinmek için aşağıdaki örne bakın. No

Statik değer geçirme

Şimdi tabloya 'Document sample' adlı statik bir değer içeren 'Scenario' adlı başka bir sütun eklemeyi düşünelim.

Sample data 2

Tablo:

CREATE TABLE dbo.sampletable2
(
    Id uniqueidentifier,
    datetimestamp nvarchar(127),
    scenario nvarchar(127)
)
GO

CREATE CLUSTERED INDEX ClusteredID ON dbo.sampletable2(Id);

Saklı yordam:

CREATE PROCEDURE usp_sample2 @DateTime nvarchar(127) , @Scenario nvarchar(127)

AS

BEGIN
    INSERT INTO [sampletable2]
    VALUES (newid(), @DateTime, @Scenario)
END

Şimdi Scenario parametresini ve saklı yordam etkinliğindeki değeri geçirin. Yukarıdaki örnekteki typeProperties bölümü aşağıdaki kod parçacığına benzer:

"typeProperties":
{
    "storedProcedureName": "usp_sample",
    "storedProcedureParameters":
    {
        "DateTime": "$$Text.Format('{0:yyyy-MM-dd HH:mm:ss}', SliceStart)",
        "Scenario": "Document sample"
    }
}

Data Factory veri kümesi:

{
    "name": "sprocsampleout2",
    "properties": {
        "published": false,
        "type": "AzureSqlTable",
        "linkedServiceName": "AzureSqlLinkedService",
        "typeProperties": {
            "tableName": "sampletable2"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Data Factory işlem hattı

{
    "name": "SprocActivitySamplePipeline2",
    "properties": {
        "activities": [
            {
                "type": "SqlServerStoredProcedure",
                "typeProperties": {
                    "storedProcedureName": "usp_sample2",
                    "storedProcedureParameters": {
                        "DateTime": "$$Text.Format('{0:yyyy-MM-dd HH:mm:ss}', SliceStart)",
                        "Scenario": "Document sample"
                    }
                },
                "outputs": [
                    {
                        "name": "sprocsampleout2"
                    }
                ],
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "name": "SprocActivitySample"
            }
        ],
        "start": "2016-10-02T00:00:00Z",
        "end": "2016-10-02T05:00:00Z"
    }
}