Подключите другого пользователя Windows в SQL Server Management Studio (2005 или более поздней версии)

333

Есть ли способ в SQL Server Management Studio 2005 (или более поздней версии) изменить пользователя проверки подлинности Windows (как это можно сделать в SQL Server 2000 и более ранних версиях)?

Это общее диалоговое окно свойств соединения (обратите внимание на серый UID / PWD при выборе Windows Auth):

диалог

К вашему сведению - один из обходных путей заключается в использовании, runasно я ищу решение, которое позволило бы мне работать с несколькими учетными записями Windows на нескольких серверах (и в нескольких доменах).

Мэтт П.
источник
2
Насколько я знаю, Run As ... это единственный способ добиться этого. Почему вы не можете использовать Запуск от имени ... и просто начать разные сеансы в студии управления для каждого пользователя?
DCNYAM
4
RunAs работает, только если вы находитесь в одном домене и / или лесу. Если вы консультант, вы никогда не находитесь в одном домене и / или лесу, так что это было бы неплохо.
Эрик
Я чувствую тебя, Эрик. Иногда я использую виртуальные машины с клиентами, чтобы виртуальная машина была частью клиентского домена / леса и позволяла мне работать немного более плавно, но если вы активно работаете с несколькими доменами, это может быть утомительно.
Эд Альторфер
6
Несколько доменов - это один вариант использования. Другой - это службы Windows, которые входят в систему под своей учетной записью службы, и разработчик, желающий проверить подключение SQL, разрешения и т. Д. Похоже, мне не повезло. , , по крайней мере, у нас есть руны.
Мэтт П.

Ответы:

418

Хотя невозможно подключиться к нескольким серверам в качестве разных пользователей в одном экземпляре SSMS, вам необходим следующий синтаксис RUNAS:

runas /netonly /user:domain\username program.exe

При использовании параметра «/ netonly» вы можете войти в систему с использованием удаленных учетных данных в домене, членом которого вы в данный момент не являетесь, даже если доверие не настроено. Он просто сообщает runas, что учетные данные будут использоваться для доступа к удаленным ресурсам - приложение взаимодействует с локальным компьютером как текущий вошедший в систему пользователь и взаимодействует с удаленными компьютерами как пользователь, чьи учетные данные вы указали.

Вам все равно придется запускать несколько экземпляров SSMS, но, по крайней мере, вы можете подключиться как разные пользователи Windows в каждом.


Например: runas /netonly /user:domain\username ssms.exe

SqlRyan
источник
28
Если вам нужен тот же домен, но другой пользователь, удалите ключ / netonly.
jimconstable
5
Особенность нетонли-коммутатора абсолютно золотая. Так много сценариев, что мне нужен был этот. Спасибо.
Живко Петев
7
+1 за самый удобный способ сделать это в настоящее время. По-прежнему неуместно, что MS не может просто сложить диалоговое окно входа в MSTSC / стиль удаленного рабочего стола в SSMS и настроить его для каждого соединения.
Пол Смит
7
Вот Это Да! netonly! Фантастика. Хотя это довольно забавно, но когда вы пытаетесь подключиться к удаленному серверу с аутентификацией Windows, он отображает вашего локального пользователя, а не пользователя netonly. Делает это похоже на магию, когда он соединяется ...
TTT
2
Приведенный ниже ответ от user175017 сработал для меня, кажется намного проще и разрешает подключения Windows к конкретному серверу за один сеанс SSMS. Вкратце, в Win 7 запустите «Диспетчер учетных данных» и просто добавьте учетные данные Windows для <имя_сервера>: 1433, где <имя_сервера> - это полностью квалифицированный компьютер SQL Server (например, MyServer.MyCompany.Com).
Дэвид Корн
161

Удерживайте shiftи щелкните правой кнопкой мыши значок изучения SQL Server Mangement. Вы можете запустить как другой пользователь учетной записи Windows.

Суреш
источник
31
К сожалению, это не работает, когда учетная запись находится в другом домене / сети - она ​​возвращает неверное имя пользователя / пароль. Приведенная выше команда работает независимо от того, находится ли учетная запись в другой сети.
Джерад Роуз
1
Это сработало для меня! В моем случае у меня есть две учетные записи в одном домене.
Татхагата
Работает в Windows 10.
wrkwrk
Работал для меня в другом домене.
Тахир Хасан
1
Как запустить от имени другого пользователя учетной записи Windows и от имени администратора ?
Kiquenet
116

Еще один способ, который я обнаружил, - это «Пуск»> «Панель управления»> «Сохраненные имена пользователей и пароли» (Администрирование> Диспетчер учетных данных в Windows 7) и добавить учетную запись домена, которую вы будете использовать с командой «runas». ,

Затем в SQL Management Studio 2005 просто выберите «Аутентификация Windows» и введите сервер, к которому вы хотите подключиться (хотя пользователь, которого вы видите серым, все еще является локальным пользователем) ... и это работает!

