Поделиться через


Добавление соединений программным образом

Класс ConnectionManager представляет физические соединения с внешними источниками данных. Класс ConnectionManager изолирует данные о реализации соединения от среды выполнения. Это обеспечивает согласованное и прогнозируемое взаимодействие среды выполнения с каждым диспетчером соединения. Диспетчеры соединений содержат набор основных свойств, общих для всех соединений, например, Name, ID, Description и ConnectionString. Однако, как правило, только свойства ConnectionString и Name требуются для настройки диспетчера соединений. Обычно классами соединения используются такие методы, как Open или Connect, чтобы установить физическое соединение с источником данных, однако обработчик среды выполнения управляет всеми соединениями пакета во время его выполнения.

Класс Connections представляет собой коллекцию диспетчеров соединений, добавленных в этот пакет и доступных для использования во время выполнения. Можно добавить в коллекцию дополнительные диспетчеры соединений, используя метод Add коллекции и указав строку, определяющую тип диспетчера соединений. Метод Add возвращает экземпляр ConnectionManager, который был добавлен в пакет.

Важные свойства

Класс ConnectionManager представляет набор свойств, общих для всех соединений. Однако иногда может потребоваться доступ к уникальным свойствам, характеризующим определенный тип соединений. Коллекция Properties класса ConnectionManager обеспечивает доступ к таким свойствам. Свойства могут быть извлечены из коллекции с помощью индексатора или имени свойства и метода GetValue, а значения задаются с использованием метода SetValue. Свойства базового объекта соединения также можно задать, получив фактический экземпляр объекта и непосредственно определив его свойства. Чтобы получить базовое соединение, используйте свойство InnerObject диспетчера соединений. Ниже приведена строка кода на языке C#, создающая диспетчер соединений ADO.NET, имеющий базовый класс ConnectionManagerAdoNetClass.

ConnectionManagerAdoNetClass cmado = cm.InnerObject as ConnectionManagerAdoNet;

Таким образом, выполняется приведение объекта управляемого диспетчера соединений к объекту его базового соединения. При использовании языка C++ вызывается метод QueryInterface объекта ConnectionManager и запрашивается интерфейс объекта базового соединения.

В следующей таблице приведен перечень диспетчеров соединений, поставляемых со службами Integration Services, и строка, используемая в инструкции package.Connections.Add("xxx"). Список всех диспетчеров соединений см. в разделе Соединения служб Integration Services.

Строковые

Диспетчер соединений

OLEDB

Диспетчер соединений для соединений OLE DB.

ODBC

Диспетчер соединений для соединений ODBC.

ADO

Диспетчер соединений для соединений ADO.

ADO.NET:SQL

Диспетчер соединений для соединений ADO.NET (поставщик данных SQL).

ADO.NET:OLEDB

Диспетчер соединений для соединений ADO.NET (поставщик данных OLE DB).

FLATFILE

Диспетчер соединений для соединений плоских файлов.

FILE

Диспетчер соединений для соединений файлов.

MULTIFLATFILE

Диспетчер соединений для соединений нескольких плоских файлов.

MULTIFILE

Диспетчер соединений для соединений нескольких файлов.

SQLMOBILE

Диспетчер соединений для соединений SQL Server Compact.

MSOLAP100

Диспетчер соединений для соединений служб Analysis Services.

FTP

Диспетчер соединений для FTP-соединений.

HTTP

Диспетчер соединений для HTTP-соединений.

MSMQ

Диспетчер соединений для соединений службы очередей сообщений (MSMQ).

SMTP

Диспетчер SMTP-соединений.

«WMI»

Диспетчер соединений инструментария управления Windows (WMI-соединений).

В следующем примере кода демонстрируется добавление соединений OLE DB и FILE в коллекцию Connections пакета Package. Затем в примере задаются свойства ConnectionString, Name и Description.

using System;
using Microsoft.SqlServer.Dts.Runtime;

namespace Microsoft.SqlServer.Dts.Samples
{
  class Program
  {
    static void Main(string[] args)
    {
      // Create a package, and retrieve its connections.
      Package pkg = new Package();
      Connections pkgConns = pkg.Connections;

      // Add an OLE DB connection to the package, using the 
      // method defined in the AddConnection class.
      CreateConnection myOLEDBConn = new CreateConnection();
      myOLEDBConn.CreateOLEDBConnection(pkg);

      // View the new connection in the package.
      Console.WriteLine("Connection description: {0}",
         pkg.Connections["SSIS Connection Manager for OLE DB"].Description);

      // Add a second connection to the package.
      CreateConnection myFileConn = new CreateConnection();
      myFileConn.CreateFileConnection(pkg);

      // View the second connection in the package.
      Console.WriteLine("Connection description: {0}",
        pkg.Connections["SSIS Connection Manager for Files"].Description);

      Console.WriteLine();
      Console.WriteLine("Number of connections in package: {0}", pkg.Connections.Count);

      Console.Read();
    }
  }
  // <summary>
  // This class contains the definitions for multiple
  // connection managers.
  // </summary>
  public class CreateConnection
  {
    // Private data.
    private ConnectionManager ConMgr;

    // Class definition for OLE DB Provider.
    public void CreateOLEDBConnection(Package p)
    {
      ConMgr = p.Connections.Add("OLEDB");
      ConMgr.ConnectionString = "Provider=SQLOLEDB.1;" +
        "Integrated Security=SSPI;Initial Catalog=AdventureWorks;" +
        "Data Source=(local);";
      ConMgr.Name = "SSIS Connection Manager for OLE DB";
      ConMgr.Description = "OLE DB connection to the AdventureWorks database.";
    }
    public void CreateFileConnection(Package p)
    {
      ConMgr = p.Connections.Add("File");
      ConMgr.ConnectionString = @"\\<yourserver>\<yourfolder>\books.xml";
      ConMgr.Name = "SSIS Connection Manager for Files";
      ConMgr.Description = "Flat File connection";
    }
  }

}
Imports Microsoft.SqlServer.Dts.Runtime

Module Module1

  Sub Main()

    ' Create a package, and retrieve its connections.
    Dim pkg As New Package()
    Dim pkgConns As Connections = pkg.Connections

    ' Add an OLE DB connection to the package, using the 
    ' method defined in the AddConnection class.
    Dim myOLEDBConn As New CreateConnection()
    myOLEDBConn.CreateOLEDBConnection(pkg)

    ' View the new connection in the package.
    Console.WriteLine("Connection description: {0}", _
      pkg.Connections("SSIS Connection Manager for OLE DB").Description)

    ' Add a second connection to the package.
    Dim myFileConn As New CreateConnection()
    myFileConn.CreateFileConnection(pkg)

    ' View the second connection in the package.
    Console.WriteLine("Connection description: {0}", _
      pkg.Connections("SSIS Connection Manager for Files").Description)

    Console.WriteLine()
    Console.WriteLine("Number of connections in package: {0}", pkg.Connections.Count)

    Console.Read()

  End Sub

End Module

' This class contains the definitions for multiple
' connection managers.

Public Class CreateConnection
  ' Private data.
  Private ConMgr As ConnectionManager

  ' Class definition for OLE DB provider.
  Public Sub CreateOLEDBConnection(ByVal p As Package)
    ConMgr = p.Connections.Add("OLEDB")
    ConMgr.ConnectionString = "Provider=SQLOLEDB.1;" & _
      "Integrated Security=SSPI;Initial Catalog=AdventureWorks;" & _
      "Data Source=(local);"
    ConMgr.Name = "SSIS Connection Manager for OLE DB"
    ConMgr.Description = "OLE DB connection to the AdventureWorks database."
  End Sub

  Public Sub CreateFileConnection(ByVal p As Package)
    ConMgr = p.Connections.Add("File")
    ConMgr.ConnectionString = "\\<yourserver>\<yourfolder>\books.xml"
    ConMgr.Name = "SSIS Connection Manager for Files"
    ConMgr.Description = "Flat File connection"
  End Sub

End Class

Вывод образца:

Описание соединения: Соединение OLE DB с базой данных AdventureWorks.

Описание соединения: Соединение OLE DB с базой данных AdventureWorks.

Число соединений в пакете: 2

Значок служб Integration Services (маленький)Будьте в курсе новых возможностей cлужб Integration Services

Чтобы загружать новейшую документацию, статьи, образцы и видеоматериалы от корпорации Майкрософт, а также лучшие решения от участников сообщества, посетите страницу служб Integration Services на сайтах MSDN или TechNet:

Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.