Salin data ke dan dari Azure SQL Database menggunakan Azure Data Factory

Catatan

Artikel ini berlaku untuk versi 1 dari Data Factory. Jika Anda menggunakan versi layanan Pabrik Data saat ini, lihat Konektor Azure SQL Database di V2.

Artikel ini menjelaskan cara menggunakan Salin Aktivitas di Azure Data Factory untuk memindahkan data ke dan dari Azure SQL Database. Ini dibangun pada artikel Aktivitas Pergerakan Data, yang menyajikan ikhtisar umum pergerakan data dengan aktivitas salin.

Skenario yang didukung

Anda bisa menyalin data dari Azure SQL Database ke penyimpanan data berikut ini:

Kategori Penyimpanan data
Azure Azure Blob Storage
Azure Data Lake Storage Gen1
Azure Cosmos DB (SQL API)
Azure SQL Database
Azure Synapse Analytics
Indeks Azure Cognitive Search
Penyimpanan Tabel Azure
Database SQL Server
Oracle
File Sistem file

Anda bisa menyalin data dari penyimpanan data berikut ke Azure SQL Database:

Kategori Penyimpanan data
Azure Azure Blob Storage
Azure Cosmos DB (SQL API)
Azure Data Lake Storage Gen1
Azure SQL Database
Azure Synapse Analytics
Penyimpanan Tabel Azure
Database Amazon Redshift
DB2
MySQL
Oracle
PostgreSQL
SAP Business Warehouse
SAP HANA
SQL Server
Sybase
Teradata
NoSQL Cassandra
MongoDB
File Amazon S3
Sistem file
FTP
HDFS
SFTP
Lainnya HTTP Generik
OData Generik
ODBC Generik
Salesforce
Tabel web (tabel dari HTML)

Jenis autentikasi yang didukung

Konektor Azure SQL Database mendukung autentikasi dasar.

Memulai

Anda dapat membuat alur dengan aktivitas salin yang memindahkan data ke/dari Azure SQL Database dengan menggunakan alat/API yang berbeda.

Cara termudah untuk membuat jalur adalah dengan menggunakan Wizard Salin. Lihat Tutorial: Membuat alur menggunakan Wizard Salin untuk panduan singkat tentang membuat alur menggunakan Wizard Salin data.

Anda juga dapat menggunakan alat berikut untuk membuat pipeline: Visual Studio, Azure PowerShell, template Azure Resource Manager, .NET API, dan REST API. Lihat Tutorial aktivitas penyalinan untuk instruksi langkah demi langkah guna membuat alur dengan aktivitas penyalinan.

Baik Anda menggunakan alat atau API, Anda melakukan langkah-langkah berikut untuk membuat alur yang memindahkan data dari penyimpanan data sumber ke penyimpanan data sink:

  1. Buat data factory. Data factory mungkin berisi satu atau beberapa alur.
  2. Buat layanan tertaut untuk menautkan penyimpanan data input dan output ke pabrik data Anda. Misalnya, jika Anda menyalin data dari Azure blob storage ke Azure SQL Database, Anda membuat dua layanan tertaut untuk menautkan Azure storage account dan Database Azure SQL ke pabrik data Anda. Untuk properti layanan tertaut yang khusus untuk Azure SQL Database, lihat bagian properti layanan tertaut.
  3. Buat set data untuk mewakili data input dan output untuk operasi salin. Dalam contoh yang disebutkan di langkah terakhir, Anda membuat set data untuk menentukan kontainer dan folder blob yang berisi input data. Dan, Anda membuat set data lain untuk menentukan tabel SQL di Azure SQL Database yang menyimpan data yang disalin dari blob storage. Untuk properti set data yang khusus untuk Azure Data Lake Store, lihat bagian properti set data.
  4. Buat jalur dengan aktivitas salinan yang mengambil set data sebagai input dan set data sebagai output. Dalam contoh yang disebutkan sebelumnya, Anda menggunakan BlobSource sebagai sumber dan SqlSink sebagai sink untuk aktivitas salin. Demikian pula, jika Anda menyalin dari Azure SQL Database ke Azure Blob Storage, Anda menggunakan SqlSource dan BlobSink dalam aktivitas salin. Untuk menyalin properti aktivitas yang khusus untuk Azure SQL Database, lihat bagian salin properti aktivitas. Untuk detail tentang cara menggunakan penyimpanan data sebagai sumber atau jalur, klik tautan di bagian sebelumnya untuk penyimpanan data Anda.

