Я пытаюсь получить доступ к серверу onprem SQL в пакете служб SSIS, который настроен на выполнение с azure временем выполнения интеграции.
В пакете у меня есть задача «Выполнить SQL», которая используется для запроса из onprem SQL Сервер с диспетчером соединений OLEDB, и он работает нормально.
Когда я пытаюсь получить доступ к серверу onprem в компоненте скрипта, он выдает ошибку ниже -
[Ошибка: сеть - связанная или указанная для экземпляра ошибка c при установлении соединения с SQL сервером. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Сервер настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL сервером)]
Ниже приведен фрагмент кода -
string SourceConString = "Источник данных =" + Dts.Variables ["var_SourceServer"]. Value.ToString () + "; Initial Catalog =" + Dts.Variables ["var_SourceDatabase"]. Value.ToString () + "; ID пользователя =" + Dts.Variables ["var_SourceUserID "] .Value.ToString () +"; Пароль = "+ Dts.Variables [" var_SourcePassword "]. Value.ToString (); string DestnConString = "Источник данных =" + Dts.Variables ["var_DestnServer"]. Value.ToString () + "; Начальный каталог =" + Dts.Variables ["var_DestnDatabase"]. Value.ToString () + "; ID пользователя = "+ Dts.Variables [" var_DestnUserID "]. Value.ToString () +"; Password = "+ Dts.Variables [" var_DestnPassword "]. Value.ToString ();
using (SqlConnection sourceCon = new SqlConnection(SourceConString))
{
SqlCommand cmd = new SqlCommand("SELECT * FROM " + "dbo." + Dts.Variables["var_StgTableName"].Value.ToString(), sourceCon);
sourceCon.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
using (SqlConnection destinationCon = new SqlConnection(DestnConString))
{
using (SqlBulkCopy bc = new SqlBulkCopy(destinationCon))
{
bc.BatchSize = 25000;
bc.DestinationTableName = "stg." + Dts.Variables["var_StgTableName"].Value.ToString();
destinationCon.Open();
try
{
bc.WriteToServer(rdr);
}
catch
{
Dts.Variables["var_DataLoadErrorFlag"].Value = 1 ;
}
finally
{
sourceCon.Dispose();
destinationCon.Dispose();
}
}
}
}
}
Просто для проверьте, что я создал выполненную задачу SQL и назначил ее ADO. net диспетчер соединений, чтобы подключить его к серверу onprem SQL. Ошибка ниже:
[Ошибка: не удалось установить соединение "- ----». Возможно, соединение настроено неправильно или у вас нет необходимых разрешений для этого соединения.]
Когда я выполняю пакет в локальной среде выполнения, а не во время выполнения интеграции Azure, все работает нормально.
любое предложение о возможном решении будет очень полезным.