Добавление подключений программным способом
Область применения: среда выполнения интеграции 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