在脚本任务中连接数据源
连接管理器提供对已在包中配置的数据源的访问。 有关详细信息,请参阅 Integration Services (SSIS) 连接。
脚本任务可通过 Dts 对象的 Connections 属性访问这些连接管理器。 Connections 集合中的每个连接管理器都存储有关如何连接到基础数据源的信息。
调用连接管理器的 AcquireConnection 方法时,如果连接管理器尚未连接数据源,则进行连接,然后返回供您在脚本任务代码中使用的相应连接或连接信息。
注意
在调用 AcquireConnection
之前,必须知道连接管理器返回的连接类型。 由于脚本任务启用了 Option Strict
,因此在使用连接之前,必须先将连接(返回类型为 Object
)转换为适当的连接类型。
在代码中使用连接之前,可以使用 Contains 属性返回的 Connections 集合的 Connections 方法查找现有连接。
重要
在脚本任务的托管代码中,不能调用返回非托管对象的连接管理器(如 OLE DB 连接管理器和 Excel 连接管理器)的 AcquireConnection 方法。 但是,你可以读取这些连接管理器的 ConnectionString 属性,并通过将 连接字符串 与 OledbConnection
System.Data.OleDb 命名空间配合使用,直接连接到代码中的数据源。
如果必须调用返回非托管对象的连接管理器的 AcquireConnection 方法,可使用 ADO.NET 连接管理器。 配置 ADO.NET 连接管理器为使用 OLE DB 访问接口时,该连接管理器使用用于 OLE DB 的 .NET Framework 数据访问接口进行连接。 在这种情况下,AcquireConnection 方法返回非 System.Data.OleDb.OleDbConnection
托管对象而不是非托管对象。 若要将 ADO.NET 连接管理器配置为用于 Excel 数据源,请选择 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;
}
}
随时了解 Integration Services
有关来自Microsoft的最新下载、文章、示例和视频,以及来自社区的所选解决方案,请访问 MSDN 上的 Integration Services 页面:
访问 MSDN 上的 Integration Services 页
若要获得有关这些更新的自动通知,请订阅该页上提供的 RSS 源。