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:
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:
- Buat data factory. Data factory mungkin berisi satu atau beberapa alur.
- 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.
- 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.
- 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:
- Layanan tertaut jenis AzureSqlDatabase.
- Layanan tertaut jenis AzureStorage.
- Set data input jenis AzureSqlTable.
- Set data output jenis Azure Blob.
- 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:
- Layanan tertaut jenis AzureSqlDatabase.
- Layanan tertaut jenis AzureStorage.
- Sebuah input Himpunan data jenis AzureBlob.
- Set data output jenis AzureSqlTable.
- 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:
- Konversi dari jenis sumber asli menjadi jenis .NET
- 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.