Herstellen einer Verbindung zu Datenquellen im Skripttask
Verbindungs-Manager bieten Zugriff auf Datenquellen, die im Paket konfiguriert wurden. Weitere Informationen finden Sie unter SQL Server Integration Services-Verbindungen.
Der Skripttask kann auf diese Verbindungs-Manager über die Connections-Eigenschaft des Dts-Objekts zugreifen. Jeder Verbindungs-Manager in der Connections-Auflistung speichert Informationen darüber, wie eine Verbindung mit der zugrunde liegenden Datenquelle hergestellt werden kann.
Wenn Sie die AcquireConnection-Methode eines Verbindungs-Managers aufrufen, stellt der Verbindungs-Manager eine Verbindung zur Datenquelle her (falls diese nicht bereits besteht), und gibt die entsprechenden Verbindungsinformationen zur Verwendung im Skripttaskcode zurück.
Hinweis |
---|
Sie müssen den Typ der Verbindung wissen, der vom Verbindungs-Manager zurückgegeben wird, bevor Sie AcquireConnection aufrufen. Da für den Skripttask Option Strict aktiviert ist, müssen Sie die Verbindung, die als Object-Typ zurückgegeben wird, vor ihrer Verwendung in den richtigen Verbindungstyp umwandeln. |
Sie können die Contains-Methode der Connections-Auflistung verwenden, die von der Connections-Eigenschaft zurückgegeben wird, um nach einer vorhandenen Verbindung zu suchen, bevor Sie diese Verbindung im Code verwenden.
Wichtig |
---|
Sie können die AcquireConnection-Methode von Verbindungs-Managern, die nicht verwaltete Objekte zurückgeben (z. B. der OLE DB-Verbindungs-Manager und der Excel-Verbindungs-Manager) nicht im verwalteten Code eines Skripttasks aufrufen. Sie können jedoch die ConnectionString-Eigenschaft dieser Verbindungs-Manager lesen und mithilfe der Verbindungszeichenfolge mit OledbConnection aus dem System.Data.OleDb-Namespace direkt im Code eine Verbindung zur Datenquelle herstellen. Wenn Sie die AcquireConnection-Methode eines Verbindungs-Managers aufrufen müssen, der nicht verwaltete Objekte zurückgibt, verwenden Sie einen ADO.NET-Verbindungs-Manager. Wenn Sie den ADO.NET-Verbindungs-Manager zur Verwendung eines OLE DB-Anbieters konfigurieren, stellt er über den .NET Framework-Datenanbieter für OLE DB eine Verbindung her. In diesem Fall gibt die AcquireConnection-Methode System.Data.OleDb.OleDbConnection statt eines nicht verwalteten Objekts zurück. Zur Konfiguration eines ADO.NET-Verbindungs-Managers zur Verwendung mit einer Excel-Datenquelle wählen Sie den Microsoft OLE DB-Anbieter für Jet aus, geben eine Excel-Datei an und geben dann Excel 8.0 (für Excel 97 und höher) als Wert für Erweiterte Eigenschaften auf der Seite Alle des Dialogfelds Verbindungs-Manager ein. |
Verbindungsbeispiel
Im folgenden Beispiel wird veranschaulicht, wie Verbindungs-Manager innerhalb des Skripttasks aufgerufen werden können. In diesem Beispiel wird davon ausgegangen, dass Sie einen ADO.NET-Verbindungs-Manager namens Test ADO.NET Connection und einen Verbindungs-Manager für Flatfiles namens Test Flat File Connection erstellt und konfiguriert haben. Beachten Sie, dass der ADO.NET-Verbindungs-Manager ein SqlConnection-Objekt zurückgibt, das Sie sofort zur Verbindung mit der Datenquelle verwenden können. Der Verbindungs-Manager für Flatfiles gibt im Gegensatz dazu nur eine Zeichenfolge mit Pfad und Dateinamen zurück. Sie müssen Methoden aus dem System.IO-Namespace verwenden, um die Flatfile zu öffnen und mit ihr zu arbeiten.
Public Sub Main()
Dim myADONETConnection As SqlClient.SqlConnection
myADONETConnection = _
DirectCast(Dts.Connections("Test ADO.NET Connection").AcquireConnection(Dts.Transaction), _
SqlClient.SqlConnection)
MsgBox(myADONETConnection.ConnectionString, _
MsgBoxStyle.Information, "ADO.NET Connection")
Dim myFlatFileConnection As String
myFlatFileConnection = _
DirectCast(Dts.Connections("Test Flat File Connection").AcquireConnection(Dts.Transaction), _
String)
MsgBox(myFlatFileConnection, MsgBoxStyle.Information, "Flat File Connection")
Dts.TaskResult = ScriptResults.Success
End Sub
using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
public class ScriptMain
{
public void Main()
{
SqlConnection myADONETConnection = new SqlConnection();
myADONETConnection = (SqlConnection)(Dts.Connections["Test ADO.NET Connection"].AcquireConnection(Dts.Transaction)as SqlConnection);
MessageBox.Show(myADONETConnection.ConnectionString, "ADO.NET Connection");
string myFlatFileConnection;
myFlatFileConnection = (string)(Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) as String);
MessageBox.Show(myFlatFileConnection, "Flat File Connection");
Dts.TaskResult = (int)ScriptResults.Success;
}
}
|
Siehe auch