.NET C # - не удается получить доступ к базе данных SQL Server за удаленной машиной

1

У меня есть учетные данные для доступа к серверу в локальной сети - сети, которая находится за прокси. И на этом сервере работает база данных SQL Server 7.0. База данных настроена на использование проверки подлинности Windows для входа в систему.

Я использую подключение к удаленному рабочему столу для доступа к серверу, ввода учетных данных, а когда я открываю Query Analyzer, выбирайте журнал с проверкой подлинности Windows, а затем я запрашиваю DB.

Но теперь мне нужна программа.NET С# для удаленного доступа к базе данных с моей машины. Я проверил соединение TCP/IP на порте 1433 и он откроется. Однако со следующим кодом я не могу открыть соединение с удаленной базой данных.

SqlConnectionStringBuilder connStringBuilder = new SqlConnectionStringBuilder();
connStringBuilder["Trusted_Connection"] = false;
connStringBuilder["user id"] = "<domain>\\<user>";
connStringBuilder["password"] = "<pass>";
connStringBuilder["Database"] = "<db>";
connStringBuilder["Server"] = "\\\\<servername>\\MSSQLServer,1433";
connStringBuilder["Connection Timeout"] = "30";

SqlConnection myConn = new SqlConnection(connStringBuilder.ConnectionString);
try
{
    myConn.Open();
    // success
    Console.WriteLine("Connection Opened");
}
catch (Exception e)
{
    // failed
    Console.WriteLine("Connection Failed");
    Console.WriteLine(e.ToString());
}

Поле servername - это тот же текст, который я установил в приложении "Подключение к удаленному рабочему столу", так же как и с полями идентификатора пользователя и пароля после установления соединения (обычный вход в систему с Windows Server 2000).

Кроме того, с SSMS (SQL Server Management Studio) я не могу подключиться к экземпляру, однако с помощью проводника Windows я могу просматривать серверные диски с \\servername\e $ (например).

Заранее спасибо!

ИЗМЕНИТЬ 1

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

Сообщение об ошибке из исключения e следующее: погода с true или false в Trusted Connection:

System.Data.SqlClient.SqlException: 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: SQL Network Interface, error: 25 -
Connection string is not valid)
at .... etc

EDIT 2

Шаги, которые я предпринимаю для входа в систему с использованием некоторых учетных данных, следующие:

Сначала я ввел имя сервера, как в "MACHINE33" (без кавычек)

Подключение удаленного рабочего стола

И затем я поместил учетные данные\как в "me\johndoe"

Учетные данные для доступа к удаленной машине

В итоге доступ к базе данных осуществляется с помощью проверки подлинности Windows, используемой для доступа к машине.

  • 0
    Вы не можете подключить экземпляр к SQL Server Management Studio, поэтому вам следует сначала проверить настройки на удаленном SQL Server.
  • 0
    Вы на 100% уверены, что на экземпляре Sql Server включен протокол TCP / IP? Проверьте это через Sql Server Configuration Manager на самом сервере.
Показать ещё 16 комментариев
Теги:
sql-server

2 ответа

0
Лучший ответ

Сегодня утром я спросил системного администратора, и он сказал мне, что доступ к базе данных извне невозможен, даже если на порту 1433 установлена конфигурация TCP/IP (в разделе "Сетевая утилита сервера для SQL Server 7.0"). Причина в том, что вся сеть находится за прокси-сервером, который проверяет все входящие запросы и предотвращает не входящие из указанных инструментов (например, подключение к удаленному рабочему столу).

Поскольку я хочу, чтобы перенести некоторые поля из структуры старой базы данных в новую, используемую новой системой, решение:

Доступ к удаленному компьютеру, создание резервной копии базы данных, доступ к файлам путем сопоставления сетевого диска, копирование файлов резервных копий на ваш компьютер, создание локальной базы данных и восстановление резервной копии в новой локальной базе данных.

Это не самый изящный способ, но это единственный способ. И как совет, сначала спросите системного администратора, если вы находитесь за сетью, полной доверенных лиц, потому что это может сэкономить вам много головных болей.

Благодарю вас и извините за всю беду.

0

Если вы используете интегрированную проверку подлинности, значение для доверенного соединения должно быть либо "true", либо "sspi", а не false. Если "true", любой идентификатор пользователя и пароль, которые вы укажете в строке соединения, будут проигнорированы, поэтому его также нельзя будет установить, если вы намереваетесь использовать учетные данные для текущего пользователя (или пользователя AppPool, если веб-приложение, или пользователь сервиса, если служба Windows и т.д.).

Вы используете именованный экземпляр SQL Server? Если это так, используется динамический порт, а не 1433. Вам нужно либо настроить SQL Server на использование определенного порта для именованного экземпляра, либо не указывать порт.

"Ошибка входа в систему для пользователя" при указании порта по умолчанию

  • 0
    Да, это верно для атрибута Trusted Connection. Сначала я попробовал с «true» и «sspi», но результаты были одинаковыми. Я изменил на «ложь», потому что я начал добавлять учетные данные для доступа к удаленной машине.
  • 0
    Точно так же, как к сведению, вы не можете указывать учетные данные домена, если вы используете «false» для параметра доверенного соединения, только учетные данные SQL Server. Если вы хотите указать учетные данные домена, отличные от того, кто в данный момент вошел в систему, вам нужно будет использовать 'sspi'. Или, возможно, вы пытались использовать учетные данные SQL Server? В приведенном вами примере написано «домен \ пользователь», почему у меня сложилось впечатление, что вы пытаетесь указать пользователя домена.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню