Соединение с источниками данных в задаче «Сценарий»
Диспетчеры соединений обеспечивают доступ к источникам данных, которые были настроены в пакете. Дополнительные сведения см. в разделе Соединения служб Integration Services.
Задача «Сценарий» может обращаться к диспетчерам соединений через свойство Connections объекта Dts . Каждый диспетчер соединений в коллекции Connections хранит сведения о том, как соединиться с базовым источником данных.
При вызове метода AcquireConnection диспетчера соединений диспетчер соединяется с источником данных, если соединение еще не было установлено, и возвращает соответствующее соединение или сведения о соединении для использования в коде задачи «Сценарий».
Примечание |
---|
Прежде чем вызывать метод AcquireConnection, необходимо знать тип соединения, возвращаемого диспетчером соединений. Поскольку в задаче «Сценарий» включен параметр Option Strict, перед использованием необходимо привести соединение, возвращаемое с типом Object, к подходящему типу соединения. |
Можно воспользоваться методом Contains коллекции Connections, возвращаемой свойством Connections, чтобы выполнить поиск существующего соединения, прежде чем использовать соединение в коде.
Важно! |
---|
В управляемом коде задачи «Сценарий» нельзя вызывать метод AcquireConnection диспетчеров соединений, возвращающих неуправляемые объекты, например, диспетчера соединений OLE DB или диспетчера соединений Excel. Однако можно считать свойство ConnectionString этих диспетчеров соединений и соединиться с источником данных непосредственно в коде с помощью строки соединения OledbConnection из пространства имен System.Data.OleDb. Если необходимо вызвать метод AcquireConnection диспетчера соединений, возвращающего неуправляемый объект, используйте диспетчер соединений ADO.NET. При настройке диспетчера соединений ADO.NET для использования поставщика OLE DB, он соединяется с помощью поставщика данных .NET Framework для OLE DB. В этом случае метод AcquireConnection возвращает объект System.Data.OleDb.OleDbConnection вместо неуправляемого объекта. Чтобы настроить диспетчер соединений ADO.NET для работы с источником данных Excel, выберите поставщик OLE DB для Jet (Майкрософт)», укажите книгу Excel, а затем введите Excel 8.0 (для Excel 97 и более поздних версий) в качестве значения параметра Расширенные свойства на странице Все диалогового окна Диспетчер соединений. |
Пример соединений
В следующем примере демонстрируется, как получить доступ к диспетчерам соединений из задачи «Сценарий». В образце предполагается, что был создан и настроен диспетчер соединений ADO.NET с именем Test ADO.NET Connection и диспетчер соединений с плоскими файлами с именем Test Flat File Connection. Обратите внимание, что диспетчер соединений ADO.NET возвращает объект SqlConnection, который можно использовать немедленно для соединения с источником данных. Диспетчер соединений с плоскими файлами, в то же время, возвращает лишь строку, содержащую путь и имя файла. Необходимо использовать методы из пространства имен System.IO, чтобы открыть плоский файл и работать с ним.
Public Sub Main()
Dim myADONETConnection As SqlClient.SqlConnection
myADONETConnection = _
DirectCast(Dts.Connections("Test ADO.NET Connection").AcquireConnection(Dts.Transaction), _
SqlClient.SqlConnection)
MsgBox(myADONETConnection.ConnectionString, _
MsgBoxStyle.Information, "ADO.NET Connection")
Dim myFlatFileConnection As String
myFlatFileConnection = _
DirectCast(Dts.Connections("Test Flat File Connection").AcquireConnection(Dts.Transaction), _
String)
MsgBox(myFlatFileConnection, MsgBoxStyle.Information, "Flat File Connection")
Dts.TaskResult = ScriptResults.Success
End Sub
using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
public class ScriptMain
{
public void Main()
{
SqlConnection myADONETConnection = new SqlConnection();
myADONETConnection = (SqlConnection)(Dts.Connections["Test ADO.NET Connection"].AcquireConnection(Dts.Transaction)as SqlConnection);
MessageBox.Show(myADONETConnection.ConnectionString, "ADO.NET Connection");
string myFlatFileConnection;
myFlatFileConnection = (string)(Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) as String);
MessageBox.Show(myFlatFileConnection, "Flat File Connection");
Dts.TaskResult = (int)ScriptResults.Success;
}
}
|
См. также