Połącz różnych użytkowników systemu Windows w SQL Server Management Studio (2005 lub nowszy)

333

Czy w SQL Server Management Studio 2005 (lub nowszym) istnieje sposób na zmianę użytkownika Windows Authentication (tak jak w SQL Server 2000 i starszych)?

To jest ogólne okno dialogowe właściwości połączenia (zwróć uwagę na wyszarzony UID / PWD przy wyborze Windows Auth):

dialog

Do Twojej dyspozycji jest jedno obejście, runasale szukam rozwiązania, które pozwoli mi pracować z wieloma kontami Windows na wielu serwerach (i wielu domenach).

Matt P.
źródło
2
O ile mi wiadomo, Run As ... jest jedynym sposobem na osiągnięcie tego. Dlaczego nie możesz użyć opcji Uruchom jako ... i po prostu rozpocząć inną sesję studia zarządzania dla każdego użytkownika?
DCNYAM
4
RunAs działa tylko wtedy, gdy jesteś w tej samej domenie i / lub lesie. Jeśli jesteś konsultantem, nigdy nie jesteś w tej samej domenie i / lub lesie, więc byłaby to miła funkcja.
Eric
Czuję cię, Eric. Czasami używam maszyn wirtualnych z klientami, aby maszyna wirtualna mogła być częścią domeny / lasu klienta i pozwolić mi pracować trochę płynniej, ale jeśli aktywnie pracujesz z wieloma domenami, może to być uciążliwe.
Ed Altorfer,
6
Wiele domen to jeden przypadek użycia. Kolejne to usługi Windows, które logują się na swoim własnym koncie usługi i programista, który chce zweryfikować łączność SQL, uprawnienia itp. Brzmi jak brak szczęścia. . . przynajmniej mamy runy.
Matt P.

Odpowiedzi:

418

Chociaż nie ma sposobu na połączenie się z wieloma serwerami jako różnymi użytkownikami w jednym wystąpieniu SSMS, to czego szukasz, to następująca składnia RUNAS:

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

Korzystając z przełącznika „/ netonly”, możesz zalogować się przy użyciu zdalnych poświadczeń w domenie, do której obecnie nie należysz, nawet jeśli nie ma skonfigurowanego zaufania. Mówi tylko runom, że poświadczenia zostaną wykorzystane do uzyskania dostępu do zasobów zdalnych - aplikacja wchodzi w interakcję z komputerem lokalnym jako aktualnie zalogowany użytkownik i z komputerami zdalnymi jako użytkownik, którego dane uwierzytelniające podałeś.

Nadal będziesz musiał uruchomić wiele wystąpień SSMS, ale przynajmniej możesz połączyć się jako różni użytkownicy systemu Windows w każdym z nich.


Na przykład: runas /netonly /user:domain\username ssms.exe

SqlRyan
źródło
28
Jeśli chcesz mieć tę samą domenę, ale inny użytkownik, upuść przełącznik / netonly.
jimconstable
5
Rzecz w tym, że przełącznik sieciowy jest absolutnie złoty. Tak wiele scenariuszy, że potrzebowałem tego. Dzięki.
Jivko Petiov
7
+1 za najwygodniejszy obecnie sposób na zrobienie tego. Nadal nie ma wątpliwości, że MS nie może po prostu złożyć okna dialogowego logowania w stylu MSTSC / pulpitu zdalnego do SSMS i skonfigurować go dla każdego połączenia.
Paul Smith
7
Łał! wyłącznie! Fantastyczny. To trochę zabawne, że gdy jest uruchomione, kiedy próbujesz połączyć się ze zdalnym serwerem za pomocą Windows Auth, wyświetla lokalnego użytkownika, a nie zwykłego użytkownika. Sprawia, że ​​wygląda jak magia, kiedy się łączy ...
TTT
2
Poniższa odpowiedź od user175017 działała dla mnie, wydaje się znacznie łatwiejsza i pozwala na specyficzne dla serwera połączenia Windows w jednej sesji SSMS. W skrócie, w systemie Windows 7 uruchom „Menedżera poświadczeń” i po prostu dodaj poświadczenia systemu Windows dla <nazwa_serwera>: 1433, gdzie <nazwa_serwera> to maszyna SQL Server, w pełni kwalifikowana (jak MyServer.MyCompany.Com).
David Korn,
161

