Bagikan melalui


Pengodean dan Penelusuran Kesalahan Tugas Skrip

Berlaku untuk: SQL Server SSIS Integration Runtime di Azure Data Factory

Setelah mengonfigurasi tugas Skrip di Editor Tugas Skrip, Anda menulis kode kustom Anda di lingkungan pengembangan tugas Skrip.

Lingkungan Pengembangan Tugas Skrip

Tugas Skrip menggunakan Microsoft® Visual Studio® Tools for Applications (VSTA) sebagai lingkungan pengembangan untuk skrip itu sendiri.

Kode skrip ditulis dalam Microsoft Visual Basic atau Microsoft Visual C#. Anda menentukan bahasa skrip dengan mengatur properti ScriptLanguage di Editor Tugas Skrip. Jika Anda lebih suka menggunakan bahasa pemrograman lain, Anda dapat mengembangkan rakitan kustom dalam bahasa pilihan Anda dan memanggil fungsionalitasnya dari kode dalam tugas Skrip.

Skrip yang Anda buat dalam tugas Skrip disimpan dalam definisi paket. Tidak ada file skrip terpisah. Oleh karena itu, penggunaan tugas Skrip tidak memengaruhi penyebaran paket.

Catatan

Saat Anda merancang paket dan men-debug skrip, kode skrip untuk sementara ditulis ke file proyek. Karena menyimpan informasi sensitif dalam file adalah potensi risiko keamanan, kami sarankan Anda tidak menyertakan informasi sensitif seperti kata sandi dalam kode skrip.

Secara default, Opsi Ketat dinonaktifkan di IDE.

Struktur Proyek Tugas Skrip

Saat Anda membuat atau mengubah skrip yang terkandung dalam tugas Skrip, VSTA membuka proyek baru kosong atau membuka kembali proyek yang ada. Pembuatan proyek VSTA ini tidak memengaruhi penyebaran paket, karena proyek disimpan di dalam file paket; tugas Skrip tidak membuat file tambahan.

Item dan Kelas Proyek dalam Proyek Tugas Skrip

Secara default, proyek tugas Skrip yang ditampilkan di jendela VSTA Project Explorer berisi satu item, ScriptMain. Item ScriptMain , pada gilirannya, berisi satu kelas, juga bernama ScriptMain. Elemen kode di kelas bervariasi tergantung pada bahasa pemrograman yang Anda pilih untuk tugas Skrip:

  • Ketika tugas Skrip dikonfigurasi untuk bahasa pemrograman Visual Basic, kelas ScriptMain memiliki subroutine publik, Utama. Subroutine ScriptMain.Main adalah metode yang dipanggil runtime saat Anda menjalankan tugas Skrip Anda.

    Secara default, satu-satunya kode di subroutine Utama dari skrip baru adalah baris Dts.TaskResult = ScriptResults.Success. Baris ini menginformasikan runtime bahwa tugas berhasil dalam operasinya. Properti Dts.TaskResult dibahas dalam Mengembalikan Hasil dari Tugas Skrip.

  • Ketika tugas Skrip dikonfigurasi untuk bahasa pemrograman Visual C#, kelas ScriptMain memiliki metode publik, Utama. Metode ini dipanggil ketika tugas Skrip berjalan.

    Secara default, metode Utama menyertakan baris Dts.TaskResult = (int)ScriptResults.Success. Baris ini menginformasikan runtime bahwa tugas berhasil dalam operasinya.

Item ScriptMain dapat berisi kelas selain kelas ScriptMain . Kelas hanya tersedia untuk tugas Skrip tempat kelas berada.

Secara default, item proyek ScriptMain berisi kode yang dibuat secara otomatis berikut. Templat kode juga menyediakan gambaran umum tugas Skrip, dan informasi tambahan tentang cara mengambil dan memanipulasi objek SSIS, seperti variabel, peristiwa, dan koneksi.

' Microsoft SQL Server Integration Services Script Task  
' Write scripts using Microsoft Visual Basic 2008.  
' The ScriptMain is the entry point class of the script.  
  
Imports System  
Imports System.Data  
Imports System.Math  
Imports Microsoft.SqlServer.Dts.Runtime.VSTAProxy  
  
