#c# #sql-server #ssis #etl #script-component
#c# #sql-сервер #ssis #etl #скрипт-компонент
Вопрос:
Я хочу выполнить инструкцию SQL для каждой строки в моем потоке данных, поэтому я использую компонент скрипта (не задачу скрипта) в потоке данных. Я пробовал код, подобный приведенному ниже, но он не компилируется.
using (SqlConnection connection = this.Connections.Connection.AcquireConnection(null) as SqlConnection)
{
using (SqlCommand command = connection.CreateCommand())
{
command.CommandText = "SELECT [Value] FROM dbo.MyTable";
command.CommandType = CommandType.Text;
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
ProfanityWords.Add(reader.GetValue(0).ToString());
}
}
}
this.Connections.Connection.ReleaseConnection(connection);
}
Ответ №1:
Вы добавили ссылку на диспетчер соединений в компоненте скрипта? Это можно сделать, добавив ADO.NET диспетчер подключений на вкладке «Менеджеры подключений» компонента скрипта. После этого к нему можно получить доступ следующим образом. Приведенный ниже пример представляет собой измененную версию вашего кода, с MyConnection
именем, присвоенным менеджеру подключений в графическом интерфейсе компонента скрипта.
using (SqlConnection connection = this.Connections.MyConnection.AcquireConnection(null) as SqlConnection)
{
using (SqlCommand command = connection.CreateCommand())
{
command.CommandText = "SELECT [Value] FROM dbo.MyTable";
command.CommandType = CommandType.Text;
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
ProfanityWords.Add(reader.GetValue(0).ToString());
}
}
}
this.Connections.MyConnection.ReleaseConnection(connection);
}
Комментарии:
1. О, прошу прощения. Я не заметил вкладку «Менеджеры подключений». Большое вам спасибо!