Memindah data ke dan dari SQL Server menggunakan Azure Data Factory

Catatan

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

Artikel ini menjelaskan cara menggunakan Salin Aktivitas di Azure Data Factory untuk memindahkan data ke/dari database SQL Server. Ini dibuat pada artikel Aktivitas Pergerakan Data yang menyajikan ikhtisar umum pergerakan data dengan aktivitas penyalinan.

Catatan

Artikel ini menggunakan modul Azure Az PowerShell, yang merupakan modul PowerShell yang direkomendasikan untuk berinteraksi dengan Azure. Untuk mulai menggunakan modul Az PowerShell, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Skenario yang didukung

Anda dapat menyalin data dari database SQL Server 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 dapat menyalin data dari penyimpanan data berikut ke database SQL Server:

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)

Versi SQL Server yang didukung

Konektor SQL Server ini mendukung penyalinan data dari/ke versi instans berikut yang di-host di tempat atau di Azure IaaS menggunakan autentikasi SQL dan autentikasi Windows: SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

Mengaktifkan konektivitas

Konsep dan langkah-langkah yang diperlukan untuk tersambung dengan SQL Server yang di-host di tempat atau di Azure IaaS (Infrastructure-as-a-Service) VM sama. Dalam kedua kasus, Anda perlu menggunakan Data Management Gateway untuk konektivitas.

Lihat artikel memindahkan data antara lokasi lokal dan cloud untuk mempelajari tentang Data Management Gateway dan untuk instruksi langkah demi langkah tentang cara menyiapkan gateway. Menyiapkan instans gateway adalah prasyarat untuk tersambung dengan SQL Server.

Meskipun Anda dapat menginstal gateway pada komputer lokal yang sama atau instans VM cloud sebagai SQL Server untuk performa yang lebih baik, Anda sebaiknya menginstalnya di komputer terpisah. Memiliki gateway dan SQL Server pada komputer terpisah mengurangi perebutan sumber daya.

Memulai

Anda dapat membuat alur dengan aktivitas penyalinan yang memindahkan data ke/dari database SQL Server menggunakan alat/API yang berbeda.

Cara termudah untuk membuat alur adalah 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 database SQL Server ke penyimpanan blob Azure, Anda membuat dua layanan tertaut untuk menautkan database SQL Server dan akun penyimpanan Azure ke pabrik data Anda. Untuk properti layanan tertaut yang khusus untuk database SQL Server, lihat bagian properti layanan tertaut.
  3. Buat himpunan data merepresentasikan data input dan output untuk operasi penyalinan. Dalam contoh yang disebutkan di langkah terakhir, Anda membuat himpunan data untuk menentukan tabel SQL di database SQL Server yang berisi data input. Anda membuat himpunan data lain untuk menentukan kontainer blob dan folder yang menyimpan data yang disalin dari database SQL Server. Untuk properti himpunan data yang khusus untuk database SQL Server, lihat bagian properti himpunan data.
  4. Buat alur dengan aktivitas penyalinan yang mengambil himpunan data sebagai input dan set data sebagai output. Dalam contoh yang disebutkan sebelumnya, Anda menggunakan SqlSource sebagai sumber dan BlobSink sebagai sink untuk aktivitas penyalinan. Demikian pula, jika Anda menyalin dari Azure Blob Storage ke database SQL Server, Anda menggunakan BlobSource dan SqlSink dalam aktivitas penyalinan. Untuk menyalin properti aktivitas yang khusus untuk Database SQL Server, lihat bagian properti aktivitas penyalinan. Untuk detail tentang cara menggunakan penyimpanan data sebagai sumber atau sink, 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 menggunakan alat/API (kecuali .NET API), Anda menentukan entitas Data Factory ini menggunakan format JSON. Untuk sampel dengan definisi JSON untuk entitas Data Factory yang digunakan untuk menyalin data ke/dari database SQL Server, lihat bagian contoh JSON di artikel ini.

Bagian berikut ini merupakan detail tentang properti JSON yang digunakan untuk menentukan entitas Data Factory khusus SQL Server:

Properti layanan tertaut

