System.Data.SqlClient.SqlException (0x80131904): При установлении соединения с
SQL Server произошла ошибка, связанная с сетью или
экземпляром. Сервер не найден или недоступен. Убедитесь, что
имя экземпляра правильное и что SQL Server настроен
на разрешение удаленных подключений. (поставщик: поставщик именованных каналов, ошибка:
40 — не удалось открыть соединение с SQL Server) ---> Syste
m.ComponentModel.Win32Exception (0x80004005): доступ запрещен в
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdent
ityidentity, SqlConnectionString ConnectionOptions, SqlCredential
учетные данные, ObjectProviderInfo, String newPassword, SecureString
newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString
userConnectionOptions, SessionData reconnectSessionData,
пул DbConnectionPool, String accessToken, Boolean applyTra
nsientFaultHandling, SqlAuthenticationProviderManager
sqlAuthProviderManager) at
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(параметры DbConnectionOp
, DbConnectionPoolKeypoolKey, Object
poolGroupProviderInfo, пул DbConn ectionPool, DbConnection
owningConnection, DbConnectionOptions userOptions)
at
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConn
ectionPoolpool, DbConnection owningObject, DbConnectionOptions
options, DbConne ctionPoolKeypoolKey, DbConnectionOptions
userOptions) в
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection
, владеющий объектом, DbConnectionOptions userOptions, DbConnectionInternal
oldConnection) в
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection
o wningObject, DbConnectionOptions userOptions, DbConnectionInternal
oldConnection ) at
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection
ow ningObject, UInt32 waitForMultipleObjectsTimeout, Boolean
allowCreate, Boolean o nlyOneCheckConnection, DbConnectionOptions
userOptions, DbConnectionInternal& соединение) в
System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection
owningObject, TaskCompletionSource
Код: Выделить всё
1 retry, DbConnectionOptions
userOptions, DbCon nectionInternal& connection) at
System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection
owningConnection, TaskCompletionSourceuserOptions, DbConnectionInternal oldConnection,
DbConnectionInternal& Connection) at
System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(Db
Connection externalConnection, DbConnectionFactory ConnectionFactory,
TaskCompletio nSource
Код: Выделить всё
1 retry, DbConnectionOptions userOptions) at
System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection
outerConnection, DbConnectionFactory connectionFactory,
TaskCompletionSourceSystem.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource
Код: Выделить всё
1
re try) at
System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSourceповтор) в System.Data.SqlClient.SqlConnection.Open() в
YetAnotherSmallConsoleApp.Program.Main(String[] args) в
C:\Repository\Pro
jects\YetAnotherSmallConsoleApp\YetAnotherSmallConsoleApp\Program.cs:line
28 ClientConnectionId:00000000-0000-0000-0000-000000000000
Вот моя программа:
Код: Выделить всё
using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using System.IO;
namespace YetAnotherSmallConsoleApp
{
class Program
{
static void Main(string[] args)
{
SqlConnection con = new SqlConnection("Server = IP_ADDRESS; User Id = USER_NAME; Password = PASSWORD;");
string[] arrExcludeLines = File.ReadAllLines(FILEPATH_TO_QUERY);
string strExcludeQuery = default(string);
foreach (string line in arrExcludeLines)
{
strExcludeQuery = strExcludeQuery + line + Environment.NewLine;
}
try
{
using (con)
{
con.Open();
SqlCommand cmdExclude = new SqlCommand(strExcludeQuery, con);
SqlDataReader dr1 = cmdExclude.ExecuteReader();
while (dr1.HasRows)
{
while (dr1.Read())
{
Console.WriteLine(dr1[0].ToString());
Console.ReadLine();
}
dr1.NextResult();
}
}
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
Console.ReadLine();
}
}
}
}
- И сервер A, и сервер B находятся в одной сети, и эта сеть
не является той же самой сетью, в которой находится моя база данных MS SQL Server 2016. - На сервере A установлен экземпляр MS SQL Server 2012, на сервере B
не установлен MS SQL Server. - Даже хотя моя программа работает правильно на сервере A, я не могу проверить IP-адрес
сервера базы данных MS SQL Server 2016 ни с сервера A, ни с сервера B. - На сервере A или сервере B нет брандмауэров.
- И на сервере A, и на сервере B работает MS Server 2012 R2.
РЕДАКТИРОВАТЬ: когда я пытаюсь подключиться к базе данных MS SQL Server 2016 с сервера B, используя те же учетные данные, которые я использую для подключения к базе данных с сервера A с помощью SSMS, я получаю следующую ошибку:

РЕДАКТИРОВАНИЕ: еще одна вещь: я пытался запустить программу с именем компьютера для сервера базы данных MS SQL Server 2016 в строке подключения, а также с фактическим IP-адресом сервера базы данных в строке подключения. Оба способа приводят к успешному запуску программы на сервере A, но я получаю ошибку на сервере B.>
Подробнее здесь: https://stackoverflow.com/questions/535 ... 0x80131904
Мобильная версия