Hubungkan Pengguna Windows yang berbeda di SQL Server Management Studio (2005 atau lebih baru)

333

Apakah ada cara di SQL Server Management Studio 2005 (atau lebih baru) untuk mengubah pengguna Windows Authentication (seperti yang Anda bisa dalam SQL Server 2000 dan yang lebih lama)?

Ini adalah dialog properti koneksi umum (perhatikan UID / PWD yang diklik saat memilih Windows Auth):

dialog

FYI - Satu solusi adalah menggunakan runastetapi saya sedang mencari solusi yang akan memungkinkan saya untuk bekerja dengan beberapa akun Windows di beberapa server (dan lintas beberapa domain).

Matt P.
sumber
2
Sejauh yang saya tahu, Run As ... adalah satu-satunya cara untuk mencapai ini. Mengapa Anda tidak dapat menggunakan Run As ... dan baru saja memulai sesi studio manajemen yang berbeda untuk setiap pengguna?
DCNYAM
4
RunA hanya berfungsi jika Anda berada di domain dan / atau hutan yang sama. Jika Anda seorang konsultan, Anda tidak pernah berada di domain dan / atau hutan yang sama, jadi ini fitur yang bagus untuk dimiliki.
Eric
Aku bisa merasakanmu, Eric. Terkadang saya menggunakan VM dengan klien sehingga mesin virtual dapat menjadi bagian dari domain / hutan klien dan memungkinkan saya untuk bekerja sedikit lebih lancar, tetapi jika Anda secara aktif bekerja dengan banyak domain, ini bisa membosankan.
Ed Altorfer
6
Banyak Domain adalah satu kasus penggunaan. Lain adalah Layanan Windows yang masuk dengan akun layanan mereka sendiri dan pengembang yang ingin memverifikasi konektivitas SQL, izin, dll. Kedengarannya seperti saya keluar dari keberuntungan. . . setidaknya kita memiliki runa.
Matt P.

Jawaban:

418

Meskipun tidak ada cara untuk terhubung ke beberapa server sebagai pengguna yang berbeda dalam satu instance SSMS, yang Anda cari adalah sintaks RUNAS berikut:

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

Saat Anda menggunakan sakelar "/ netonly", Anda dapat masuk menggunakan kredensial jarak jauh pada domain yang saat ini bukan anggota Anda, bahkan jika tidak ada kepercayaan yang disetel. Ini hanya memberitahu runas bahwa kredensial akan digunakan untuk mengakses sumber daya jarak jauh - aplikasi berinteraksi dengan komputer lokal sebagai pengguna yang saat ini masuk, dan berinteraksi dengan komputer jarak jauh sebagai pengguna yang kredensial yang Anda berikan.

Anda masih harus menjalankan beberapa instance SSMS, tetapi setidaknya Anda dapat terhubung sebagai pengguna windows yang berbeda di masing-masing.


Sebagai contoh: runas /netonly /user:domain\username ssms.exe

SqlRyan
sumber
28
Jika Anda ingin domain yang sama tetapi pengguna yang berbeda drop / netonly switch.
jimconstable
5
Hal tentang saklar netonly benar-benar emas. Begitu banyak skenario yang saya butuhkan ini. Terima kasih.
Jivko Petiov
7
+1 untuk cara paling nyaman melakukan ini saat ini. Itu masih di luar batas bahwa MS tidak bisa hanya melipat dialog login gaya MSTSC / remote desktop ke SSMS dan mengkonfigurasinya per-koneksi.
Paul Smith
7
Wow! netonly! Fantastis. Agak lucu bahwa setelah dijalankan, ketika Anda mencoba untuk terhubung ke server jauh dengan windows auth, itu menampilkan pengguna lokal Anda, bukan pengguna netonly. Membuatnya tampak seperti sulap ketika menghubungkan ...
TTT
2
Jawaban di bawah ini dari user175017 bekerja untuk saya, tampaknya jauh lebih mudah, dan memungkinkan koneksi windows khusus server dalam satu sesi SSMS. Secara singkat, pada Win 7, jalankan "Credential Manager", dan tambahkan saja Windows Credentials untuk <servername>: 1433, di mana <servername> adalah mesin SQL Server, sepenuhnya memenuhi syarat (seperti MyServer.MyCompany.Com).
David Korn
161

