2009-02-24 15 views
5

Viene visualizzato questo errore quando si tenta di connettersi a un server SQL remoto utilizzando questa stringa di connessione.Connessione a un server mssql da una macchina remota dà accesso non riuscito per l'utente ''

errore: stringa

ODBC error: 28000118452[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user ''. The user is not associated with a trusted SQL Server connection.

Connection:

"DRIVER={SQL Server};SERVER=testserver,1433;Trusted_Connection={Yes};"

Nota che questa stessa stringa di connessione funziona bene se a specificare il computer locale.

La mia domanda: perché il server SQL remoto ritiene che il mio nome utente sia vuoto ""?

Ho eseguito un accesso valido utilizzando l'API Win32 WNetAddConnection sul computer remoto.

Modifica: viene visualizzato lo stesso errore durante la connessione da Management Studio. Ma pensavo che il mio programma avrebbe avuto maggiori possibilità di funzionare da quando ho stabilito una connessione con la macchina remota.

Edit2: Nota Ho davvero bisogno di una soluzione che utilizzi l'autenticazione di Windows. Ho già a che fare con l'autenticazione SQL.

+0

stai usando l'autenticazione integrata di Windows o utente sql? non lo vedo nella stringa di connessione .. –

+0

autenticazione di Windows, è possibile utilizzare Trusted_connection per questo. –

+0

È lo stesso se utilizzo Integrated Security = SSPI –

risposta

1

Pensieri:

1.) sono entrambe le macchine nello stesso dominio? Sto probabilmente pensando così a causa dei tuoi riferimenti a fare una connessione con WNet * ...

In caso contrario, la sicurezza integrata ti darà problemi.

Modifica: vedo che entrambe le macchine non sono nello stesso dominio. Per utilizzare la protezione integrata, il dominio che SQL Server è in deve considerare attendibile il dominio della macchina locale è in

Un altro Edit:. Corroboration for the above statement.

Da link: Questo errore si può verificare se l'utente l'accesso è un account di dominio da un dominio diverso e non attendibile dal dominio di SQL Server. Il passo successivo è spostare la macchina client nello stesso dominio di SQL Server e configurarla per utilizzare un account di dominio o impostare la fiducia reciproca tra i domini. Stabilire la fiducia reciproca è una procedura complicata e dovrebbe essere fatta con molta cura e con le dovute considerazioni di sicurezza.

2.) Verificare che gli SPN siano impostati correttamente sul server.

Cercare HERE per maggiori indicazioni, ma in fondo si fa:

-L setspn servername

uno dei nomi SPN deve assomigliare a:

MSSQLSvc/nomeserver: 1433

3 .) Un altro Modifica: Se nessuno dei due computer si trova in un dominio, è sufficiente disporre di un ID utente/password locale corrispondente a entrambi i computer.

Ad esempio, un utente di nome brian su entrambe le macchine e le password di entrambi gli utenti sono "letmein".

+0

1) Non sono su un dominio e hanno diff u/p. wnet api funziona bene anche quando si lavora con 2 macchine non in un dominio. –

+0

SQL Server non utilizza l'apis WNet *. – Moose

+0

Ciao Moose; Potresti darmi un suggerimento su dove iniziare a cercare di impostare questa fiducia tra i computer? –

-1

Penso che l'errore potrebbe essere perché la sezione UserId non è compilata (che è corretta per Windows Auth).

Prova una stringa di connessione come:

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

Un'altra alternativa che dovrebbe essere identico:

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

Problemi correlati