Доступ к SQL Server 2005 от недоменной машины с помощью аутентификации Windows

У меня есть домен Windows, в котором машина выполняет SQL Server 2005 и который настроен для поддержки только аутентификации Windows. Я хотел бы выполнить клиентское приложение C# на машине в той же сети, но который НЕ находится на домене, и получите доступ к базе данных по экземпляру SQL Server 2005 года.

Я думал, что это будет простой вопрос выполнения чего-то вроде этого:

string connectionString = "Data Source=server;Initial Catalog=database;User Id=domain\user;Password=password";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();

Однако это перестало работать: клиентская ошибка:

Система. Данные. SqlClient. SqlException: Вход в систему, отказавший для пользователя 'domain\user' и ошибка серверной стороны: Ошибка 18456, Серьезность 14, состояние 5

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

В целом я знаю, что это возможный соединиться с экземпляром SQL Server 2005 года от недоменной машины (например, я работаю с основанным на Linux приложением, которое счастливо делает это), но я, кажется, не могу разработать, как сделать это от машины Windows.

5
задан user304582 30 September 2013 в 06:30
поделиться

4 ответа

Можно создать локального пользователя на каждой машине с тем же именем пользователя и паролем. После создания этих пользователей предоставьте пользователю на машине SQL-сервера доступ к SQL-серверу на на другом компьютере ваше приложение должно работать от имени вновь созданного пользователя, если это веб-приложение, просто измените настройки пула приложений.

1
ответ дан 14 December 2019 в 01:03
поделиться

(Ответ Мартина Смита) Я все время использую RUNAS / NETONLY для запуска SSMS и BI dev studio и Visual Studio IDE. и другие сторонние приложения против сервера в домене, в котором мы не аутентифицируемся. Я не уверен, почему вы не можете этого сделать - у вас должна быть учетная запись в этом домене, которая работает с SQL Server, если вы используете интегрированную безопасность.

Кроме того, я модифицировал одну из моих основных программ на C #, чтобы использовать CreateProcessWithLogonW с LOGON_NETCREDENTIALS_ONLY ( Как встроить функциональность RUNAS / NETONLY в программу (C # /. NET / WinForms)? ), чтобы она отображала запрос для имени пользователя и пароля, а затем перезапустится.

Используя тот же API, я также сделал версию RUNAS / NETONLY, которая будет принимать пароль в командной строке, поскольку RUNAS НЕ разрешает вводить пароль в командной строке. Очевидно, что это неотъемлемая угроза безопасности, и я не использую ее часто.

Для полноты картины есть еще одно замечательное расширение оболочки: http://technet.microsoft.com/en-us/sysinternals/cc300361.aspx - обычное расширение Run As Shell не у меня нет возможности делать эквивалент / NETONLY.

3
ответ дан 14 December 2019 в 01:03
поделиться

Пробовали ли вы подключиться с именем машины\UserName? Я также полагаю, что такой пользователь должен быть создан в базе данных SQL - правильно?

0
ответ дан 14 December 2019 в 01:03
поделиться

В Management Studio при подключении к серверу в другом домене через Windows Authentication необходимо использовать "runas" Facility при запуске приложения.

 runas /user:OTHERDOMAIN\OTHERUSERNAME  /netonly 
"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe"

Может быть, вы могли бы попробовать аналогичную вещь при запуске вашего приложения?

5
ответ дан 14 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: