在脚本任务中连接数据源

连接管理器提供对已在包中配置的数据源的访问。有关详细信息,请参阅 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;

        }

} 
Integration Services 图标(小) 使 Integration Services 保持最新

若要从 Microsoft 获得最新的下载内容、文章、示例和视频,以及从社区获得所选解决方案,请访问 MSDN 或 TechNet 上的 Integration Services 页:

若要获得有关这些更新的自动通知,请订阅该页上提供的 RSS 源。