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


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

Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure

Класс ConnectionManager представляет физические соединения с внешними источниками данных. Класс ConnectionManager изолирует данные о реализации соединения от среды выполнения. Это позволяет среде выполнения взаимодействовать с каждым диспетчером соединений последовательно и прогнозируемо. Диспетчеры подключений содержат свойства запасов, которые имеют все подключения, такие как Name, , DescriptionIDи 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++вызывается метод ConnectionManager QueryInterface объекта, а интерфейс базового объекта подключения запрашивается.

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

Строка Диспетчер соединений
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

Образец вывода:

Connection description: OLE DB connection to the AdventureWorks database.

Connection description: Flat File connection.

Number of connections in package: 2

См. также