SSIS Azure время выполнения интеграции - соединение OLEDB работает для подключения на сервере SQL, но ADO. net соединение не - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь получить доступ к серверу 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, все работает нормально.

любое предложение о возможном решении будет очень полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...