Подключение к базе данных SQLExpress с клиентского компьютера с помощью C++ SQLDriverConnect() или SQLConnect()C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Подключение к базе данных SQLExpress с клиентского компьютера с помощью C++ SQLDriverConnect() или SQLConnect()

Сообщение Anonymous »

У меня есть приложение MFC/C++, построенное на VS2022, которое прекрасно работает с SQLExpress на моем компьютере разработки (Win 11 Pro), который мы будем называть «хостом». Компьютеры находятся в одной сети и шлюзе, и я могу просматривать в проводнике Windows общие папки на хосте, используя имя хост-компьютера или IP-адрес.
Я пытаюсь запустить приложение на клиентском компьютере (Win 11 Home) и подключиться к базе данных на хост-компьютере.
Я выполнил ряд шагов, не запуская приложение, чтобы проверить соединение и. Мне потребовалось некоторое время, чтобы все настроить, но с помощью SQL Management Studio я могу подключиться с клиентского компьютера к главному компьютеру и просмотреть все таблицы. Я написал об этом процессе в этой теме.
Я пробовал множество различных методов подключения, как с помощью SQLConnect(), так и с SQLDriverConnect(), и я полностью сбит с толку. Здесь вы можете увидеть несколько различных попыток (некоторые, конечно же, терпят неудачу и на хосте):

Код: Выделить всё

//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "DRIVER={ODBC Driver17 for SQL Server};SERVER=SQLEXPRESS;DATABASE=master;Trusted_Connection=Yes;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "DSN=SQLExpress;DATABASE=;Trusted_Connection=Yes;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "DSN=\\SQLExpress;DATABASE=;Trusted_Connection=Yes;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "Server=\\SQLExpress;DSN=SQLExpress;Trusted_Connection=YES;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "Server=tcp:;DSN=SQLEXPRESS;DATABASE=;UId=;PWD=
;Trusted_Connection=NO;TrustServerCertificate=yes;ENCRYPT=no;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "Server=;DSN=SQLEXPRESS;DATABASE=;UId=;PWD=;Trusted_Connection=NO;TrustServerCertificate=yes;ENCRYPT=no;");
//strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), "Server=tcp:,1433;DSN=SQLEXPRESS;DATABASE=;UId=;PWD=;Trusted_Connection=NO;TrustServerCertificate=yes;ENCRYPT=no;");
strcpy_s((char*)szConnStrIn, sizeof(szConnStrIn), g_sConnectionString);
iReturn = SQLDriverConnect(sqlConnection, AfxGetMainWnd()->GetSafeHwnd(), szConnStrIn, SQL_NTS, szConnStrOut, sizeof(szConnStrOut), &pcbConnStrOut, SQL_DRIVER_NOPROMPT);

//iReturn = SQLConnect(sqlConnection, (SQLCHAR*)dsnName, SQL_NTS, (SQLCHAR*)userID, SQL_NTS, (SQLCHAR*)passwd, SQL_NTS);
DiagnosticOutput(iReturn, "BECSQLDatabase::InitSystem()", sqlConnection);
ErrorOutput("BECSQLDataBase::InitSystem()", sqlConnection);
Многие из этих параметров отлично работали при подключении к БД на хостовом компьютере, но ни один из них не работал на клиентском компьютере. Примечание. Я жестко запрограммировал строку подключения и, наконец, набрался ума и поместил ее в текстовый файл, который загружается в CString g_sConnectionString, чтобы я мог легко проверить изменения в ней.
Ошибка, которую я получаю от диагностики: «Имя источника данных не найдено и не указан драйвер по умолчанию».
Может ли кто-нибудь подсказать, что мне здесь не хватает? Указание драйвера, похоже, не помогает, но, возможно, у меня неправильный драйвер или синтаксис.

Подробнее здесь: https://stackoverflow.com/questions/798 ... connect-or
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»