Saat Anda menggunakan wizard, definisi JSON untuk entitas Data Factory ini (layanan tertaut, himpunan data, dan alur) secara otomatis dibuat untuk Anda. Saat Anda menggunakan alat/API (kecuali .NET API), Anda menentukan entitas Data Factory ini dengan menggunakan format JSON. Untuk sampel dengan definisi JSON untuk entitas Data Factory yang digunakan untuk menyalin data ke/dari Azure SQL Database, lihat bagian contoh JSON di artikel ini.

Bagian berikut ini menyediakan detail tentang properti JSON yang digunakan untuk menentukan entitas Pabrik Data khusus untuk Azure SQL Database:

Properti layanan tertaut

Layanan tertaut Azure SQL menautkan Azure SQL Database ke pabrik data Anda. Tabel berikut memberikan deskripsi untuk elemen JSON khusus untuk layanan tertaut Azure SQL.

Properti Deskripsi Diperlukan
jenis Properti jenis harus diatur ke: AzureSqlDatabase Ya
connectionString Tentukan informasi yang diperlukan untuk menyambungkan ke instans Azure SQL Database untuk properti connectionString. Hanya autentikasi dasar yang didukung. Ya

Penting

Mengonfigurasi Azure SQL Database Firewall server database untuk memungkinkan Azure Services mengakses server. Selain itu, jika Anda menyalin data ke Azure SQL Database dari luar Azure termasuk dari sumber data lokal dengan gateway pabrik data, konfigurasikan rentang alamat IP yang sesuai untuk mesin yang mengirim data ke Azure SQL Database.

Properti set data

Untuk menentukan set data untuk mewakili data input atau output di Azure SQL Database, Anda mengatur properti jenis set data menjadi: AzureSqlTable. Atur properti linkedServiceName ditautkan dari set data ke nama layanan tertaut Azure SQL.

Untuk daftar lengkap bagian & properti yang tersedia untuk menentukan himpunan data, lihat artikel Membuat himpunan data. Bagian-bagian seperti struktur, ketersediaan, dan kebijakan himpunan data JSON mirip untuk semua jenis himpunan data (Azure SQL, blob Azure, tabel Azure, dll.).

Bagian typeProperties berbeda untuk setiap jenis set data dan menyediakan informasi tentang lokasi data di penyimpanan data. Bagian typeProperties untuk set data jenis AzureSqlTable memiliki properti berikut ini:

Properti Deskripsi Diperlukan
tableName Nama tabel atau tampilan dalam contoh Azure SQL Database yang dirujuk oleh layanan tertaut. Ya

Properti aktivitas penyalinan

Untuk daftar lengkap bagian & properti yang tersedia untuk menentukan aktivitas, lihat artikel Membuat Alur. Properti seperti nama, deskripsi, tabel input dan output, dan kebijakan tersedia untuk semua jenis aktivitas.

Catatan

Aktivitas Salin hanya membutuhkan satu input dan hanya menghasilkan satu output.

Sedangkan properti yang tersedia di bagian typeProperties aktivitas bervariasi menurut setiap jenis aktivitas. Untuk aktivitas Salin, ia bervariasi tergantung pada jenis sumber dan jalur.

Jika Anda memindahkan data dari Azure SQL Database, Anda mengatur jenis sumber dalam aktivitas salin ke SqlSource. Demikian pula, jika Anda memindahkan data ke Azure SQL Database, Anda mengatur jenis sink dalam aktivitas salin ke SqlSink. Bagian ini menyediakan daftar properti yang didukung oleh SqlSource dan SqlSink.

SqlSource

Dalam aktivitas salin, ketika sumber jenis SqlSource, properti berikut ini tersedia di bagian typeProperties:

Properti Deskripsi Nilai yang diizinkan Diperlukan
sqlReaderQuery Gunakan kueri kustom untuk membaca data. String kueri SQL. Contoh: select * from MyTable. Tidak
sqlReaderStoredProcedureName Nama prosedur tersimpan yang membaca data dari tabel sumber. Nama prosedur tersimpan. Pernyataan SQL terakhir harus merupakan pernyataan SELECT dalam prosedur yang disimpan. Tidak
storedProcedureParameters Parameter untuk prosedur tersimpan. Pasangan kunci/nilai. Nama dan casing parameter harus sesuai dengan nama dan casing parameter prosedur yang disimpan. Tidak

