Probleme la conectarea la serverul SQL Conectarea a eșuat. „Autentificarea provine dintr-un domeniu nesigur și nu poate fi utilizată cu autentificarea Windows.” (Programare, Server Sql)

Gaven a intrebat.

Încerc să găzduiesc o bază de date SQL server, dar de fiecare dată când încerc să mă conectez la ea primesc această eroare:

Autentificarea provine dintr-un domeniu nesigur și nu poate fi utilizată cu autentificarea Windows

Mă conectez prin Matlab folosind următoarea comandă:

conn = database('Clinical_Data','DoyleLab07Acc','','com.microsoft.sqlserver.jdbc.SQLServerDriver','jdbc:sqlserver://DOYLELAB07SQLEXPRESS:54287;database=Clinical_Data;integratedSecurity=true;').

Conectarea la baza de date prin Matlab a funcționat bine atâta timp cât am folosit Matlab pe computerul pe care l-am folosit pentru a găzdui serverul. Cu toate acestea, când folosesc un alt computer și aceeași comandă Matlab, primesc eroarea pe care am arătat-o mai sus.

Când mă uit în control panelsystem. observ că nici un domeniu nu este listat pe PC-ul gazdă sau pe PC-ul pe care îl folosesc pentru a mă conecta la gazdă, dar ambele computere sunt în același grup de lucru. Aș putea să îmi rezolv problema creând un domeniu și adăugând PC-ul străin și gazda la acel domeniu? Dacă da, cum se poate realiza acest lucru?

Orice sugestie va fi foarte apreciată. Vă mulțumesc că mi-ați citit mesajul.

Comentarii

  • Notă pentru oricine găsește acest lucru ca și mine: această eroare poate fi afișată și pentru o parolă incorectă. –  > Por Dave.
  • Încă un alt scenariu în care această eroare poate fi afișată este atunci când contul pe care îl utilizați este blocat. –  > Por Patrick.
22 răspunsuri
Shahid Miah

Cum să scapi de Integrated Security=true a funcționat pentru mine.

Comentarii

  • Cititori – consultați și răspunsul lui Jay pentru o explicație a acestui steag. –  > Por Roberto.
  • A funcționat și pentru mine. Acesta ar trebui să fie răspunsul acceptat. –  > Por Hammad Hassan.
  • Pentru mine, a funcționat prin eliminarea „Trusted_Connection=True”, dar răspunsul dvs. mi-a dat un indiciu, mulțumesc.  > Por Dileep.
  • La fel… am șters Trusted_Connection=True; –  > Por Brian Rice.
NotMe

Pentru a utiliza Autentificarea Windows, unul dintre cele două lucruri trebuie să fie adevărat:

  1. Executați de pe aceeași mașină ca și serverul bazei de date.
  2. Aveți un mediu Active Directory, iar utilizatorul sub care se execută aplicația (de obicei, utilizatorul conectat) are drepturi de conectare la baza de date respectivă.

Dacă niciuna dintre aceste situații nu este adevărată, trebuie să faceți unul dintre cele două lucruri:

  1. Să înființați un controler de domeniu Windows, să conectați toate mașinile relevante la acel controler, apoi să reparați serverul SQL pentru a utiliza conturi de domeniu; SAU,
  2. modificați serverul SQL pentru a utiliza atât conturi Windows, cât și SQL Server.

Cea mai ușoară cale este, de departe, să modificați SQL Server pentru a utiliza atât conturile Windows, cât și conturile SQL Server. Apoi, trebuie doar să creați un utilizator SQL Server pe serverul BD și să modificați șirul de conexiune pentru a face acest lucru.

În cel mai bun caz, opțiunea 1 va necesita o zi întreagă de instalare și configurare. Opțiunea 2 ar trebui să dureze aproximativ 5 minute.

Comentarii

  • Eu am probleme cu pasul 2. În primul rând, nu știu cum să schimb SQL Server pentru a utiliza atât conturile Windows, cât și SQL sever, fără a reinstala serverul, ceea ce nu pot face. Există o modalitate de a face acest lucru în managerul de configurare sau în Management Studio? După ce fac acest lucru, creez utilizatorul prin databases->security->Logins->New Login? Ce credeți că trebuie să schimb în șirul de autentificare? Este vorba de numele de utilizator și parola? Pentru că în acest moment numele de utilizator „DoyleLab07Acc” este computerul gazdă. –  > Por Gaven.
  • @Gaven: Folosind Management Studio. Faceți clic dreapta pe numele serverului. Mergeți la proprietăți. Faceți clic pe fila de securitate. Schimbați „Server authentication” în „SQL Server and Windows Authentication mode”. Este posibil să fie nevoie să reporniți serviciile SQL. După aceea, conectați-vă la serverul db, extindeți securitatea și adăugați un cont. Consultați stackoverflow.com/questions/1393654/… –  > Por NotMe.
  • Există vreun caz în care acest lucru nu va funcționa? Am setat SQL pentru a utiliza ambele, am setat securitatea integrată la false și am încercat, de asemenea, să o înlătur complet, în timp ce am furnizat acreditările de utilizator corecte. Conectarea prin Management Studio funcționează bine, dar prin aplicația mea app.config eșuează cu eroarea de mai sus. Singura întrebare similară pe care o pot găsi este aceasta: stackoverflow.com/questions/18724747/… – care pare să fi fost rezolvată cu securitatea integrată, care nu funcționează în cazul meu –  > Por shicky.
  • se pare că problema mea menționată mai sus a fost cauzată de ordinea argumentelor? Nu am crezut că aceasta este o problemă, dar este singurul lucru pe care l-am schimbat și dintr-o dată a funcționat… –  > Por shicky.
Jay

Dacă serverul SQL Server se află pe un controler de domeniu și încercați să vă conectați la el de pe un alt controler de domeniu, atunci veți primi această eroare atunci când

IntegratedSecurity = true;

Acest lucru se va întâmpla chiar dacă includeți un nume de utilizator și o parolă SQL Server valide în șirul de conectare, deoarece acestea vor fi înlocuite automat cu numele de utilizator și parola Windows. Securitatea integrată înseamnă pur și simplu – utilizați acreditările Windows pentru verificarea conectării la SQL Server. Prin urmare, dacă sunteți conectat la un alt controler de domeniu, nu veți reuși. În cazul în care vă aflați pe două controllere de domeniu diferite, atunci nu aveți de ales decât să utilizați

IntegratedSecurity = false;

Acum, atunci când Securitatea integrată este falsă, SQL Server va utiliza numele de utilizator și parola SQL Server furnizate în șirul de conexiune. Pentru ca acest lucru să funcționeze, instanța SQL Server trebuie să aibă modul de autentificare configurat pe modul mixt, fiind, SQL Server și modul de autentificare Windows.

Pentru a verifica sau a modifica această setare în SQL Server, puteți deschide SQL Server Management Studio și faceți clic dreapta pe numele serverului, apoi selectați Properties (Proprietăți). În fereastra pop-up care apare, selectați Security și veți vedea unde puteți modifica această setare dacă este necesar.

Dylan Beattie

Am avut aceeași problemă atunci când am folosit aliasuri DNS și fișiere gazdă pentru a mă conecta la o mașină care utilizează un nume de domeniu diferit.

Să spunem că aveți un server SQL numit sql1 pe mydomain.com – care este un domeniu Active Directory – și aveți, de asemenea, o zonă DNS pentru mydomain.net, și – pentru coerență – ați configurat o înregistrare DNS alias (CNAME) pentru database.mydomain.net --> sql1.mydomain.com

Veți putea să vă conectați la sql1.mydomain.com utilizând securitatea integrată Windows, dar nu vă veți putea conecta la database.mydomain.net chiar dacă este vorba de același server deoarece numele de domeniu nu se potrivește cu domeniul dvs. AD.

GWLlosa

Acest mesaj de eroare poate apărea, de asemenea, dacă contul pe care îl utilizați pentru a accesa serverul SQL este blocat de domeniu.

Comentarii

  • Da, de exemplu, a fost creat un cont de serviciu, dar au uitat să bifeze căsuța „Password Never Expires” (Parola nu expiră niciodată)! –  > Por PeterX.
  • Da, în cazul meu, eroarea a început să apară după ce parola a fost schimbată pe contul de bază de date. Se pare că o aplicație web care folosea vechea parolă era încă implementată, ceea ce a făcut ca contul să fie blocat în mod repetat. În cele din urmă am rezolvat problema prin redistribuirea aplicației web care încă avea parola veche. –  > Por iosparkletree.
CRAFTY DBA

De ce să nu folosiți un cont SQL Server și să treceți atât numele de utilizator, cât și parola?

Iată de ce.

Pe scurt, se pare că aveți o problemă de autentificare.

Problema cu grupurile de lucru este că nu există o listă comună de control al accesului precum Active Directory (AD). Dacă folosiți ODBC sau JDBC, sunt transmise acreditări greșite.

Chiar dacă creați un cont Windows local (LWA) pe mașina (SE) care are instalat SQL Express (SELWA), acreditările care vor fi transmise de la mașina client (CM) vor fi CMLWA.

S3minaki

Dacă folosiți autentificarea Windows, asigurați-vă că parola utilizatorului nu a expirat. O parolă expirată poate explica această eroare. Aceasta a fost problema în cazul meu.

Miguel Febres

După cum am menționat aici, , este posibil să fie nevoie să dezactivați loopback-ul

Verificarea loopback poate fi eliminată prin adăugarea unei intrări în registru după cum urmează:

  • Editați registrul folosind regedit. (Start -> Run > Regedit )
  • Navigați la: HKLMSystemCurrentControlSetControlLSA
  • Adăugați o valoare DWORD numită „DisableLoopbackCheck” Setați această valoare la 1

ganisimov

Următoarele au funcționat pentru mine pentru a obține acces de la o altă mașină la SQL Server folosind autentificarea Windows. Această abordare poate fi utilă doar în mediul de dezvoltare/testare. De exemplu, trebuie să actualizați manual parola după ce o schimbați pe mașina de lucru.

Pe calculatorul cu SQL Server, mergeți la Control Panel (Panoul de control) și adăugați un nou utilizator Windows cu același nume de utilizator și parolă ca pe calculatorul de lucru. Apoi creați login SQL Server pentru acest utilizator:

CREATE LOGIN [SQLSERVERHOSTmyuser] FROM WINDOWS;

Acum puteți utiliza acest nume de utilizator pentru autentificarea Windows.

Dacă primiți eroarea „The login is from an untrusted domain” (Autentificarea provine dintr-un domeniu nesigur), acest lucru poate însemna că ați schimbat parola de pe calculatorul de lucru și acum trebuie să actualizați parola de pe calculatorul SQL Server.

Shafeeque Mohammed

M-am confruntat cu problema în timpul conectării la SQL Always On Listener. Dezactivarea verificării buclei de revenire a rezolvat problema.

  1. Modificați registrul folosind regedit. (Start -> Run > Regedit )

  2. Navigați la: HKLMSystemCurrentControlSetControlLSA

  3. Add a DWORD valoare numită “DisableLoopbackCheck”

  4. Setați această valoare la 1

https://blog.sqlauthority.com/2017/04/18/sql-server-login-failed-login-untrusted-domain-cannot-used-windows-authentication/

user4109297

În cazul meu, Aliasurile din SQL Native Client 11.0 Configuration indicau un server/IP invalid. Odată actualizat, a funcționat corect.

Pentru a verifica:1. Porniți „SQL Server Configuration Manager „2. Navigați la „SQL Native Client 11.0 Configuration” și apoi la „Aliases „3. Asigurați-vă că „Alias Name” și „Server” se potrivesc corect pentru TCP/IP

Barry

Doar adaug sugestia mea pentru o rezolvare, am avut o copie a unui server VM pentru dezvoltare și testare, am creat baza de date pe acesta cu „sa” având proprietatea asupra db.

Apoi am restaurat baza de date pe serverul VM live, dar am primit aceeași eroare menționată, chiar dacă datele se întorceau în continuare corect. M-am uitat în mapele de utilizator „sa” și am văzut că nu a fost mapat în baza de date, iar când am încercat să aplic maparea am primit o altă eroare: „Fix: Cannot use the special principal ‘sa’. Microsoft SQL Server, Error: 15405”. așa că am rulat în schimb următorul lucru