Anda membuat layanan tertaut jenis OnPremisesSqlServer untuk menautkan database SQL Server ke pabrik data. Tabel berikut memberikan deskripsi untuk elemen JSON khusus untuk layanan tertaut Microsoft SQL Server.

Tabel berikut memberikan deskripsi untuk elemen JSON khusus untuk layanan tertaut Microsoft SQL Server.

Properti Deskripsi Diperlukan
jenis Properti type harus disetel ke: OnPremisesSqlServer. Ya
connectionString Tentukan informasi connectionString yang diperlukan untuk menyambungkan ke database SQL Server menggunakan autentikasi SQL atau otentikasi Windows. Ya
gatewayName Nama gateway yang harus digunakan oleh layanan Azure Data Factory untuk menyambungkan ke database Microsoft SQL Server. Ya
username Tentukan nama pengguna jika Anda menggunakan Autentikasi Windows. Contoh: domainname\username. Tidak
kata sandi Tentukan kata sandi untuk akun pengguna yang Anda tentukan untuk nama pengguna. Tidak

Anda dapat mengenkripsi kredensial menggunakan cmdlet New-AzDataFactoryEncryptValue dan menggunakannya dalam string koneksi seperti yang ditunjukkan dalam contoh berikut (properti EncryptedCredential):

"connectionString": "Data Source=<servername>;Initial Catalog=<databasename>;Integrated Security=True;EncryptedCredential=<encrypted credential>",

Sampel

JSON untuk menggunakan SQL Autentikasi

{
    "name": "MyOnPremisesSQLDB",
    "properties":
    {
        "type": "OnPremisesSqlServer",
        "typeProperties": {
            "connectionString": "Data Source=<servername>;Initial Catalog=MarketingCampaigns;Integrated Security=False;User ID=<username>;Password=<password>;",
            "gatewayName": "<gateway name>"
        }
    }
}

JSON untuk menggunakan Autentikasi Windows

Data Management Gateway akan meniru akun pengguna yang ditentukan untuk menyambungkan ke database SQL Server.

{
    "Name": " MyOnPremisesSQLDB",
    "Properties":
    {
        "type": "OnPremisesSqlServer",
        "typeProperties": {
            "ConnectionString": "Data Source=<servername>;Initial Catalog=MarketingCampaigns;Integrated Security=True;",
            "username": "<domain\\username>",
            "password": "<password>",
            "gatewayName": "<gateway name>"
        }
    }
}

Properti himpunan data

Dalam sampel, Anda telah menggunakan kumpulan data jenis SqlServerTable untuk merepresentasikan tabel dalam database SQL Server.

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 himpunan data dan menyediakan informasi tentang lokasi data di penyimpanan data. Bagian typeProperties untuk himpunan data jenis SqlServerTable memiliki properti berikut ini:

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

Properti aktivitas penyalinan

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

Untuk daftar lengkap bagian properti & yang tersedia untuk menentukan aktivitas, lihat artikel Membuat Alur. Properti seperti nama, deskripsi, tabel input dan output, serta 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 Penyalinan, ini bervariasi sesuai dengan jenis sumber dan sink.

SqlSource

Ketika sumber dalam aktivitas penyalinan berjenis SqlSource, properti berikut ini tersedia di bagian typeProperties:

Properti Deskripsi Nilai yang diizinkan Diperlukan
sqlReaderQuery Gunakan kueri kustom untuk membaca data. String kueri SQL. Misalnya: pilih * dari MyTable. Dapat mereferensikan beberapa tabel dari database yang direferensikan oleh himpunan data input. Jika tidak ditentukan, pernyataan SQL yang dijalankan: pilih dari 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 Database SQL Server 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 baik sqlReaderQuery atau sqlReaderStoredProcedureName, kolom yang ditentukan di bagian struktur digunakan untuk membuat kueri pemilihan untuk dijalankan terhadap Database Microsoft SQL Server. 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.

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 Menentukan kueri untuk Aktivitas Penyalinan untuk menjalankan data potongan tertentu yang dibersihkan. Untuk informasi selengkapnya, lihat penyalinan yang dapat diulang. Pernyataan kueri. Tidak
sliceIdentifierColumnName Menentukan nama kolom untuk Aktivitas Penyalinan untuk diisi dengan pengidentifikasi potongan yang dihasilkan otomatis, yang digunakan untuk membersihkan data dari potongan tertentu saat dijalankan ulang. Untuk informasi selengkapnya, lihat penyalinan 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 JSON untuk menyalin data dari dan ke SQL Server