Przytrzymaj shifti kliknij prawym przyciskiem myszy ikonę programu SQL Server Mangement studion. Możesz uruchomić jako inny użytkownik konta Windows.

Suresh
źródło
31
Niestety nie działa to, gdy konto znajduje się w innej domenie / sieci - zwraca nieprawidłową nazwę użytkownika / hasło. Powyższe polecenie działa niezależnie od tego, czy konto jest w innej sieci.
Jerad Rose,
1
To zadziałało dla mnie! W moim przypadku mam dwa konta w tej samej domenie.
Tathagata,
Działa w systemie Windows 10.
wrkwrk
Pracował dla mnie w innej domenie.
Tahir Hassan
1
Jak uruchomić jako inny użytkownik konta Windows i jako administrator ?
Kiquenet,
116

Innym sposobem, który odkryłem, jest przejście do „Start”> „Panel sterowania”> „Przechowywane nazwy użytkowników i hasła” (Narzędzia administracyjne> Menedżer poświadczeń w Windows 7) i dodanie konta domeny, którego chcesz użyć z poleceniem „runas” .

Następnie w SQL Management Studio 2005, po prostu wybierz „Uwierzytelnianie systemu Windows” i wprowadź serwer, z którym chcesz się połączyć (nawet jeśli użytkownik, który widzisz, jest wyszarzony, nadal jest użytkownikiem lokalnym) ... i działa!

Nie pytaj mnie dlaczego! :)

Edycja: pamiętaj o dodaniu „: 1433” po nazwie serwera w Menedżerze poświadczeń, ponieważ może się nie połączyć z powodu braku zaufania do domeny.

dagronlund
źródło
10
Szczerze mówiąc, ta odpowiedź powinna zostać zaznaczona. Rozwiązanie runas nie działało dla mnie i spowodowało ból głowy, ponieważ smss nie lubi uruchamiać się w konsoli, co dzieje się, gdy wywołujesz w smss. I nawet gdy przestało się to dziać, nadal nie działało. Ale Menedżer poświadczeń> Dodaj poświadczenie systemu Windows zadziałało. Wprowadź nazwę serwera, DOMAIN \ nazwa użytkownika i hasło. Tak jak mówi, nadal pokaże lokalnego użytkownika, ale mimo to łączy się.
Brian Arsuaga
16
Może być konieczne użycie sqlserver.domain.com:1433 jako adresu sieciowego. Zobacz stackoverflow.com/questions/6944933
Greg Bray
7
Rzeczywiście, działało to dla mnie, wydaje się o wiele łatwiejsze i pozwala na połączenia z systemem Windows specyficzne dla serwera w jednej sesji SSMS. Właśnie uruchomiłem „Menedżera poświadczeń” i dodałem poświadczenia systemu Windows dla <nazwa_serwera>: 1433, gdzie <nazwa_serwera> to maszyna SQL Server, w pełni kwalifikowana (jak MyServer.MyCompany.Com).
David Korn,
1
Ta runasmetoda nie działała dla mnie, ale to zadziałało. Początkowo próbowałem bez informacji o porcie w Credential Manager, ale nadal nie mogłem się zalogować. Gdy dodałem informacje o porcie w Credential Manager, działało to jak urok. Dziękuję bardzo za to!
René,
1
To może być najbardziej eleganckie rozwiązanie. Działa w systemie Windows 8.1, łącząc się z niezależną instancją SQL 2012, która nie jest nawet częścią domeny. <nazwa_serwera>: 1433
Tim Lehner
10

runas /netonly /user:domain\username program.exePolecenie działało tylko dla mnie naWindows 10

  • zapisując go jako plik wsadowy
  • uruchamiając go jako administrator,

