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;
}
2 ответа
Во-первых, вы, вероятно, захотите отключить именованные каналы в качестве протокола и установить подключение только по протоколу TCP/IP.
После этого, так как вы указали имя экземпляра, вам нужно открыть два порта брандмауэра. Один для службы обозревателя SQL, который сообщает клиентам SQL, на каких экземплярах портов выполняется SQL, и один для самого SQL Server. Порт с именованными экземплярами по умолчанию является случайным (отсюда необходимость в службе браузера, которая прослушивает фиксированный порт), но вы можете изменить это на фиксированный порт.
Вы также должны убедиться, что служба браузера SQL работает в первую очередь.
Вы также можете вставить порт, который прослушивает SQL, в строку подключения для спецификации сервера, например, server\instance,port. Это означает, что вам не нужно прямое подключение к службе браузера.
Это исключение выдается при остановке службы sqlServer или при изменении TCP-порта, поэтому проверьте его.