Contoh berikut ini menyediakan sampel definisi JSON yang dapat Anda gunakan untuk membuat alur menggunakan Visual Studio atau Azure PowerShell. Contoh berikut menunjukkan cara menyalin data ke dan dari SQL Server dan Azure Blob Storage. Namun, data dapat disalin langsung dari salah satu sumber ke salah satu sink yang dinyatakan di sini menggunakan Aktivitas Penyalinan di Azure Data Factory.

Contoh: Menyalin data dari SQL Server ke Azure Blob

Contoh berikut menunjukkan:

  1. Layanan tertaut jenis OnPremisesSqlServer.
  2. Layanan tertaut jenis AzureStorage.
  3. Himpunan data input jenis SqlServerTable.
  4. Himpunan data output jenis AzureBlob.
  5. Alur dengan aktivitas Penyalinan yang menggunakan SqlSource dan BlobSink.

Sampel menyalin data seri waktu dari tabel SQL Server ke blob Azure setiap jam. Properti JSON yang digunakan dalam sampel ini dijelaskan dalam beberapa bagian setelah sampel.

Sebagai langkah pertama, siapkan data management gateway. Instruksinya berada di artikel memindahkan data antara lokasi lokal dan cloud.

Layanan tertaut SQL Server

{
  "Name": "SqlServerLinkedService",
  "properties": {
    "type": "OnPremisesSqlServer",
    "typeProperties": {
      "connectionString": "Data Source=<servername>;Initial Catalog=<databasename>;Integrated Security=False;User ID=<username>;Password=<password>;",
      "gatewayName": "<gatewayname>"
    }
  }
}

Layanan tertaut Azure Blob Storage

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

Himpunan data input SQL Server

Sampel mengasumsikan Anda telah membuat tabel "MyTable" di SQL Server dan itu berisi kolom yang disebut "timestampcolumn" untuk data rangkaian waktu. Anda dapat membuat kueri atas beberapa tabel dalam database yang sama menggunakan satu himpunan data, tetapi satu tabel harus digunakan untuk himpunan data tableName typeProperty.

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

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

Himpunan 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
    }
  }
}

Alur dengan aktivitas Penyalinan

Jalur berisi Aktivitas Penyalinan yang dikonfigurasi untuk menggunakan himpunan data input dan output dan dijadwalkan untuk berjalan setiap jam. Dalam definisi jalur JSON, jenis sumber diatur ke SqlSource dan jenis sink diatur ke BlobSink. Kueri SQL yang ditentukan untuk properti SqlReaderQuery memilih data dalam satu jam terakhir untuk disalin.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2016-06-01T18:00:00",
    "end":"2016-06-01T19:00:00",
    "description":"pipeline for copy activity",
    "activities":[
      {
        "name": "SqlServertoBlob",
        "description": "copy activity",
        "type": "Copy",
        "inputs": [
          {
            "name": " SqlServerInput"
          }
        ],
        "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 Database SQL Server untuk mendapatkan data. Selain itu, Anda dapat menentukan prosedur yang disimpan dengan menentukan sqlReaderStoredProcedureName dan storedProcedureParameters (jika prosedur yang disimpan mengambil parameter). SqlReaderQuery dapat mereferensikan beberapa tabel dalam database yang direferensikan oleh himpunan data input. Tabel tidak terbatas hanya pada rangkaian tabel sebagai tableName typeProperty himpunan data.

Jika Anda tidak menentukan sqlReaderQuery atau sqlReaderStoredProcedureName, kolom yang ditentukan di bagian struktur digunakan untuk membuat kueri pemilihan untuk dijalankan terhadap Database Microsoft SQL Server. Jika definisi himpunan 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: Salin data dari Azure Blob ke SQL Server

Contoh berikut menunjukkan:

  1. Layanan tertaut jenis OnPremisesSqlServer.
  2. Layanan tertaut jenis AzureStorage.
  3. Himpunan data input jenis AzureBlob.
  4. Himpunan data output jenis SqlServerTable.
  5. Alur dengan Aktivitas Penyalinan yang menggunakan BlobSource dan SqlSink.

Sampel menyalin data seri waktu dari blob Azure ke tabel SQL Server setiap jam. Properti JSON yang digunakan dalam sampel ini dijelaskan dalam beberapa bagian setelah sampel.

Layanan tertaut SQL Server

{
  "Name": "SqlServerLinkedService",
  "properties": {
    "type": "OnPremisesSqlServer",
    "typeProperties": {
      "connectionString": "Data Source=<servername>;Initial Catalog=<databasename>;Integrated Security=False;User ID=<username>;Password=<password>;",
      "gatewayName": "<gatewayname>"
    }
  }
}

Layanan tertaut Azure Blob Storage

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

Himpunan 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 himpunan 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
      }
    }
  }
}