ALTER AUTHORIZATION ON DATABASE::dbname TO sa

Am reverificat mapările de utilizator și acum era atribuit db-ului meu și mi-a rezolvat o mulțime de probleme de acces.

Hiren Patel

Următoarele a fost de lucru pentru mine. sper că vă ajută

<add name="getconn" connectionString="Data Source=servername;Initial Catalog=DBName;Persist Security Info=True;User ID=sa;Password=***" />

Comentarii

  • Bineînțeles că a funcționat, , dar numai pentru că ați dezactivat „Autentificarea Windows”. –  > Por Auspex.
Sam Bryant

Acum folosim o soluție de gestionare a conturilor cu privilegii care ne schimbă parolele în mod regulat. Am sfârșit prin a primi această eroare după ce parola mea a fost schimbată. Închizând și redeschizând SSMS cu noua parolă am rezolvat problema.

KASTEER

Am început să primesc această eroare atunci când am încercat să mă conectez la SSMS folosind „Windows Authentication”. Acest lucru a început să se întâmple după ce am redenumit serverul Windows SQL. Am încercat totul pentru a rezolva această eroare și, în cazul meu particular, schimbarea numelor mașinilor din fișierul „hosts” pentru a reflecta schimbarea numelui serverului SQL a rezolvat problema. C:WindowsSystem32Driversetchosts

Luis Assuncao

Am avut această problemă deoarece am folosit un nume DNS de la un server vechi, care a fost transferat pe un server nou. Folosind adresa newserverinst1, a funcționat. Atât newserverinst1 cât și oldserverinst1 au indicat același IP.

RIanGillis

Încă un lucru de verificat:

Am avut o sarcină de restaurare QA de noapte care a încetat brusc să mai funcționeze după ce un alt dezvoltator s-a conectat la serverul QA și a încercat să pornească sarcina de restaurare în mijlocul zilei, care ulterior a eșuat cu mesajul „domeniu nesigur”. Cumva, serverul indicat pentru a fi planul de întreținere al lucrării a fost (schimbat?) folosind adresa IP, în loc de numele mașinii locale. La înlocuirea cu numele mașinii, problema a fost rezolvată.

Sam Patirage

În .net Core, de asemenea, puteți obține această eroare dacă Trusted_Connection=True;Is set. Exemplu de setare în appsettings.jason

ConnectionStrings": {
"DefaultConnection": "Server=serverName; Database=DbName; uid=userId; pwd=password; MultipleActiveResultSets=true"

},

Andrew Titus

TLDR: Schimbarea serverului DNS la adresa de buclă înapoi a funcționat pentru mine.

Lucrez în VirtualBox și am configurat două instanțe Windows Server 2016. Serverul A este configurat ca Domain Controller și Serverul B ca SQL Server. După ce am adăugat Server B la domeniu, nu mă puteam conecta cu Management Studio de la Server A. Obțineam „Conexiunea este dintr-un domeniu nesigur și nu poate fi utilizată cu autentificarea Windows”.

În configurația mea inițială, serverul își primea IP-ul de la serverul DHCP VirtualBox.

Am schimbat acest lucru pentru a utiliza IP static și am introdus adresa 127.0.0.1 în DNS primar, iar acest lucru a funcționat pentru mine.

Sper că acest lucru ajută pe cineva care trece pe aici.

Jahuso

Am activat Certificatul de încredere al serverului în Proprietățile conexiunii și a funcționat pentru mine

Andrew Titus

Aderarea la un WORKGROUP, apoi reintrarea în domeniu a rezolvat această problemă pentru mine.

Am primit această eroare în timp ce foloseam Virtual Box VM’s. Problema a început să apară atunci când am mutat fișierele VM într-o nouă locație a unității sau pe un nou computer.

Sper că acest lucru îi ajută pe cei care folosesc VM.

David Borough

Dacă aveți două servere pe același domeniu (de exemplu, APP și DB), puteți utiliza, de asemenea, Autentificarea Windows între aplicație și MSSQL prin configurarea unor utilizatori locali pe ambele mașini care se potrivesc (același nume de utilizator și parolă). Dacă nu aveți parolele potrivite, poate să arunce această eroare.