Sql соединение?

Я использую SQLAPI ++ для подключения моей программы к базе данных.

Следующий код компилируется без ошибок. Однако он не подключается к базе данных. Я получаю сообщение об ошибке:

A network-related or instance-specific error occurred while establishing a connection
to
SQL Server.
The server was not found or was not accessible.
Verify that the instance name is correct and that SQL Server is configured to allow
remote connections.
(provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
ExecuteNonQuery requires an open and available Connection.
The connection's current state is closed.

Я проверил, включены ли удаленные подключения на моем сервере и что TCI / IP включен. Я также пытался добавить исключение порта для брандмауэра, но не смог даже отключить его. -И мой антивирус.

Поэтому я считаю, что это как-то связано с моим кодом. Может кто-нибудь найти что-то не так?

#include <iostream>
#include "SQLAPI\include\SQLAPI.h"#include <string>
#include <Windows.h>using namespace std;

int main(int argc, char* argv[])
{

SAConnection con;

try
{
con.Connect(

"BLAKE\\SQLEXPRESS@ERP",     // db *& server?!*
"sa",   // user
"blake",   // password
SA_SQLServer_Client);}
catch (SAException &x)
{
// SAConnection::Rollback()

try
{
// on error rollback changes
con.Rollback();
}
catch (SAException &)
{
}

cerr << (const char*)(x.ErrText()) << endl;

}return 0;
}

1

Решение

Во-первых, вы, вероятно, захотите отключить именованные каналы в качестве протокола и принудительно установить соединение только через TCP / IP.

После этого, так как вы указали имя экземпляра, вам нужно открыть два порта брандмауэра. Один для службы браузера SQL, который сообщает клиентам SQL, на каких экземплярах портов выполняется SQL, и один для самого SQL Server. Порт с именованными экземплярами по умолчанию является случайным (отсюда необходимость в службе браузера, которая прослушивает фиксированный порт), но вы можете изменить это на фиксированный порт.

Вы также должны убедиться, что служба браузера SQL работает в первую очередь.

Вы также можете вставить порт, который прослушивает SQL, в строку подключения для спецификации сервера, например, сервер \ экземпляр, порт. Это означает, что вам не нужно прямое подключение к службе браузера.

2

Другие решения

Это исключение выдается, когда ваша служба sqlServer остановлена ​​или когда ваш порт TCP изменен, поэтому проверьте его.

1

По вопросам рекламы [email protected]