Member 13277231 Ответов: 1

Верна ли моя строка подключения?


Я создаю проект Win32 DLL в VS 2015.

Используя следующий код:
hr = pConnection->Open("Server=tcp:xxx.cloudapp.azure.com;Database=db_name;User ID=user_name;Password=psw;Trusted_Connection=False;Encrypt=False;", "", "", adConnectUnspecified);


Это правильный код? Дело в том, что это не работает :(

Что я уже пробовал:

Проверил журналы SQL Server-никаких ошибок авторизации.
Это DLL, я действительно не знаю, как ее отлаживать. На самом деле я не могу его отладить. Так что я точно не знаю, в чем моя ошибка. Я просто знаю, что он останавливается после строки выше.

Richard MacCutchan

Без некоторой отладочной информации трудно догадаться, в чем дело. Поскольку вы создали библиотеку DLL и знаете, где она останавливается, вы должны быть в состоянии легко отладить ее.

Member 13277231

Я не знаю, но я не могу прикрепить вызывающее приложение...
Dll возвращает только retcode (int). Как мне получить повторный код ошибки? Я нашел несколько примеров обработки erros с помощью try/catch https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/execute-requery-and-clear-methods-example-vc
Но он использует printf... Как я могу сделать то же самое, но с кодом ошибки?

Richard MacCutchan

Конечно, если это ваш код, вы можете посмотреть на ту часть, которая возвращает код ошибки, и узнать, что происходит. Никто здесь не может догадаться, что делает ваш код.

ZurdoDev

https://www.connectionstrings.com/sql-azure/

Member 13277231

какой из них я должен использовать? Тот, который предназначен для .Net?

Richard Deeming

- Это правильный код? Дело в том, что это не работает :("

Вы только что ответили на свой собственный вопрос - если это не работает, то это неправильно.

Теперь вам просто нужно это выяснить почему? это не работает, и что вам нужно сделать, чтобы это исправить. Поскольку у нас нет доступа к вашей системе или к коду, который вы пытаетесь вызвать, мы не можем сделать это за вас.

Member 13277231

Моя строка подключения:
ч = pConnection->открыть("Server=sql.servername.com;базы данных=имя_базы_данных;идентификатор пользователя=имя_пользователя, password=пароль управления;параметр trusted_connection=истина;", "", "", adConnectUnspecified);

И мне удалось вывести ошибку:

Ошибка
Код = 80004005
Значение кода = U
Источник = поставщик Microsoft OLE DB для драйверов ODBC
Описание = [Microsoft][ODBC Driver Manager] имя источника данных не найдено и драйвер по умолчанию не указан

Так что же это значит? Как изменить строку подключения, чтобы она работала?

Richard Deeming

Похоже, что библиотека, которую вы вызываете, ожидает строку подключения ODBC. Вы должны быть в состоянии генерировать один из ваших Портал Azure[^]. Под "Базы данных SQL", нажмите на кнопку "Показать строки подключения к базе данных", выберите "интерфейс ODBC" tab и скопируйте строку подключения.

Получение информации о соединении | подключение к базе данных SQL Azure с помощью .NET (C#) | Microsoft Docs[^]

Member 13277231

Нет, это не настоящая лазурь. Azure-это просто VPS, это стандартный SQL-сервер.

Richard Deeming

Поэтому вам нужно использовать строку подключения SQL Server ODBC:
Строки подключения драйвера ODBC Microsoft SQL Server-ConnectionStrings.com[^]

1 Ответов

Рейтинг:
8

Member 13277231

Я думаю, что мне удалось решить эту проблему, добавив

Driver={SQL Server};
в начале строки:
<pre>hr = pConnection->Open("Driver={SQL Server};Server=sql.servername.com;Database=db_name;User ID=user_name;Password=psw;", "", "", adConnectUnspecified);


Спасибо.