<System.AddIn.AddIn("ScriptMain", Version:="1.0", Publisher:="", Description:="")> _  
Partial Class ScriptMain  
  
Private Sub ScriptMain_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup  
  
End Sub  
  
Private Sub ScriptMain_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown  
Try  
' Unlock variables from the read-only and read-write variable collection properties  
If (Dts.Variables.Count <> 0) Then  
Dts.Variables.Unlock()  
End If  
Catch ex As Exception  
        End Try  
End Sub  
  
Enum ScriptResults  
Success = DTSExecResult.Success  
Failure = DTSExecResult.Failure  
End Enum  
  
' The execution engine calls this method when the task executes.  
' To access the object model, use the Dts property. Connections, variables, events,  
' and logging features are available as members of the Dts property as shown in the following examples.  
'  
' To reference a variable, call Dts.Variables("MyCaseSensitiveVariableName").Value  
' To post a log entry, call Dts.Log("This is my log text", 999, Nothing)  
' To fire an event, call Dts.Events.FireInformation(99, "test", "hit the help message", "", 0, True)  
'  
' To use the connections collection use something like the following:  
' ConnectionManager cm = Dts.Connections.Add("OLEDB")  
' cm.ConnectionString = "Data Source=localhost;Initial Catalog=AdventureWorks;Provider=SQLNCLI10;Integrated Security=SSPI;Auto Translate=False;"  
'  
' Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.  
'   
' To open Help, press F1.  
  
Public Sub Main()  
'  
' Add your code here  
'  
Dts.TaskResult = ScriptResults.Success  
End Sub  
  
End Class  
/*  
   Microsoft SQL Server Integration Services Script Task  
   Write scripts using Microsoft Visual C# 2008.  
   The ScriptMain is the entry point class of the script.  
*/  
  
using System;  
using System.Data;  
using Microsoft.SqlServer.Dts.Runtime.VSTAProxy;  
using System.Windows.Forms;  
  
namespace ST_1bcfdbad36d94f8ba9f23a10375abe53.csproj  
{  
    [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]  
    public partial class ScriptMain  
    {  
        private void ScriptMain_Startup(object sender, EventArgs e)  
        {  
  
        }  
  
        private void ScriptMain_Shutdown(object sender, EventArgs e)  
        {  
            try  
            {  
                // Unlock variables from the read-only and read-write variable collection properties  
                if (Dts.Variables.Count != 0)  
                {  
                    Dts.Variables.Unlock();  
                }  
            }  
            catch  
            {  
            }  
        }  
  
        #region VSTA generated code  
        private void InternalStartup()  
        {  
            this.Startup += new System.EventHandler(ScriptMain_Startup);  
            this.Shutdown += new System.EventHandler(ScriptMain_Shutdown);  
        }  
        enum ScriptResults  
        {  
            Success = DTSExecResult.Success,  
            Failure = DTSExecResult.Failure  
        };  
  
        #endregion  
  
        /*  
The execution engine calls this method when the task executes.  
To access the object model, use the Dts property. Connections, variables, events,  
and logging features are available as members of the Dts property as shown in the following examples.  
  
To reference a variable, call Dts.Variables["MyCaseSensitiveVariableName"].Value;  
To post a log entry, call Dts.Log("This is my log text", 999, null);  
To fire an event, call Dts.Events.FireInformation(99, "test", "hit the help message", "", 0, true);  
  
To use the connections collection use something like the following:  
ConnectionManager cm = Dts.Connections.Add("OLEDB");  
cm.ConnectionString = "Data Source=localhost;Initial Catalog=AdventureWorks;Provider=SQLNCLI10;Integrated Security=SSPI;Auto Translate=False;";  
  
Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.  
  
To open Help, press F1.  
*/  
  
