在脚本任务中连接数据源
连接管理器提供对已在包中配置的数据源的访问。有关详细信息,请参阅 Integration Services 连接。
脚本任务可通过 Dts 对象的 Connections 属性访问这些连接管理器。Connections 集合中的每个连接管理器都存储有关如何连接到基础数据源的信息。
调用连接管理器的 AcquireConnection 方法时,如果连接管理器尚未连接数据源,则进行连接,然后返回供您在脚本任务代码中使用的相应连接或连接信息。
注意 |
---|
您在调用 AcquireConnection 之前必须了解连接管理器返回的连接的类型。由于脚本任务启用了 Option Strict,因此在使用连接之前,必须先将连接(返回类型为 Object)转换为适当的连接类型。 |
在代码中使用连接之前,可以使用 Connections 属性返回的 Connections 集合的 Contains 方法查找现有连接。
重要提示 |
---|
在脚本任务的托管代码中,不能调用返回非托管对象的连接管理器(如 OLE DB 连接管理器和 Excel 连接管理器)的 AcquireConnection 方法。但是,您可以读取这些连接管理器的 ConnectionString 属性,并在 System.Data.OleDb 命名空间的 OledbConnection 中使用连接字符串在代码中直接连接数据源。 如果必须调用返回非托管对象的连接管理器的 AcquireConnection 方法,可使用 ADO.NET 连接管理器。配置 ADO.NET 连接管理器为使用 OLE DB 访问接口时,该连接管理器使用用于 OLE DB 的 .NET Framework 数据访问接口进行连接。在这种情况下,AcquireConnection 方法将返回 System.Data.OleDb.OleDbConnection,而不是非托管对象。若要配置用于 Excel 数据源的 ADO.NET 连接管理器,请选择 Microsoft OLE DB Provider for Jet,再指定 Excel 文件,然后在“连接管理器”对话框的“全部”页上输入 Excel 8.0(对于 Excel 97 及更高版本)作为“扩展属性”的值。 |
连接示例
下面的示例演示如何从脚本任务内部访问连接管理器。该示例假设您已创建和配置了名为 Test ADO.NET Connection 的 ADO.NET 连接管理器,以及名为 Test Flat File Connection 的平面文件连接管理器。请注意,ADO.NET 连接管理器返回可立即用于连接数据源的 SqlConnection 对象,而平面文件连接管理器则只返回包含路径和文件名的字符串。您必须使用 System.IO 命名空间中的方法来打开和使用该平面文件。
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;
}
}
|