Tahan shiftdan klik kanan pada ikon studion SQL Server Mangement. Anda dapat Jalankan sebagai pengguna akun windows lainnya.

Suresh
sumber
31
Sayangnya, ini tidak berfungsi ketika akun berada di domain / jaringan lain - ini mengembalikan nama pengguna / kata sandi yang tidak valid. Perintah di atas berfungsi terlepas dari akun berada di jaringan lain.
Jerad Rose
1
Ini berhasil untuk saya! Dalam kasus saya, saya memiliki dua akun di domain yang sama.
Tathagata
Bekerja di Windows 10.
wrkwrk
Bekerja untuk saya di domain yang berbeda.
Tahir Hassan
1
Bagaimana cara menjalankan sebagai pengguna akun windows lain dan sebagai administrator ?
Kiquenet
116

Satu cara lain yang saya temukan adalah membuka "Mulai"> "Panel Kontrol"> "Nama Pengguna dan kata sandi yang tersimpan" (Alat Administratif> Manajer Kredensial di Windows 7) dan menambahkan akun domain yang akan Anda gunakan dengan perintah "runas" .

Kemudian, di SQL Management Studio 2005, cukup pilih "Windows Authentication" dan masukan server yang ingin Anda sambungkan (meskipun pengguna yang Anda lihat secara abu-abu masih merupakan pengguna lokal) ... dan berfungsi!

Jangan tanya kenapa! :)

Sunting: Pastikan untuk memasukkan ": 1433" setelah nama server dalam Credential Manager atau mungkin tidak terhubung karena tidak mempercayai domain.

dagronlund
sumber
10
Jujur, jawaban ini harus ditandai. Solusi runas tidak bekerja untuk saya, dan membuat sakit kepala karena smss tidak suka memulai di konsol, yang adalah apa yang terjadi ketika Anda memanggil smss. Dan bahkan setelah itu berhenti terjadi, itu masih tidak berhasil. Tetapi Manajer Kredensial> Menambahkan kredensial windows berfungsi. Masukkan nama server, dan nama pengguna DOMAIN \ pengguna Anda, dan kata sandi. Seperti yang dia katakan, itu masih akan MENUNJUKKAN pengguna lokal, tetapi tetap terhubung.
Brian Arsuaga
16
Anda mungkin perlu menggunakan sqlserver.domain.com:1433 sebagai alamat jaringan. Lihat stackoverflow.com/questions/6944933
Greg Bray
7
Memang ini bekerja untuk saya, tampaknya jauh lebih mudah, dan memungkinkan koneksi windows khusus server dalam satu sesi SSMS. Saya baru saja menjalankan "Manajer Kredensial", dan menambahkan Kredensial Windows untuk <servername>: 1433, di mana <servername> adalah mesin SQL Server, sepenuhnya memenuhi syarat (seperti MyServer.MyCompany.Com).
David Korn
1
The runasMetode tidak bekerja untuk saya, tapi ini tidak. Saya awalnya mencoba tanpa informasi port di Credential Manager, tetapi saya masih tidak bisa masuk. Ketika saya menambahkan informasi port di Credential Manager, itu berfungsi seperti pesona. Terima kasih banyak atas ini!
René
1
Ini mungkin solusi yang paling elegan. Bekerja di Windows 8.1 untuk saya terhubung ke contoh mandiri SQL 2012 yang bahkan bukan bagian dari domain. <servername>: 1433
Tim Lehner
10

The runas /netonly /user:domain\username program.exeperintah hanya bekerja untuk saya padaWindows 10

  • menyimpannya sebagai file batch
  • menjalankannya sebagai administrator,

saat menjalankan batch perintah sebagai pengguna biasa, saya mendapatkan masalah kata sandi yang salah yang disebutkan oleh beberapa pengguna pada komentar sebelumnya.

Ricardo Mercado
sumber
Ini bekerja untuk saya juga, tidak ada hubungan saling percaya antara domain. Saya dapat memulai SSMS dan terhubung ke server SQL menggunakan akun domain lain (meskipun di UI dikatakan akan menggunakan akun domain lokal.
Neil
10

Tidak satu pun dari jawaban ini melakukan apa yang saya butuhkan: Login ke server jauh menggunakan akun domain yang berbeda dari yang saya login di mesin lokal saya, dan itu adalah domain klien di vpn. Saya tidak ingin berada di domain mereka!

Sebaliknya, pada dialog connect to server, pilih "Windows Authentication", klik tombol Options, dan kemudian pada tab Parameter Connection Tambahan, masukkan

user id=domain\user;password=password

SSMS tidak akan mengingat, tetapi akan terhubung dengan akun itu.

Dave
sumber
Ini bekerja untuk saya di SQL Server Management Studio 2017
natbob1
6

Sedikit sihir PowerShell akan melakukan trik:

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

Kemudian cukup pilih otentikasi windows

maeneak
sumber
1

Untuk Windows 10: Buka Ikon Sql Management Studio, atau Short Cut di menu: Klik Kanan> Pilih Open File Location

masukkan deskripsi gambar di sini

Tahan Shift dan klik kanan pintasan, atau file ssms.exe yang ada di folder. Memegang shift akan memberi Anda opsi tambahan "Jalankan sebagai pengguna yang berbeda":

masukkan deskripsi gambar di sini

Ini akan memunculkan kotak login dan Anda dapat mengetik kredensial yang Anda inginkan untuk dijalankan di sesi Anda.

cmartin
sumber
0

Ada banyak tempat di mana seseorang mungkin ingin menggunakan skenario semacam ini, tetapi karena cara otentikasi terintegrasi bekerja, itu tidak mungkin.

Seperti disebutkan gbn, otentikasi terintegrasi menggunakan token khusus yang sesuai dengan identitas Windows Anda. Ada praktik pengkodean yang disebut "peniruan" (mungkin digunakan oleh perintah Run As ...) yang memungkinkan Anda untuk secara efektif melakukan aktivitas sebagai pengguna Windows lainnya, tetapi tidak ada cara untuk bertindak sewenang-wenang sebagai pengguna yang berbeda (à la Linux) di aplikasi Windows selain itu.

Jika Anda benar-benar perlu mengelola beberapa server di beberapa domain, Anda dapat mempertimbangkan salah satu dari yang berikut:

  1. Siapkan Percaya Domain di antara domain Anda sehingga akun Anda dapat mengakses komputer di domain yang dipercaya
  2. Konfigurasikan pengguna SQL (menggunakan otentikasi campuran) di semua server yang perlu Anda kelola sehingga Anda dapat masuk dengan cara itu; jelas, ini mungkin menimbulkan beberapa masalah keamanan dan menciptakan mimpi buruk pemeliharaan jika Anda harus mengubah semua kata sandi di beberapa titik.

Semoga ini bisa membantu!

Ed Altorfer
sumber
tidak mungkin salah ... runas / netonly / user: domain \ username program.exe bekerja dengan baik.
Chris Pierce
-3

Satu-satunya cara untuk mencapai apa yang Anda inginkan adalah membuka beberapa instance SSMS dengan mengklik kanan pada shortcut dan menggunakan fitur 'Run-as'.

SQLCtebal
sumber
3
Satu-satunya jalan? Tidak semuanya.
Michel de Ruiter