Jika sqlReaderQuery ditentukan untuk SqlSource, Aktivitas Salin menjalankan kueri ini terhadap sumber Azure SQL Database untuk mendapatkan data. Selain itu, Anda dapat menentukan prosedur yang disimpan dengan menentukan sqlReaderStoredProcedureName dan storedProcedureParameters (jika prosedur yang disimpan mengambil parameter).

Jika Anda tidak menentukan sqlReaderQuery atau sqlReaderStoredProcedureName, kolom yang ditentukan di bagian struktur set data JSON digunakan untuk membuat kueri (select column1, column2 from mytable) yang akan dijalankan terhadap Azure SQL Database. Jika definisi set data tidak memiliki struktur, semua kolom dipilih dari tabel.

Catatan

Saat Anda menggunakan sqlReaderStoredProcedureName, Anda masih perlu menentukan nilai untuk properti tableName di himpunan data JSON. Tidak ada validasi yang dilakukan terhadap tabel ini.

Contoh SqlSource

"source": {
    "type": "SqlSource",
    "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
    "storedProcedureParameters": {
        "stringData": { "value": "str3" },
        "identifier": { "value": "$$Text.Format('{0:yyyy}', SliceStart)", "type": "Int"}
    }
}

Definisi prosedur tersimpan:

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

SqlSink

SqlSink mendukung properti berikut:

Properti Deskripsi Nilai yang diizinkan Diperlukan
writeBatchTimeout Waktu tunggu hingga operasi penyisipan batch selesai sebelum waktu habis. rentang waktu

Contoh: "00:30:00" (30 menit).
Tidak
writeBatchSize Menyisipkan data ke dalam tabel SQL saat ukuran buffer mencapai writeBatchSize. Bilangan bulat (jumlah baris) Tidak (default: 10000)
sqlWriterCleanupScript Tentukan kueri untuk Aktivitas Salin untuk menjalankan bagian data tertentu yang dibersihkan. Untuk informasi selengkapnya, lihat salinan yang dapat diulang. Pernyataan kueri. Tidak
sliceIdentifierColumnName Tentukan nama kolom untuk Salin Aktivitas untuk diisi dengan pengidentifikasi potongan yang dihasilkan otomatis, yang digunakan untuk membersihkan data dari potongan tertentu saat dijalankan ulang. Untuk informasi selengkapnya, lihat salinan yang dapat diulang. Nama kolom dari kolom dengan jenis data biner(32). Tidak
sqlWriterStoredProcedureName Nama prosedur tersimpan yang menentukan cara menerapkan data sumber ke dalam tabel target, misalnya untuk melakukan upsert atau bertransformasi menggunakan logika bisnis Anda sendiri.

Harap diperhatikan bahwa prosedur yang disimpan ini akan dipanggil per batch. Jika Anda ingin melakukan operasi yang hanya berjalan sekali dan tidak ada hubungannya dengan data sumber misalnya hapus/potong, gunakan properti sqlWriterCleanupScript.
Nama prosedur tersimpan. Tidak
storedProcedureParameters Parameter untuk prosedur tersimpan. Pasangan kunci/nilai. Nama dan casing parameter harus sesuai dengan nama dan casing parameter prosedur yang disimpan. Tidak
sqlWriterTableType Tentukan nama jenis tabel yang akan digunakan dalam prosedur yang disimpan. Aktivitas salin membuat data sedang dipindahkan tersedia dalam tabel sementara dengan jenis tabel ini. Kode prosedur yang disimpan kemudian dapat menggabungkan data yang sedang disalin dengan data yang ada. Nama jenis tabel. Tidak

Contoh SqlSink

"sink": {
    "type": "SqlSink",
    "writeBatchSize": 1000000,
    "writeBatchTimeout": "00:05:00",
    "sqlWriterStoredProcedureName": "CopyTestStoredProcedureWithParameters",
    "sqlWriterTableType": "CopyTestTableType",
    "storedProcedureParameters": {
        "identifier": { "value": "1", "type": "Int" },
        "stringData": { "value": "str1" },
        "decimalData": { "value": "1", "type": "Decimal" }
    }
}

Contoh JSON untuk menyalin data ke dan dari SQL Database