        public void Main()  
        {  
            // TODO: Add your code here  
            Dts.TaskResult = (int)ScriptResults.Success;  
        }  
    }  

Item Proyek Tambahan dalam Proyek Tugas Skrip

Proyek tugas Skrip dapat menyertakan item selain item ScriptMain default. Anda dapat menambahkan kelas, modul, dan file kode ke proyek. Anda juga dapat menggunakan folder untuk menata grup item. Semua item yang Anda tambahkan disimpan di dalam paket.

Referensi dalam Proyek Tugas Skrip

Anda bisa menambahkan referensi ke rakitan terkelola dengan mengklik kanan proyek tugas Skrip di Project Explorer, lalu mengklik Tambahkan Referensi. Untuk informasi selengkapnya, lihat Mereferensikan Rakitan Lain dalam Solusi Pembuatan Skrip.

Catatan

Anda dapat melihat referensi proyek di VSTA IDE di Tampilan Kelas atau di Project Explorer. Anda membuka salah satu jendela ini dari menu Tampilan . Anda dapat menambahkan referensi baru dari menu Proyek , dari Project Explorer, atau dari Tampilan Kelas.

Berinteraksi dengan Paket dalam Tugas Skrip

Tugas Skrip menggunakan objek Dts global, yang merupakan instans ScriptObjectModel kelas, dan anggotanya untuk berinteraksi dengan paket yang berisi dan dengan runtime Integration Services.

Tabel berikut mencantumkan anggota ScriptObjectModel publik utama kelas , yang diekspos ke kode tugas Skrip melalui objek Dts global. Topik di bagian ini membahas penggunaan anggota ini secara lebih rinci.

Anggota Tujuan
Connections Menyediakan akses ke manajer koneksi yang ditentukan dalam paket.
Events Menyediakan antarmuka peristiwa untuk memungkinkan tugas Skrip menimbulkan kesalahan, peringatan, dan pesan informasi.
ExecutionValue Menyediakan cara sederhana untuk mengembalikan satu objek ke runtime (selain TaskResult) yang juga dapat digunakan untuk percabangan alur kerja.
Log Mencatat informasi seperti kemajuan tugas dan hasil ke penyedia log yang diaktifkan.
TaskResult Melaporkan keberhasilan atau kegagalan tugas.
Transaction Menyediakan transaksi, jika ada, di mana kontainer tugas berjalan.
Variables Menyediakan akses ke variabel yang tercantum dalam properti tugas ReadOnlyVariables dan ReadWriteVariables untuk digunakan dalam skrip.

Kelas ini ScriptObjectModel juga berisi beberapa anggota publik yang mungkin tidak akan Anda gunakan.

Anggota Deskripsi
VariableDispenser Properti Variables ini menyediakan akses yang lebih nyaman ke variabel. Meskipun Anda dapat menggunakan VariableDispenser, Anda harus secara eksplisit memanggil metode untuk mengunci dan membuka kunci variabel untuk membaca dan menulis. Tugas Skrip menangani penguncian semantik untuk Anda saat Anda menggunakan Variables properti .

Men-debug Tugas Skrip

Untuk men-debug kode dalam tugas Skrip Anda, atur setidaknya satu titik henti dalam kode, lalu tutup VSTA IDE untuk menjalankan paket di SQL Server Data Tools (SSDT). Saat eksekusi paket memasuki tugas Skrip, VSTA IDE membuka kembali dan menampilkan kode Anda dalam mode baca-saja. Setelah eksekusi mencapai titik henti, Anda dapat memeriksa nilai variabel dan menelusuri kode yang tersisa.

Peringatan

Anda tidak dapat men-debug tugas Skrip saat menjalankan paket dalam mode 64-bit.

Catatan

Anda harus menjalankan paket untuk men-debug ke dalam tugas Skrip Anda. Jika Anda hanya menjalankan tugas individual, titik henti dalam kode tugas Skrip diabaikan.

Catatan

Anda tidak dapat men-debug tugas Skrip saat menjalankan tugas Skrip sebagai bagian dari paket anak yang dijalankan dari tugas Jalankan Paket. Titik henti yang Anda tetapkan dalam tugas Skrip dalam paket anak diasingkan dalam keadaan ini. Anda dapat men-debug paket anak secara normal dengan menjalankannya secara terpisah.

Catatan

Saat Anda men-debug paket yang berisi beberapa tugas Skrip, debugger men-debug satu tugas Skrip. Sistem dapat men-debug tugas Skrip lain jika debugger selesai, seperti dalam kasus kontainer Foreach Loop atau For Loop.

Sumber Daya Eksternal

Lihat Juga

Mereferensikan Rakitan Lain dalam Solusi Pembuatan Skrip
Mengonfigurasi Tugas Skrip di Editor Tugas Skrip