podczas uruchamiania partii poleceń jako zwykły użytkownik dostałem problem z błędnym hasłem, o którym wspominali niektórzy użytkownicy w poprzednich komentarzach.

Ricardo Mercado
źródło
To też działało dla mnie, brak relacji zaufania między domenami. Byłem w stanie uruchomić SSMS i połączyć się z serwerem SQL przy użyciu konta innych domen (nawet jeśli w interfejsie użytkownika jest napisane, że będzie korzystało z lokalnego konta domeny.
Neil
10

Żadna z tych odpowiedzi nie spełniła moich oczekiwań: zaloguj się na zdalnym serwerze przy użyciu innego konta domeny niż byłem zalogowany na moim komputerze lokalnym, a jest to domena klienta w sieci VPN. Nie chcę być w ich domenie!

Zamiast tego w oknie dialogowym połączenia z serwerem wybierz „Uwierzytelnianie systemu Windows”, kliknij przycisk Opcje, a następnie na karcie Dodatkowe parametry połączenia wprowadź

user id=domain\user;password=password

SSMS nie zapamięta, ale połączy się z tym kontem.

Dave
źródło
To działało dla mnie w SQL Server Management Studio 2017
natbob1
6

Trochę magii PowerShell zrobi to samo:

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

Następnie wybierz uwierzytelnianie systemu Windows

maeneak
źródło
1

W systemie Windows 10: Przejdź do ikony Sql Management Studio lub skrótu w menu: Kliknij prawym przyciskiem myszy> Wybierz lokalizację otwartego pliku

wprowadź opis zdjęcia tutaj

Przytrzymaj Shift i kliknij prawym przyciskiem myszy plik skrótu lub ssms.exe znajdujący się w folderze. Przytrzymanie zmiany daje dodatkową opcję „Uruchom jako inny użytkownik”:

wprowadź opis zdjęcia tutaj

Spowoduje to wyświetlenie okna logowania i możesz wpisać dane uwierzytelniające, na których chcesz uruchomić sesję.

cmartin
źródło
0

Istnieje wiele miejsc, w których ktoś może chcieć wdrożyć tego rodzaju scenariusz, ale ze względu na sposób działania zintegrowanego uwierzytelniania nie jest to możliwe.

Jak wspomniano w gbn, zintegrowane uwierzytelnianie wykorzystuje specjalny token, który odpowiada twojej tożsamości Windows. Istnieją praktyki kodowania zwane „podszywaniem się” (prawdopodobnie używane przez polecenie Uruchom jako ...), które pozwalają skutecznie wykonywać czynności jako inny użytkownik systemu Windows, ale tak naprawdę nie ma sposobu na arbitralne działanie jako inny użytkownik (à la Linux) w aplikacjach Windows poza tym.

Jeśli naprawdę potrzebujesz administrować wieloma serwerami w kilku domenach, możesz rozważyć jedną z następujących czynności:

  1. Skonfiguruj zaufanie domeny między domenami, aby Twoje konto mogło uzyskiwać dostęp do komputerów w domenie ufającej
  2. Skonfiguruj użytkownika SQL (przy użyciu uwierzytelniania mieszanego) na wszystkich serwerach, którymi musisz administrować, aby móc się w ten sposób zalogować; oczywiście może to spowodować pewne problemy z bezpieczeństwem i stworzyć koszmar konserwacji, jeśli w pewnym momencie będziesz musiał zmienić wszystkie hasła.

Mam nadzieję, że to pomaga!

Ed Altorfer
źródło
nie jest możliwe jest źle ... powyższe runas / netonly / user: domain \ username program.exe działa dobrze.
Chris Pierce,
-3

Jedynym sposobem na osiągnięcie tego, co chcesz, jest otwarcie kilku wystąpień SSMS poprzez kliknięcie skrótu prawym przyciskiem myszy i użycie funkcji „Uruchom jako”.

SQLChicken
źródło
3
Jedyny sposób? Ani trochę.
Michel de Ruiter,