Kết nối người dùng Windows khác nhau trong SQL Server Management Studio (2005 trở lên)


333

Có cách nào trong SQL Server Management Studio 2005 (hoặc mới hơn) để thay đổi người dùng Xác thực Windows (như bạn có thể trong SQL Server 2000 trở lên) không?

Đây là hộp thoại thuộc tính kết nối chung (lưu ý UID / PWD màu xám khi chọn Windows Auth):

hộp thoại

FYI - Một cách giải quyết là sử dụng runasnhưng tôi đang tìm một giải pháp cho phép tôi làm việc với nhiều tài khoản Windows trên nhiều máy chủ (và trên nhiều miền).


2
Theo như tôi biết, Run As ... là cách duy nhất để đạt được điều này. Tại sao bạn không thể sử dụng Run As ... và chỉ bắt đầu một phiên studio quản lý khác nhau cho mỗi người dùng?
DCNYAM

4
RunAs chỉ hoạt động nếu bạn ở cùng miền và / hoặc rừng. Nếu bạn là nhà tư vấn, bạn sẽ không bao giờ ở cùng một miền và / hoặc rừng, vì vậy đây sẽ là một tính năng hay cần có.
Eric

Tôi có thể cảm thấy bạn, Eric. Đôi khi tôi sử dụng máy ảo với máy khách để máy ảo có thể là một phần của miền / rừng của máy khách và cho phép tôi làm việc liền mạch hơn một chút, nhưng nếu bạn chủ động làm việc với nhiều tên miền, điều này có thể rất tẻ nhạt.
Ed Altorfer

6
Nhiều tên miền là một trường hợp sử dụng. Một dịch vụ khác là Windows Services đăng nhập bằng tài khoản dịch vụ của riêng họ và nhà phát triển muốn xác minh kết nối SQL, quyền, v.v. Nghe có vẻ như tôi không gặp may. . . ít nhất chúng ta có runas.
Matt P.

Câu trả lời:


418

Mặc dù không có cách nào để kết nối với nhiều máy chủ như những người dùng khác nhau trong một phiên bản SSMS duy nhất, nhưng điều bạn đang tìm kiếm là cú pháp RUNAS sau:

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

Khi bạn sử dụng công tắc "/ netonly", bạn có thể đăng nhập bằng thông tin đăng nhập từ xa trên tên miền mà bạn hiện không phải là thành viên, ngay cả khi không có sự tin cậy nào được thiết lập. Nó chỉ thông báo cho runas rằng thông tin đăng nhập sẽ được sử dụng để truy cập tài nguyên từ xa - ứng dụng tương tác với máy tính cục bộ với tư cách là người dùng đăng nhập hiện tại và tương tác với các máy tính từ xa như người dùng có thông tin đăng nhập.

Bạn vẫn phải chạy nhiều phiên bản SSMS, nhưng ít nhất bạn có thể kết nối với tư cách người dùng windows khác nhau trong mỗi phiên bản.


Ví dụ: runas /netonly /user:domain\username ssms.exe


28
Nếu bạn muốn cùng một tên miền nhưng người dùng khác nhau hãy bỏ công tắc / netonly.
jimcon ổn định

5
Điều về chuyển đổi netonly là hoàn toàn vàng. Rất nhiều kịch bản mà tôi cần cái này. Cảm ơn.
Jivko Petagu

7
+1 cho cách thuận tiện nhất để làm điều này hiện nay. Vẫn còn khập khiễng rằng MS không thể gấp hộp thoại đăng nhập kiểu máy tính từ xa MSTSC / máy tính để bàn vào SSMS và định cấu hình cho mỗi kết nối.
Paul Smith

7
Ồ netonly! Tuyệt diệu. Mặc dù thật là buồn cười khi một khi nó chạy, khi bạn cố gắng kết nối với một máy chủ từ xa bằng windows auth, nó sẽ hiển thị người dùng cục bộ của bạn chứ không phải người dùng netonly. Làm cho nó trông giống như phép thuật khi kết nối ...
TTT

