Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
SSIS Integration Runtime v rámci Azure Data Factory
Po nastavení Script úlohy v Script Task Editoru napíšete vlastní kód v prostředí Script task vývoje.
Prostředí pro vývoj skriptových úloh
Úloha Script používá Microsoft Visual Studio Tools for Applications (VSTA) jako vývojové prostředí pro samotný skript.
Skriptový kód je psán v Microsoft Visual Basic nebo Microsoft Visual C#. Skriptovací jazyk určujete nastavením vlastnosti ScriptLanguage v Editoru úloh skriptů. Pokud preferujete jiný programovací jazyk, můžete vyvinout vlastní assembler ve svém zvoleném jazyce a volat jeho funkčnost z kódu v úlohě Script.
Skript, který vytvoříte v úlohě Script, je uložen v definici balíčku. Neexistuje samostatný skriptový soubor. Proto použití skriptové úlohy neovlivňuje nasazení balíčku.
Note
Když navrhnete balíček a ladíte skript, kód skriptu je dočasně zapsán do projektového souboru. Protože ukládání citlivých informací do souboru představuje potenciální bezpečnostní riziko, doporučujeme nezařazovat citlivé informace, jako jsou hesla, do kódu skriptu.
Ve výchozím nastavení je v IDE zakázáno Option Strict .
Struktura skriptového úkolu Project
Když vytvoříte nebo upravíte skript, který je obsažen ve skriptové úlohě, VSTA otevře prázdný nový projekt nebo znovu otevře ten existující. Vytvoření tohoto projektu VSTA neovlivňuje nasazení balíčku, protože projekt je uložen uvnitř souboru balíčku; úloha Script nevytváří další soubory.
Project Items a třídy v Script Task Project
Ve výchozím nastavení project úloha Script zobrazena v okně VSTA Project Explorer obsahující jedinou položku, ScriptMain. Položka ScriptMain pak obsahuje jednu třídu, rovněž nazvanou ScriptMain. Prvky kódu ve třídě se liší podle toho, jaký programovací jazyk jste si vybrali pro skriptní úkol:
Když je úloha Script nakonfigurována pro programovací jazyk Visual Basic, třída ScriptMain má veřejnou podrutinu Main. Podprogram ScriptMain.Main je metoda, kterou runtime volá při spuštění vaší Script úlohy.
Ve výchozím nastavení je jediným kódem v hlavní podprogramu nového skriptu řádek
Dts.TaskResult = ScriptResults.Success. Tato linka informuje běžný čas, že úkol byl úspěšný ve svém provedení. Vlastnost Dts.TaskResult je popsána v sekci Returning Results from the Script Task.Když je úloha Script nakonfigurována pro programovací jazyk Visual C#, třída ScriptMain má veřejnou metodu Main. Metoda se volá při spuštění skriptní úlohy.
Výchozí je hlavní metoda zahrnuta do řádku
Dts.TaskResult = (int)ScriptResults.Success. Tato linka informuje běžný čas, že úkol byl úspěšný ve svém provedení.
Položka ScriptMain může obsahovat i jiné třídy než třídu ScriptMain . Třídy jsou dostupné pouze pro úkol Script, ve kterém se nacházejí.
Ve výchozím nastavení obsahuje položka projektu ScriptMain následující automaticky generovaný kód. Šablona kódu také poskytuje přehled o úkolu Script a další informace o tom, jak načíst a manipulovat s objekty SSIS, jako jsou proměnné, události a spojení.
' 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;
}
}
Další položky Project v Script Task Project
Projekt úlohy Script může obsahovat i jiné položky než výchozí položku ScriptMain . Do projektu můžete přidat třídy, moduly a kódové soubory. Složky můžete také použít k organizaci skupin položek. Všechny položky, které přidáte, zůstávají uloženy uvnitř balíčku.
Odkazy v Script Task Project
Odkazy na spravované assemble můžete přidat kliknutím pravým tlačítkem na Script task project v Project Exploreru a poté kliknutím na Přidat referenci. Pro více informací viz Odkazování na jiné sestavy ve skriptovacích řešeních.
Note
Odkazy na projekty můžete zobrazit v IDE VSTA v Class View nebo v Project Exploreru. Jedno z těchto oken otevřete v nabídce Zobrazit . Novou referenci můžete přidat z menu Project, z Project Explorer nebo z Class View.
Interakce s balíčkem v skriptové úlohě
Úloha Script využívá globální objekt DTS , což je instance třídy ScriptObjectModel , a její členy k interakci s obsahujícím balíčkem a s runtime Integration Services.
Následující tabulka uvádí hlavní veřejné členy třídy ScriptObjectModel , která je vystavena kódu úlohy Script prostřednictvím globálního objektu DTS . Témata v této části podrobněji rozebírají využití těchto členů.
| Člen | Purpose |
|---|---|
| Connections | Poskytuje přístup ke správcům spojení definovaným v balíčku. |
| Events | Poskytuje rozhraní pro události, které umožňuje úkolu Script zobrazovat chyby, varování a informační zprávy. |
| ExecutionValue | Poskytuje jednoduchý způsob, jak vrátit jeden objekt do runtime (kromě TaskResult), který lze také použít pro větvení workflow. |
| Log | Záznamy o tom, jako je průběh úkolů a výsledky, jsou povoleným poskytovatelům logů. |
| TaskResult | Hlásí úspěch nebo neúspěch úkolu. |
| Transaction | Poskytuje transakci, pokud existuje, v rámci které kontejner úkolu běží. |
| Variables | Poskytuje přístup k proměnným uvedeným ve vlastnostech úloh ReadOnlyVariables a ReadWriteVariables pro použití ve skriptu. |
Kurz ScriptObjectModel také obsahuje některé veřejné členy, které pravděpodobně nebudete využívat.
| Člen | Description |
|---|---|
| VariableDispenser | Nemovitost Variables poskytuje pohodlnější přístup k proměnným. Ačkoliv můžete použít VariableDispenser, musíte explicitně volat metody pro zamykání a odemykání proměnných pro čtení a zápis. Úloha Script za vás řeší sémantiku zámků, když vlastnost Variables používáte. |
Debugování skriptové úlohy
Pro ladění kódu ve vaší skriptové úlohě nastavte alespoň jeden breakpoint v kódu a poté zavřete VSTA IDE, abyste spustili balíček v SQL Server Data Tools (SSDT). Když spuštění balíčku vstoupí do úlohy Script, IDE VSTA se znovu otevře a zobrazí váš kód v režimu pouze pro čtení. Po dosažení bodu přerušení můžete prozkoumat hodnoty proměnných a postupně procházet zbývající kód.
Warning
Nelze ladit skriptovou úlohu, když spusťujete balíček v 64bitovém režimu.
Note
Musíte spustit balíček pro ladění do vaší skriptové úlohy. Pokud vykonáte pouze jednotlivé úkoly, breakpointy v kódu Script tasku jsou ignorovány.
Note
Nelze ladit skriptní úlohu, když ji spustíte jako součást podbalíčku, který je spuštěn z úlohy Execute Package. Breakpointy, které nastavíte v úkolu Script v podbalení, jsou v těchto případech ignorovány. Dětský balíček můžete normálně ladit tím, že ho spustíte zvlášť.
Note
Když ladíte balíček obsahující více skriptových úloh, ladicí nástroj ladí jednu skriptovou úlohu. Systém může ladit další skriptní úlohu, pokud ladicí nástroj dokončí, například v případě kontejneru Foreach Loop nebo For Loop.