Contoh berikut ini menyediakan contoh definisi JSON yang bisa Anda gunakan untuk membuat jalur dengan menggunakan Visual Studio atau Azure PowerShell. Mereka menunjukkan cara menyalin data ke dan dari Azure SQL Database dan Azure Blob Storage. Namun, data dapat disalin langsung dari salah satu sumber ke salah satu jalur yang dinyatakan di sini menggunakan Aktivitas Salin di Azure Data Factory.

Contoh: Menyalin data dari Azure SQL Database ke Azure Blob

Hal yang sama mendefinisikan entitas Data Factory berikut:

  1. Layanan tertaut jenis AzureSqlDatabase.
  2. Layanan tertaut jenis AzureStorage.
  3. Set data input jenis AzureSqlTable.
  4. Set data output jenis Azure Blob.
  5. Alur dengan aktivitas Salin yang menggunakan SqlSource dan BlobSink.

Sampel menyalin data seri waktu (per jam, harian, dll.) dari tabel di Azure SQL Database ke blob setiap jam. Properti JSON yang digunakan dalam sampel ini dijelaskan dalam beberapa bagian setelah sampel.

Azure SQL Database linked service:

{
  "name": "AzureSqlLinkedService",
  "properties": {
    "type": "AzureSqlDatabase",
    "typeProperties": {
      "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
    }
  }
}

Lihat bagian Azure SQL Linked Service untuk daftar properti yang didukung oleh layanan tertaut ini.

Layanan tertaut di Azure Blob Storage:

{
  "name": "StorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Lihat artikel Azure Blob untuk daftar properti yang didukung oleh layanan tertaut ini.

Set data input Azure SQL:

Sampel mengasumsikan Anda telah membuat tabel "MyTable" di Azure SQL dan berisi kolom yang disebut "timestampcolumn" untuk data rangkaian waktu.

Pengaturan "eksternal": "true" menginformasikan layanan Azure Data Factory bahwa set data berada di luar pabrik data dan tidak diproduksi oleh aktivitas di pabrik data.

{
  "name": "AzureSqlInput",
  "properties": {
    "type": "AzureSqlTable",
    "linkedServiceName": "AzureSqlLinkedService",
    "typeProperties": {
      "tableName": "MyTable"
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Lihat bagian properti jenis set data Azure SQL untuk daftar properti yang didukung oleh jenis set data ini.

Set data output Azure Blob:

Data ditulis ke blob baru setiap jam (frekuensi: jam, interval: 1). Jalur folder untuk blob dievaluasi secara dinamis berdasarkan waktu mulai irisan yang sedang diproses. Jalur folder menggunakan bagian tahun, bulan, hari, dan jam dari waktu mulai.

{
  "name": "AzureBlobOutput",
  "properties": {
    "type": "AzureBlob",
    "linkedServiceName": "StorageLinkedService",
    "typeProperties": {
      "folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}/",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ],
      "format": {
        "type": "TextFormat",
        "columnDelimiter": "\t",
        "rowDelimiter": "\n"
      }
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Lihat bagian properti jenis set data Azure Blob untuk daftar properti yang didukung oleh jenis set data ini.

Aktivitas salinan dalam alur dengan SQL source dan Blob sink:

Jalur berisi Aktivitas Salin yang dikonfigurasi untuk menggunakan set data input dan output dan dijadwalkan untuk berjalan setiap jam. Dalam definisi JSON alur jenis source diatur ke SqlSource dan sink diatur ke BlobSink. Kueri SQL yang ditentukan untuk properti SqlReaderQuery memilih data dalam satu jam terakhir untuk disalin.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2014-06-01T18:00:00",
    "end":"2014-06-01T19:00:00",
    "description":"pipeline for copy activity",
    "activities":[
      {
        "name": "AzureSQLtoBlob",
        "description": "copy activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "AzureSQLInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureBlobOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "SqlSource",
            "SqlReaderQuery": "$$Text.Format('select * from MyTable where timestampcolumn >= \\'{0:yyyy-MM-dd HH:mm}\\' AND timestampcolumn < \\'{1:yyyy-MM-dd HH:mm}\\'', WindowStart, WindowEnd)"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
        "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

Dalam contoh tersebut, sqlReaderQuery ditentukan untuk SqlSource. Aktivitas Salin menjalankan kueri ini terhadap sumber Azure SQL Database untuk mendapatkan data. Selain itu, Anda dapat menentukan prosedur yang disimpan dengan menentukan sqlReaderStoredProcedureName dan storedProcedureParameters (jika prosedur yang disimpan mengambil parameter).

Jika Anda tidak menentukan sqlReaderQuery atau sqlReaderStoredProcedureName, kolom yang ditentukan di bagian struktur set data JSON digunakan untuk membuat kueri yang akan dijalankan terhadap Azure SQL Database. Misalnya: select column1, column2 from mytable. Jika definisi set data tidak memiliki struktur, semua kolom dipilih dari tabel.

Lihat bagian Sql Source dan BlobSink untuk daftar properti yang didukung oleh SqlSource dan BlobSink.

Contoh: Menyalin data dari Azure Blob ke Azure SQL Database

Sampel menentukan entitas Data Factory berikut:

  1. Layanan tertaut jenis AzureSqlDatabase.
  2. Layanan tertaut jenis AzureStorage.
  3. Sebuah input Himpunan data jenis AzureBlob.
  4. Set data output jenis AzureSqlTable.
  5. Jalur dengan Aktivitas Salin yang menggunakan BlobSource dan SqlSink.

Sampel menyalin data seri waktu (per jam, harian, dll.) dari Azure blob ke tabel di Azure SQL Database ke blob setiap jam. Properti JSON yang digunakan dalam sampel ini dijelaskan dalam beberapa bagian setelah sampel.

Azure SQL linked service:

{
  "name": "AzureSqlLinkedService",
  "properties": {
    "type": "AzureSqlDatabase",
    "typeProperties": {
      "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
    }
  }
}

Lihat bagian Azure SQL Linked Service untuk daftar properti yang didukung oleh layanan tertaut ini.

Layanan tertaut di Azure Blob Storage:

{
  "name": "StorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Lihat artikel Azure Blob untuk daftar properti yang didukung oleh layanan tertaut ini.

Set data input Azure Blob:

Data ditulis ke blob baru setiap jam (frekuensi: jam, interval: 1). Jalur folder dan nama file untuk blob dievaluasi secara dinamis berdasarkan waktu mulai yang sedang diproses. Jalur folder menggunakan bagian tahun, bulan, dan hari dari waktu mulai dan nama file menggunakan bagian jam dari waktu mulai. Pengaturan "eksternal": "true" menginformasikan layanan Data Factory bahwa set data berada di luar pabrik data dan tidak diproduksi oleh aktivitas di pabrik data.

{
  "name": "AzureBlobInput",
  "properties": {
    "type": "AzureBlob",
    "linkedServiceName": "StorageLinkedService",
    "typeProperties": {
      "folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/",
      "fileName": "{Hour}.csv",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ],
      "format": {
        "type": "TextFormat",
        "columnDelimiter": ",",
        "rowDelimiter": "\n"
      }
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Lihat bagian properti jenis set data Azure Blob untuk daftar properti yang didukung oleh jenis set data ini.

Set data output Azure SQL Database:

Sampel menyalin data ke tabel bernama "MyTable" di Azure SQL. Buat tabel di Azure SQL dengan jumlah kolom yang sama seperti yang Anda harapkan untuk dimuat file CSV Blob. Baris baru ditambahkan ke tabel setiap jam.

{
  "name": "AzureSqlOutput",
  "properties": {
    "type": "AzureSqlTable",
    "linkedServiceName": "AzureSqlLinkedService",
    "typeProperties": {
      "tableName": "MyOutputTable"
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Lihat bagian properti jenis set data Azure SQL untuk daftar properti yang didukung oleh jenis set data ini.

Aktivitas salin dalam alur dengan Blob source dan SQL sink:

Jalur berisi Aktivitas Salin yang dikonfigurasi untuk menggunakan set data input dan output dan dijadwalkan untuk berjalan setiap jam. Dalam definisi alur JSON, jenis source diatur ke BlobSource dan jenis sink diatur ke SqlSink.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2014-06-01T18:00:00",
    "end":"2014-06-01T19:00:00",
    "description":"pipeline with copy activity",
    "activities":[
      {
        "name": "AzureBlobtoSQL",
        "description": "Copy Activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "AzureBlobInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureSqlOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "BlobSource",
            "blobColumnSeparators": ","
          },
          "sink": {
            "type": "SqlSink"
          }
        },
        "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

Lihat bagian Sql Sink dan BlobSource untuk daftar properti yang didukung oleh SqlSink dan BlobSource.

Kolom identitas dalam database target

Bagian ini menyediakan contoh untuk menyalin data dari tabel sumber tanpa kolom identitas ke tabel tujuan dengan kolom identitas.

Tabel sumber:

create table dbo.SourceTbl
(
    name varchar(100),
    age int
)

Tabel tujuan:

create table dbo.TargetTbl
(
    identifier int identity(1,1),
    name varchar(100),
    age int
)

Perhatikan bahwa tabel target memiliki kolom identitas.

Definisi JSON himpunan data sumber

{
    "name": "SampleSource",
    "properties": {
        "type": " SqlServerTable",
        "linkedServiceName": "TestIdentitySQL",
        "typeProperties": {
            "tableName": "SourceTbl"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true,
        "policy": {}
    }
}

Definisi JSON himpunan data tujuan

{
    "name": "SampleTarget",
    "properties": {
        "structure": [
            { "name": "name" },
            { "name": "age" }
        ],
        "type": "AzureSqlTable",
        "linkedServiceName": "TestIdentitySQLSource",
        "typeProperties": {
            "tableName": "TargetTbl"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": false,
        "policy": {}
    }
}

Perhatikan bahwa tabel sumber dan target Anda memiliki skema yang berbeda (target memiliki kolom tambahan dengan identitas). Dalam skenario ini, Anda perlu menentukan properti struktur dalam definisi himpunan data target yang tidak menyertakan kolom identitas.

Panggil prosedur yang disimpan dari SQL sink

Untuk contoh pemanggilan prosedur yang disimpan dari SQL sink dalam aktivitas salinan alur, lihat Prosedur yang disimpan Invoke untuk SQL sink dalam artikel aktivitas salinan.

Ketik pemetaan untuk Azure SQL Database

Seperti disebutkan dalam artikel aktivitas pergerakan data, Aktivitas Salin melakukan konversi jenis otomatis dari jenis sumber ke jenis jalur dengan pendekatan 2 langkah berikut:

  1. Konversi dari jenis sumber asli menjadi jenis .NET
  2. Konversi dari jenis .NET ke jenis jalur asli

Saat memindahkan data ke dan dari Azure SQL Database, pemetaan berikut digunakan dari jenis SQL ke jenis .NET dan sebaliknya. Pemetaannya sama dengan Pemetaan Jenis Data SQL Server untuk ADO.NET.

Jenis SQL Server Database Engine Jenis .NET Framework
bigint Int64
binary Byte[]
bit Boolean
char String, Char[]
tanggal DateTime
Tanggalwaktu DateTime
datetime2 DateTime
Datetimeoffset DateTimeOffset
Decimal Desimal
FILESTREAM attribute (varbinary(max)) Byte[]
Float Double
gambar Byte[]
int Int32
money Desimal
nchar String, Char[]
ntext String, Char[]
numeric Desimal
nvarchar String, Char[]
nyata Tunggal
rowversion Byte[]
smalldatetime DateTime
smallint Int16
smallmoney Desimal
sql_variant Object *
teks String, Char[]
waktu TimeSpan
timestamp Byte[]
tinyint Byte
uniqueidentifier Guid
varbinary Byte[]
varchar String, Char[]
xml Xml

Memetakan sumber untuk sink kolom

Untuk memetakan kolom dari set data sumber ke kolom dari set data yang tenggelam, lihat Memetakan kolom set data di Azure Data Factory.

Salinan yang dapat diulang

Saat menyalin data ke SQL Server Database, aktivitas penyalinan menambahkan data ke tabel sink secara default. Untuk melakukan UPSERT, Lihat artikel Tulisan berulang ke SqlSink.

Saat menyalin data dari penyimpanan data relasional, ingatlah pengulangan untuk menghindari hasil yang tidak diinginkan. Di Azure Data Factory, Anda dapat menjalankan ulang irisan secara manual. Anda juga dapat mengonfigurasi kebijakan coba lagi untuk himpunan data sehingga irisan diulang saat kegagalan terjadi. Saat irisan diulang dengan cara apa pun, Anda perlu memastikan bahwa data yang sama dibaca tidak peduli berapa kali irisan dijalankan. Lihat Bacaan yang dapat diulang dari sumber relasional.

Kinerja dan Penyetelan

Lihat Performa Aktivitas Penyalinan & Panduan Pengaturan untuk mempelajari tentang faktor utama yang memengaruhi performa perpindahan data (Aktivitas Penyalinan) di Azure Data Factory dan berbagai cara untuk mengoptimalkannya.