2
Câu trả lời dưới đây từ user175017 đối với tôi, có vẻ dễ hơn nhiều và cho phép các kết nối cửa sổ dành riêng cho máy chủ trong một phiên SSMS. Tóm lại, trên Win 7, hãy chạy "Trình quản lý thông tin xác thực" và chỉ cần thêm Thông tin xác thực Windows cho <servername>: 1433, trong đó <servername> là máy SQL Server, đủ điều kiện (như MyServer.MyCompany.Com).
David Korn

161

Giữ shiftvà nhấp chuột phải vào biểu tượng quản lý SQL Server Mangement. Bạn có thể chạy như người dùng tài khoản windows khác.


31
Thật không may, điều này không hoạt động khi tài khoản nằm trên một tên miền / mạng khác - nó trả về tên người dùng / mật khẩu không hợp lệ. Lệnh trên hoạt động bất kể tài khoản nằm trên một mạng khác.
Jerad Rose

1
Điều này làm việc cho tôi! Trong trường hợp của tôi, tôi có hai tài khoản dưới cùng một tên miền.
Như Lai

Hoạt động trong Windows 10.
wrkwrk

Làm việc cho tôi trên một lĩnh vực khác nhau.
Tahir Hassan

1
Làm thế nào để chạy như người dùng tài khoản windows khác và là quản trị viên ?
Kiquenet

116

Một cách khác mà tôi phát hiện ra là vào "Bắt đầu"> "Bảng điều khiển"> "Tên người dùng và mật khẩu được lưu trữ" (Công cụ quản trị> Trình quản lý xác thực trong Windows 7) và thêm tài khoản miền mà bạn sẽ sử dụng bằng lệnh "runas" .

Sau đó, trong SQL Management Studio 2005, chỉ cần chọn "Xác thực Windows" và nhập máy chủ bạn muốn kết nối (mặc dù người dùng mà bạn có thể thấy màu xám vẫn là người dùng cục bộ) ... và nó hoạt động!

Đừng hỏi tôi tại sao! :)

Chỉnh sửa: Đảm bảo bao gồm ": 1433" sau tên máy chủ trong Trình quản lý thông tin xác thực hoặc nó có thể không kết nối do không tin tưởng tên miền.


10
Thành thật mà nói, câu trả lời này nên được đánh dấu lên. Giải pháp runas không hiệu quả với tôi và đã gây đau đầu trong đó smss không muốn bắt đầu trong bảng điều khiển, đó là điều xảy ra khi bạn gọi smss. Và ngay cả khi điều đó đã ngừng xảy ra, nó vẫn không hoạt động. Nhưng Trình quản lý xác thực> Thêm thông tin xác thực windows. Nhập tên máy chủ và tên người dùng DOMAIN \ của bạn và mật khẩu. Như anh ấy nói, nó vẫn sẽ HIỂN THỊ người dùng cục bộ, nhưng dù sao nó cũng kết nối.
Brian Arsuaga

16
Bạn có thể cần sử dụng sqlserver.domain.com:1433 làm địa chỉ mạng. Xem stackoverflow.com/questions/6944933
Greg Bray

7
Quả thực điều này làm việc với tôi, có vẻ dễ dàng hơn nhiều và cho phép các kết nối cửa sổ dành riêng cho máy chủ trong một phiên SSMS. Tôi vừa mới chạy "Trình quản lý xác thực" và đã thêm Thông tin xác thực Windows cho <servername>: 1433, trong đó <servername> là máy SQL Server, đủ điều kiện (như MyServer.MyCompany.Com).
David Korn

1
Các runasphương pháp không làm việc cho tôi, nhưng điều này đã làm. Ban đầu tôi đã thử mà không có thông tin cổng trong Trình quản lý thông tin xác thực, nhưng tôi vẫn không thể đăng nhập. Khi tôi thêm thông tin cổng vào Trình quản lý xác thực, nó hoạt động như một cơ duyên. Cám ơn bạn rất nhiều về điều này.
René

1
Đây có thể là giải pháp thanh lịch nhất. Hoạt động trong Windows 8.1 đối với tôi khi kết nối với phiên bản độc lập SQL 2012 thậm chí không phải là một phần của miền. <tên máy chủ>: 1433
Tim Lehner

10

Các runas /netonly /user:domain\username program.exelệnh chỉ làm việc cho tôi trênWindows 10

  • lưu nó dưới dạng tệp bó
  • điều hành nó như một quản trị viên,

Khi chạy lô lệnh như người dùng thông thường, tôi đã gặp sự cố mật khẩu sai được đề cập bởi một số người dùng trên các nhận xét trước đó.


Điều này làm việc cho tôi quá, không có mối quan hệ tin cậy giữa các tên miền. Tôi đã có thể khởi động SSMS và kết nối với máy chủ SQL bằng tài khoản tên miền khác (mặc dù trong UI nó nói nó sẽ sử dụng tài khoản miền cục bộ.
Neil

10

Không có câu trả lời nào trong số này làm được điều tôi cần: Đăng nhập vào máy chủ từ xa bằng tài khoản miền khác với tài khoản tôi đã đăng nhập trên máy cục bộ của mình và đó là tên miền của khách hàng trên vpn. Tôi không muốn ở trên miền của họ!

Thay vào đó, trên hộp thoại kết nối với máy chủ, chọn "Xác thực Windows", nhấp vào nút Tùy chọn, rồi trên tab Tham số kết nối bổ sung, nhập

user id=domain\user;password=password

SSMS sẽ không nhớ, nhưng nó sẽ kết nối với tài khoản đó.


Điều này làm việc cho tôi trong SQL Server Management Studio 2017
natbob1

6

Một chút phép thuật sức mạnh sẽ thực hiện mánh khóe:

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

Sau đó, chỉ cần chọn xác thực windows


Đây là đầu mối cho tôi, cảm ơn!
David Cumps

1

Đối với Windows 10: Chuyển đến Biểu tượng Sql Management Studio hoặc Short Cut trong menu: Nhấp chuột phải> Chọn Mở vị trí tệp

nhập mô tả hình ảnh ở đây

Giữ phím Shift và phải Nhấp vào phím tắt hoặc tệp ssms.exe có trong thư mục. Giữ ca sẽ cung cấp cho bạn một tùy chọn bổ sung "Chạy như người dùng khác":

nhập mô tả hình ảnh ở đây

Điều này sẽ bật lên một hộp đăng nhập và bạn có thể nhập thông tin đăng nhập mà bạn muốn phiên của bạn chạy theo.


Mẹo tuyệt vời, cảm ơn! Nó đã giải quyết vấn đề của tôi;)
Hallaghan

0

Có nhiều nơi mà ai đó có thể muốn triển khai loại kịch bản này, nhưng do cách thức xác thực tích hợp hoạt động, điều đó là không thể.

Như gbn đã đề cập, xác thực tích hợp sử dụng mã thông báo đặc biệt tương ứng với danh tính Windows của bạn. Có các thực hành mã hóa được gọi là "mạo danh" (có thể được sử dụng bởi lệnh Run As ...) cho phép bạn thực hiện hiệu quả một hoạt động như một người dùng Windows khác, nhưng thực sự không có cách nào để tự ý hành động như một người dùng khác (à la Linux) trong các ứng dụng Windows ngoài điều đó.

Nếu bạn thực sự cần quản trị nhiều máy chủ trên nhiều tên miền, bạn có thể xem xét một trong những điều sau đây:

  1. Thiết lập Tin cậy miền giữa các miền của bạn để tài khoản của bạn có thể truy cập vào các máy tính trong miền tin cậy
  2. Định cấu hình người dùng SQL (sử dụng xác thực hỗn hợp) trên tất cả các máy chủ bạn cần quản trị để bạn có thể đăng nhập theo cách đó; rõ ràng, điều này có thể giới thiệu một số vấn đề bảo mật và tạo ra một cơn ác mộng bảo trì nếu bạn phải thay đổi tất cả các mật khẩu tại một số điểm.

Hy vọng điều này sẽ giúp!


không thể sai được ... các runas / netonly / user trên: domain \ username program.exe hoạt động tốt.
Chris Pierce

-3

Cách duy nhất để đạt được những gì bạn muốn là mở một số phiên bản SSMS bằng cách nhấp chuột phải vào phím tắt và sử dụng tính năng 'Run-as'.


3
Cách duy nhất? Không có gì.
Michel de Ruiter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.