Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Środowisko SSIS Integration Runtime w usłudze Azure Data Factory
Po skonfigurowaniu zadania skryptowego w edytorze zadań skryptowych, piszesz własny kod w środowisku tworzenia zadań skryptowych.
Środowisko tworzenia zadań skryptowych
Zadanie skryptu wykorzystuje Microsoft Visual Studio Tools for Applications (VSTA) jako środowisko programistyczne dla samego skryptu.
Kod skryptowy jest pisany w Microsoft Visual Basic lub Microsoft Visual C#. Język skryptu określasz, ustawiając właściwość ScriptLanguage w Edytorze Zadań Skryptów. Jeśli wolisz używać innego języka programowania, możesz opracować niestandardowy asembler w wybranym języku i wywołać jego funkcjonalność z kodu w zadaniu skryptowym.
Skrypt, który tworzysz w zadaniu skryptowym, jest przechowywany w definicji pakietu. Nie ma osobnego pliku skryptowego. Dlatego użycie zadania skryptowego nie wpływa na wdrażanie pakietów.
Note
Gdy projektujesz pakiet i debugujesz skrypt, kod skryptu jest tymczasowo zapisywany w pliku projektu. Ponieważ przechowywanie wrażliwych informacji w pliku stanowi potencjalne zagrożenie dla bezpieczeństwa, zalecamy, abyś nie umieszczał wrażliwych informacji, takich jak hasła, w kodzie skryptu.
Domyślnie opcja Strict jest wyłączona w IDE.
Struktura Script Task Project
Gdy tworzysz lub modyfikujesz skrypt zawarty w zadaniu skryptowym, VSTA otwiera pusty nowy projekt lub ponownie otwiera istniejący. Utworzenie tego projektu VSTA nie wpływa na wdrożenie pakietu, ponieważ projekt jest zapisywany wewnątrz pliku pakietu; zadanie skryptowe nie tworzy dodatkowych plików.
Elementy i klasy Project w Script Task Project
Domyślnie projekt zadania Script wyświetlany w oknie VSTA Project Explorer zawiera pojedynczy element, ScriptMain. Element ScriptMain z kolei zawiera jedną klasę, również nazwaną ScriptMain. Elementy kodu na zajęciach różnią się w zależności od wybranego języka programowania do zadania Script:
Gdy zadanie Script jest skonfigurowane dla języka programowania Visual Basic, klasa ScriptMain ma publiczny podprogram Main. Podprogram ScriptMain.Main to metoda, którą wywołuje czas wykonywania podczas wykonywania zadania skryptowego.
Domyślnie jedynym kodem w głównej podprogramie nowego skryptu jest linia
Dts.TaskResult = ScriptResults.Success. Ta linia informuje czas, że zadanie zakończyło się sukcesem. Właściwość Dts.TaskResult jest omówiona w artykule Returning Results from the Script Task.Gdy zadanie Script jest skonfigurowane dla języka Visual C#, klasa ScriptMain ma publiczną metodę Main. Metoda jest wywoływana podczas uruchamiania zadania skryptowego.
Domyślnie metoda główna zawiera linię
Dts.TaskResult = (int)ScriptResults.Success. Ta linia informuje czas, że zadanie zakończyło się sukcesem.
Element ScriptMain może zawierać klasy inne niż klasa ScriptMain . Klasy są dostępne tylko dla zadania skryptowego, w którym się znajdują.
Domyślnie element projektu ScriptMain zawiera następujący automatycznie generowany kod. Szablon kodu zawiera również przegląd zadania skryptowego oraz dodatkowe informacje o tym, jak pobierać i manipulować obiektami SSIS, takimi jak zmienne, zdarzenia i połączenia.
' 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;
}
}
Dodatkowe elementy Project w Script Task Project
Projekt zadania Script może zawierać elementy inne niż domyślny element ScriptMain . Możesz dodawać klasy, moduły i pliki kodu do projektu. Możesz też używać folderów do organizacji grup przedmiotów. Wszystkie dodane przedmioty są przechowywane w pakiecie.
Odniesienia w Script Task Project
Możesz dodać odniesienia do zarządzanych asembli, klikając prawym przyciskiem myszy na Script task project w Project Explorer, a następnie kliknij Dodaj Referencję. Więcej informacji można znaleźć w artykule Referencowanie innych asembli w rozwiązaniach skryptowych.
Note
Możesz przeglądać odniesienia do projektów w IDE VSTA w Class View lub w Project Explorer. Otwierasz jedno z tych okien z menu Widok. Możesz dodać nowe odniesienie z menu Project, z Project Explorer lub z Class View.
Interakcja z pakietem w zadaniu skryptowym
Zadanie skryptowe wykorzystuje globalny obiekt DTS , będący instancją klasy ScriptObjectModel , oraz jego członków do interakcji z zawartym pakietem oraz z runtime Integration Services.
Poniższa tabela przedstawia głównych publicznych członków klasy ScriptObjectModel , która jest wystawiona na kod zadań skryptowych poprzez globalny obiekt DTS . Tematy w tej sekcji omawiają bardziej szczegółowo wykorzystanie tych członków.
| Członek | Purpose |
|---|---|
| Connections | Zapewnia dostęp do menedżerów połączeń zdefiniowanych w pakiecie. |
| Events | Zapewnia interfejs zdarzeń, który pozwala zadaniu skryptowemu generować błędy, ostrzeżenia i komunikaty informacyjne. |
| ExecutionValue | Zapewnia prosty sposób na zwrócenie pojedynczego obiektu do środowiska wykonywania (oprócz TaskResult), który może być również używany do rozgałęziania workflow. |
| Log | Rejestruje informacje takie jak postęp zadań i wyniki do włączonych dostawców logów. |
| TaskResult | Raportuje sukces lub porażkę zadania. |
| Transaction | Dostarcza transakcję, jeśli istnieje, w której działa kontener zadania. |
| Variables | Zapewnia dostęp do zmiennych wymienionych w właściwościach zadań ReadOnlyVariables i ReadWriteVariables do wykorzystania w skrypcie. |
Zajęcia ScriptObjectModel zawierają także członków z grupy publicznej, których prawdopodobnie nie wykorzystasz.
| Członek | Description |
|---|---|
| VariableDispenser | Własność ta Variables zapewnia wygodniejszy dostęp do zmiennych. Chociaż możesz użyć , VariableDispensermusisz wyraźnie wywołać metody blokowania i odblokowywania zmiennych do odczytu i zapisu. Zadanie skryptu zajmuje się semantyką blokowania za ciebie, gdy używasz Variables tej właściwości. |
Debugowanie zadania skryptowego
Aby debugować kod w zadaniu skryptowym, ustaw przynajmniej jeden punkt przerwania w kodzie, a następnie zamknij VSTA IDE, aby uruchomić pakiet w SQL Server Data Tools (SSDT). Gdy wykonanie pakietu wchodzi w zadanie skryptu, IDE VSTA ponownie się otwiera i wyświetla Twój kod w trybie tylko do odczytu. Po osiągnięciu punktu przerwania możesz przeanalizować wartości zmiennych i przejść przez pozostały kod.
Warning
Nie można debugować zadania skryptu, gdy uruchamiasz pakiet w trybie 64-bitowym.
Note
Musisz uruchomić pakiet, aby debugować do zadania skryptowego. Jeśli wykonasz tylko poszczególne zadanie, punkty przerwania w kodzie zadania skryptowego są ignorowane.
Note
Nie można debugować zadania skryptowego, gdy uruchamiasz zadanie skryptowe jako część pakietu podzespołowego uruchamianego z zadania Wykonaj pakiet. Punkty przerwania ustawione w zadaniu skryptowym w pakiecie podrzędnym są w takich sytuacjach pomijane. Możesz normalnie debugować pakiet potomny, uruchamiając go osobno.
Note
Gdy debugujesz pakiet zawierający wiele zadań skryptowych, debugger debuguje jedno zadanie skryptowe. System może debugować inne zadanie skryptu, jeśli debugger zostanie ukończony, jak w przypadku kontenera Foreach Loop lub For Loop.