Himpunan data output SQL Server

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

{
  "name": "SqlServerOutput",
  "properties": {
    "type": "SqlServerTable",
    "linkedServiceName": "SqlServerLinkedService",
    "typeProperties": {
      "tableName": "MyOutputTable"
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Alur dengan aktivitas Penyalinan

Jalur berisi Aktivitas Penyalinan yang dikonfigurasi untuk menggunakan himpunan 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": " SqlServerOutput "
          }
        ],
        "typeProperties": {
          "source": {
            "type": "BlobSource",
            "blobColumnSeparators": ","
          },
          "sink": {
            "type": "SqlSink"
          }
        },
        "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

Pemecahan masalah koneksi

  1. Konfigurasikan SQL Server Anda untuk menerima koneksi jarak jauh. Luncurkan SQL Server Management Studio, klik kanan server, dan pilih Properti. Pilih Koneksi dari daftar dan centang Izinkan koneksi jarak jauh ke server.

    Enable remote connections

    Lihat Mengonfigurasi Opsi Konfigurasi Server akses jarak jauh untuk langkah-langkah terperinci.

  2. Luncurkan Pengelola Konfigurasi SQL Server. Perluas Konfigurasi Jaringan SQL Server untuk instans yang Anda inginkan, dan pilih Protokol untuk MSSQLSERVER. Anda akan melihat protokol di panel kanan. Aktifkan TCP/IP dengan mengeklik kanan TCP/IP dan memilih Aktifkan.

    Enable TCP/IP

    Lihat Mengaktifkan atau Menonaktifkan Protokol Jaringan Server untuk detail dan cara alternatif mengaktifkan protokol TCP/IP.

  3. Di jendela yang sama, klik ganda TCP/IP untuk meluncurkan jendela Properti TCP/IP.

  4. Beralih ke tab Alamat IP. Gulir ke bawah untuk melihat bagian IPAll. Catat Port TCP(defaultnya adalah 1433).

  5. Buat aturan untuk Windows Firewall pada mesin untuk mengizinkan lalu lintas masuk melalui port ini.

  6. Verifikasi koneksi: Untuk menyambungkan ke SQL Server menggunakan nama yang sepenuhnya memenuhi syarat, gunakan SQL Server Management Studio dari mesin yang berbeda. Misalnya: "<mesin>.< domain>.corp.< perusahaan>.com,1433."

    Penting

    Lihat Memindahkan data antara sumber lokal dan cloud dengan Data Management Gateway untuk informasi terperinci.

    Lihat Memecahkan masalah gateway untuk tips tentang pemecahan masalah terkait koneksi/gateway.

Kolom identitas dalam database target

Bagian ini menyediakan contoh yang 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": {
        "published": false,
        "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" }
        ],
        "published": false,
        "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

Lihat artikel Prosedur tersimpan pemanggilan untuk SQL sink dalam aktivitas penyalinan untuk contoh pemanggilan prosedur tersimpan dari SQL sink dalam aktivitas penyalinan alur.

Pemetaan jenis untuk SQL Server

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

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

Saat memindahkan data ke & dari SQL server, 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 Decimal
FILESTREAM attribute (varbinary(max)) Byte[]
Float Double
gambar Byte[]
int Int32
money Decimal
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 melakukan sink pada kolom

Untuk memetakan kolom dari set data sumber ke kolom dari himpunan data sink, lihat Memetakan kolom himpunan 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.