Не спрашивай меня почему! :)

Изменить: Обязательно укажите «: 1433» после имени сервера в диспетчере учетных данных, иначе он может не подключиться из-за недоверия домену.

dagronlund
источник
10
Честно говоря, этот ответ должен быть размечен. Решение runas не сработало для меня, и создало головную боль в том, что smss не любит запускаться в консоли, что и происходит, когда вы вызываете в smss. И даже когда это перестало происходить, оно все равно не сработало. Но менеджер учетных данных> Добавить учетные данные Windows работал. Введите имя сервера, ваш ДОМЕН \ имя пользователя и пароль. Точно так же, как он говорит, он все еще покажет локального пользователя, но все равно подключается.
Брайан Арсуага
16
Возможно, вам потребуется использовать sqlserver.domain.com:1433 в качестве сетевого адреса. См. Stackoverflow.com/questions/6944933
Грег Брей
7
Действительно, это сработало для меня, кажется намного проще и позволяет подключаться к конкретному серверу Windows в одном сеансе SSMS. Я просто запустил «Диспетчер учетных данных» и добавил учетные данные Windows для <имя_сервера>: 1433, где <имя_сервера> - это полностью квалифицированный компьютер SQL Server (например, MyServer.MyCompany.Com).
Дэвид Корн
1
runasМетод не работает для меня, но это сделало. Сначала я пытался без информации о порте в Credential Manager, но все равно не мог войти. Когда я добавил информацию о порте в Credential Manager, это работало как чудо. Спасибо тебе большое за это!
Рене
1
Это может быть самым элегантным решением. Работает в Windows 8.1 для меня, подключаясь к автономному экземпляру SQL 2012, который даже не является частью домена. <servername>: 1433
Тим Ленер,
10

Команда runas /netonly /user:domain\username program.exeработала только на меняWindows 10

  • сохранить его как командный файл
  • запустить его от имени администратора,

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

Рикардо Меркадо
источник
Это сработало и для меня, никаких доверительных отношений между доменами. Мне удалось запустить SSMS и подключиться к серверу SQL, используя учетную запись других доменов (хотя в пользовательском интерфейсе написано, что она будет использовать учетную запись локального домена.
Нил
10

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

Вместо этого в диалоговом окне подключения к серверу выберите «Аутентификация Windows», нажмите кнопку «Параметры», а затем на вкладке «Дополнительные параметры подключения» введите

user id=domain\user;password=password

SSMS не запомнит, но подключится к этой учетной записи.

Дейв
источник
Это работало для меня в SQL Server Management Studio 2017
natbob1
6

Немного магии PowerShell сделает свое дело:

cmdkey /add:"SERVER:1433" /user:"DOMAIN\USERNAME" /pass:"PASSWORD"

Затем просто выберите проверку подлинности Windows

maeneak
источник
1

Для Windows 10: перейдите к значку Sql Management Studio или ярлыку в меню: щелкните правой кнопкой мыши> выберите «Открыть местоположение файла».

введите описание изображения здесь

Удерживайте Shift и щелкните правой кнопкой мыши ярлык или файл ssms.exe, который находится в папке. Удержание смены даст вам дополнительную опцию «Запуск от имени другого пользователя»:

введите описание изображения здесь

Появится окно входа в систему, и вы сможете ввести учетные данные, под которыми вы хотите запустить сеанс.

cmartin
источник
0

Есть много мест, где кто-то может захотеть развернуть такой сценарий, но из-за того, как работает интегрированная аутентификация, это невозможно.

Как уже упоминалось, встроенная аутентификация использует специальный токен, который соответствует вашей личности Windows. Существуют методы кодирования, называемые «олицетворением» (вероятно, используемые командой «Запуск от имени ...»), которые позволяют эффективно выполнять действие как другой пользователь Windows, но на самом деле не существует способа произвольно действовать как другой пользователь (например, Linux) в приложениях Windows, кроме этого.

Если вам действительно нужно администрировать несколько серверов в нескольких доменах, вы можете рассмотреть один из следующих:

  1. Настройте доверие домена между доменами, чтобы ваша учетная запись имела доступ к компьютерам в доверенном домене.
  2. Сконфигурируйте пользователя SQL (используя смешанную аутентификацию) на всех серверах, которые необходимо администрировать, чтобы вы могли войти таким образом; очевидно, это может создать некоторые проблемы с безопасностью и создать кошмар обслуживания, если вам придется изменить все пароли в какой-то момент.

Надеюсь, это поможет!

Эд Альторфер
источник
не возможно, это неправильно ... вышеупомянутый runas / netonly / user: domain \ username program.exe работает просто отлично.
Крис Пирс
-3

Единственный способ достичь желаемого - открыть несколько экземпляров SSMS, щелкнув правой кнопкой мыши по ярлыку и используя функцию «Запуск от имени».

SQLChicken
источник
3
Единственный путь? Не за что.
Мишель де Рюйтер