Connettersi a SQL Server con l'autenticazione di Windows in un dominio diverso


74

Sto cercando di connettermi a un SQL Server remoto su una VPN in un dominio diverso. Quando inserisco il nome del server su SQL Server e scelgo parametri di connessione aggiuntivi per aggiungere alcuni elementi extra richiesti dalla mia scuola:

Integrated Security=SSPI; User ID=DOMAIN\username; Password=Password

Ottengo il seguente errore:

Accesso fallito. L'accesso proviene da un dominio non attendibile e non può essere utilizzato con l'autenticazione di Windows.


L'unico problema con la soluzione Windows Credential Manager è che se hai un sacco di database che supporti devi avere una voce per ognuno e aggiornarli ogni volta che devi aggiornare le password del tuo dominio. Per alcune persone che potrebbero essere ogni 30 - 60 giorni.
smehaffie,

Questo post è in qualche modo correlato.
RBT

@smehaffie puoi usare facilmente gli script e il comando "cmdkey / add" per mantenere le tue password - si aggiorna anche.
Mago Magoo,

Risposte:


70

Stai tentando di trasferire le credenziali di Windows in testo normale dalla stringa di connessione di un'applicazione. Questo non è semplicemente il modo in cui funziona l'autenticazione di Windows e vanifica ampiamente lo scopo.

Inoltre, non puoi semplicemente creare lo stesso nome utente con la stessa password nel tuo dominio e aspettarti che funzioni magicamente. Il nome di dominio fa ancora parte della convalida: la macchina deve essere parte del dominio o il dominio in cui si trova la macchina deve essere considerato attendibile dal dominio della scuola.

L'unica soluzione che conosco è per SSMS, ed è il runas /netonlytrucco descritto in questa risposta . Ciò induce Windows a lanciare SSMS come login specificato, piuttosto che proprio (non è qualcosa che puoi impostare nella finestra di dialogo Proprietà connessione di SSMS, è come devi avviare SSMS dalla riga di comando o un collegamento):

runas /netonly /user:domain\username "C:\path_to\ssms.exe"

Questo ti chiederà la password nel dominio remoto. Sarà sembrare come se sta usando le credenziali di Windows locali, ma non lo è .

È possibile che funzioni anche con Visual Studio, ma davvero non lo so.

Quindi le tue opzioni sono:

  • che l'università ti consenta di unire la tua macchina al dominio
  • chiedere all'università di aggiungere il tuo dominio come dominio di fiducia
  • avere una jump box all'interno della VPN che ti permetta di utilizzare RDP e utilizzare gli strumenti che si collegano direttamente al computer SQL Server
  • usa l'autenticazione SQL
  • prova il runas /netonlytrucco con Visual Studio
  • basta usare il runas /netonlytrucco con SSMS

La runascosa che non funziona con Visual Studio.
Daniel Hutmacher,

C'è un modo per imitare questo comportamento senza il prompt dei comandi?
Gilles Lesire,

1
@Gilles puoi creare un file batch e fare doppio clic sul file batch, oppure potresti usare quella stringa e creare un collegamento forse
Aaron Bertrand

103

C'è un altro modo, che ora uso in preferenza al runas /netonlymetodo.

Puoi aggiungere le credenziali al tuo profilo in Windows usando Gestione credenziali nel pannello di controllo di Windows.

  1. Apri Credential Manager
  2. Fai clic su "Aggiungi credenziali di Windows"
  3. Popolare il campo "Internet o indirizzo di rete" con il nome e il numero di porta dell'istanza SQL per cui si desidera memorizzare le credenziali.

    Esempio: UniServer:1433(1433 è la porta predefinita, potrebbe essere necessaria una porta diversa, soprattutto se ci si connette a un'istanza denominata)

  4. Inserisci il "Nome utente" (non dimenticare di includere il dominio, ad es. MYDOMAIN\MYUSER)
  5. Popolare la "Password"
  6. Clicca OK

Se il nome del server, la porta e i dettagli di accesso sono corretti, ora dovresti essere in grado di utilizzare l'autenticazione di Windows dalla maggior parte degli strumenti client, SSMS, Excel, qualunque cosa. Utilizzeranno tutti le credenziali archiviate.

Suggerimento: a volte è necessario utilizzare l'FQN per il server quando si aggiungono le credenziali. ad esempio UniServer.UniDomain.org:1433, tutto dipende dalle specifiche della rete.

Ecco una breve demo del metodo: http://youtu.be/WiVBPsqB9b4

È una schermata che mi fa tentare (e non riesco) di connettermi a un SQL Server in esecuzione in una macchina virtuale dal mio desktop, quindi aggiungere le credenziali richieste e riprovare, con successo.

Suggerimento: utilizzare il comando "cmdkey / add" per creare script e aggiornare le credenziali archiviate.


Interessante! Sembra dipendere da ciò che il tuo computer client pensa che venga chiamato il computer remoto piuttosto che da come potrebbe effettivamente essere chiamato. Ho inserito una voce inventata ("verysillytest.mwardm") nel mio file host per l'indirizzo IP (come faranno quelli che accedono dall'esterno dei domini) e ho impostato le credenziali nel nome "verysillytest.mwardm: 1433" . Posso quindi collegarmi felicemente (da una piccola app chiamata Query Express) usando il nome host o l'indirizzo IP.
mwardm,

@mwardm sì, è per questo che ti consiglio di usare ping o nslookup in quanto ti dirà il nome esattamente come devi usarlo, compresi i caratteri maiuscoli / minuscoli.
Mago Magoo,

Ah, beh, "ping -a" non mi ha dato nulla e nslookup non ha (immediatamente) funzionato perché non stavo usando i server DNS del dominio. Non preoccuparti, in realtà preferisco la flessibilità di dover solo conoscere l'indirizzo IP (e il login) e riuscire a inventarmi il mio nome!
mwardm,

2
Fantastico, funziona! Mi chiedo solo: dovrebbe funzionare così o è un bug o un errore di progettazione sul lato di SQL Server? Microsoft o persone provenienti da Microsoft pubblicizzano ovunque che sia necessario disporre di una macchina connessa al dominio, altrimenti non è possibile connettersi a SQL Server impostato per accettare solo le credenziali del dominio.
Dawid Ferenczy Rogožan,

A proposito, direi che questa risposta dovrebbe essere contrassegnata come accettata, dal momento che sembra essere una soluzione reale e l'altra risposta è più simile a una soluzione alternativa.
Dawid Ferenczy Rogožan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.