Aggiunta di connessioni a livello di programmazione
La classe ConnectionManager rappresenta le connessioni fisiche alle origini dati esterne. La classe ConnectionManager isola i dettagli di implementazione della connessione dal runtime. In questo modo il runtime è in grado di interagire con ogni gestione connessione in modo coerente e stimabile. Le gestioni connessione contengono un set di proprietà predefinite comuni a tutte le connessioni, ad esempio Name, ID, Description e ConnectionString. Le proprietà ConnectionString e Name, tuttavia, sono in genere le uniche necessarie per configurare una gestione connessione. A differenza di altri paradigmi di programmazione, in cui le classi di connessione espongono metodi quali Open o Connect per stabilire fisicamente una connessione all'origine dati, il motore di run-time gestisce tutte le connessioni per il pacchetto mentre è in esecuzione.
La classe Connections è una raccolta delle gestioni connessione aggiunte a tale pacchetto e disponibili per essere utilizzate in fase di esecuzione. È possibile aggiungere altre gestioni connessione alla raccolta utilizzando il metodo Add della raccolta e fornendo una stringa che indica il tipo di gestione connessione. Il metodo Add restituisce l'istanza ConnectionManager aggiunta al pacchetto.
Proprietà intrinseche
La classe ConnectionManager espone un set di proprietà comuni a tutte le connessioni. Tuttavia, è talvolta necessario accedere a proprietà univoche per il tipo di connessione specifico. La raccolta Properties della classe ConnectionManager fornisce l'accesso a queste proprietà. È possibile recuperare le proprietà dalla raccolta utilizzando l'indicizzatore o il nome della proprietà e il metodo GetValue e i valori vengono impostati utilizzando il metodo SetValue. È possibile impostare le proprietà delle proprietà dell'oggetto connessione sottostante anche acquisendo un'istanza effettiva dell'oggetto e impostandone direttamente le proprietà. Per ottenere la connessione sottostante, utilizzare la proprietà InnerObject della gestione connessione. Nella riga seguente di codice è mostrata una riga C# che crea una gestione connessione ADO.NET che dispone della classe sottostante, ConnectionManagerAdoNetClass.
ConnectionManagerAdoNetClass cmado = cm.InnerObject as ConnectionManagerAdoNet;
Esegue il cast dell'oggetto gestione connessione gestito all'oggetto connessione sottostante. Se si utilizza C++, viene chiamato il metodo QueryInterface dell'oggetto ConnectionManager e viene richiesta l'interfaccia dell'oggetto connessione sottostante.
Nella tabella seguente sono elencate le gestioni connessioni incluse in Integration Services e la stringa utilizzata nell'istruzione package.Connections.Add("xxx"). Per un elenco di tutte le gestioni connessioni, vedere Connessioni in Integration Services.
Stringa |
Gestione connessione |
---|---|
"OLEDB" |
Gestione connessione per le connessioni OLE DB. |
"ODBC" |
Gestione connessione per le connessioni ODBC. |
"ADO" |
Gestione connessione per le connessioni ADO. |
"ADO.NET:SQL" |
Gestione connessione per le connessioni ADO.NET (provider di dati SQL). |
"ADO.NET:OLEDB" |
Gestione connessione per le connessioni ADO.NET (provider di dati OLE DB). |
"FLATFILE" |
Gestione connessione per le connessioni file flat. |
"FILE" |
Gestione connessione per le connessioni file. |
"MULTIFLATFILE" |
Gestione connessione per le connessioni di più file flat. |
"MULTIFILE" |
Gestione connessione per le connessioni di più file. |
"SQLMOBILE" |
Gestione connessione per le connessioni SQL Server Compact. |
"MSOLAP100" |
Gestione connessione per le connessioni Analysis Services. |
"FTP" |
Gestione connessione per le connessioni FTP. |
"HTTP" |
Gestione connessione per le connessioni HTTP. |
"MSMQ" |
Gestione connessione per le connessioni di accodamento messaggi (anche noto come MSMQ). |
"SMTP" |
Gestione connessione per le connessioni SMTP. |
"WMI" |
Gestione connessione per le connessioni Strumentazione gestione Windows (WMI) di Microsoft. |
Nell'esempio di codice seguente è illustrata l'aggiunta di una connessione FILE e OLE DB alla raccolta Connections di un oggetto Package. Nell'esempio vengono quindi impostate le proprietà 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=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
Output di esempio:
Connection description: OLE DB connection to the AdventureWorks2008R2 database.
Connection description: OLE DB connection to the AdventureWorks2008R2 database.
Number of connections in package: 2
Risorse esterne
Articolo tecnico relativo alle stringhe di connessione, disponibile su carlprothman.net
|