Добавление соединений программным образом
Класс 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=AdventureWorks2008R2;" +
"Data Source=(local);";
ConMgr.Name = "SSIS Connection Manager for OLE DB";
ConMgr.Description = "OLE DB connection to the AdventureWorks2008R2 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=AdventureWorks2008R2;" & _
"Data Source=(local);"
ConMgr.Name = "SSIS Connection Manager for OLE DB"
ConMgr.Description = "OLE DB connection to the AdventureWorks2008R2 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 AdventureWorks2008R2 database.
Connection description: OLE DB connection to the AdventureWorks2008R2 database.
Number of connections in package: 2
Внешние ресурсы
Техническая статья Строки подключения на сайте carlprothman.net.
|
См. также