Adicionar conexões programaticamente
Aplica-se a: Tempo de execução de integração do SSIS do SQL Server
no Azure Data Factory
A classe ConnectionManager representa conexões físicas com fontes de dados externas. A classe ConnectionManager isola os detalhes de implementação da conexão do runtime. Isso permite que o runtime interaja com cada gerenciador de conexões de forma consistente e previsível. Gerenciadores de conexões contêm propriedades de estoque que todas as conexões têm em comum, como Name, ID, Description e ConnectionString. Porém, as propriedades ConnectionString e Name são, ordinariamente, as únicas propriedades necessárias para configurar um gerenciador de conexões. Diferentemente de outros paradigmas de programação em que as classes de conexão expõem métodos como Open ou Connect para estabelecer uma conexão com a fonte de dados fisicamente, o mecanismo de tempo de execução gerencia todas as conexões para o pacote enquanto ele é executado.
A classe Connections é uma coleção dos gerenciadores de conexões que foram adicionados ao pacote e estão disponíveis para uso em tempo de execução. É possível adicionar mais gerenciadores de conexões à coleção usando o método Add da coleção e fornecendo uma cadeia de caracteres que indica o tipo de gerenciador de conexões. O método Add retorna a instância ConnectionManager que foi acrescentada ao pacote.
Propriedades intrínsecas
A classe ConnectionManager expõe um conjunto de propriedades comuns a todas as conexões. Porém, às vezes você precisa de acesso a propriedades exclusivas ao tipo de conexão específico. A coleção Properties da classe ConnectionManager fornece acesso a essas propriedades. As propriedades podem ser recuperadas da coleção usando o indexador ou o nome da propriedade e o método GetValue, sendo que os valores são definidos usando o método SetValue. As propriedades das propriedades do objeto de conexão subjacente também podem ser definidas adquirindo-se uma instância real do objeto e definindo suas propriedades diretamente. Para obter a conexão subjacente, use a propriedade InnerObject do gerenciador de conexões. A linha de código seguinte mostra uma linha C# que cria um gerenciador de conexões ADO.NET com a classe subjacente ConnectionManagerAdoNetClass.
ConnectionManagerAdoNetClass cmado = cm.InnerObject as ConnectionManagerAdoNet;
Isso converte o objeto do gerenciador de conexões gerenciado em seu objeto de conexão subjacente. Se você usa C++, o método QueryInterface do objeto ConnectionManager é chamado e a interface do objeto de conexão subjacente é solicitada.
A tabela a seguir lista os gerenciadores de conexões incluídos nos Serviços de Integração e a cadeia de caracteres usada na instrução package.Connections.Add("xxx")
. Para obter uma lista de todos os gerenciadores de conexões, confira Conexões do SSIS (Integration Services).
String | Gerenciador de conexões |
---|---|
"OLEDB" | Gerenciador de conexões para conexões OLE DB. |
"ODBC" | Gerenciador de conexões para conexões ODBC. |
"ADO" | Gerenciador de conexões para conexões ADO. |
"ADO.NET:SQL" | Gerenciador de conexões para conexões ADO.NET (provedor de dados SQL). |
"ADO.NET:OLEDB" | Gerenciador de conexões para conexões ADO.NET (provedor de dados OLE DB). |
"FLATFILE" | Gerenciador de conexões para conexões de arquivo simples. |
"FILE" | Gerenciador de conexões para conexões de arquivo. |
"MULTIFLATFILE" | Gerenciador de conexões para múltiplas conexões de arquivo simples. |
"MULTIFILE" | Gerenciador de conexões para múltiplas conexões de arquivo. |
"SQLMOBILE" | Gerenciador de conexões para conexões do SQL Server Compact. |
"MSOLAP100" | Gerenciador para conexões do Analysis Services. |
"FTP" | Gerenciador de conexões para conexões FTP. |
"HTTP" | Gerenciador de conexões para conexões HTTP. |
"MSMQ" | Gerenciador de conexões para conexões do serviço de enfileiramento de mensagens (também conhecido como MSMQ). |
"SMTP" | Gerenciador de conexões para conexões SMTP. |
"WMI" | Gerenciador de conexões para conexões do Microsoft Windows Management Instrumentation (WMI). |
O exemplo de código a seguir demonstra como adicionar uma conexão OLE DB e FILE à coleção Connections de um Package. Em seguida, o exemplo define as propriedades ConnectionString, Name e 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
Saída de exemplo:
Connection description: OLE DB connection to the AdventureWorks database.
Connection description: Flat File connection.
Number of connections in package: 2