2017-05-17 6 views
0

In einem unserer alten VB6 app Verbindungszeichenfolge ist wie folgt:VB6 und SQL Server 2016 Express-Verbindungszeichenfolge

nk = "Provider=SQLOLEDB;" 
nk = nk + "Integrated Security=SSPI;" 
nk = nk + "Persist Security Info=False;" 
nk = nk + "User ID=sa;" 
nk = nk + "Password=******;" 
nk = nk + "Initial Catalog=" & db & ";" 
nk = nk + "Data Source=" & hn 
kon.ConnectionString = nk 
kon.Open 

Wenn ich versuche, mit diesen Optionen es nicht funktionieren zu verbinden, so dass ich bin interessiert, warum diese zwei Optionen:

nk = nk + "Integrated Security=SSPI;" 
nk = nk + "Persist Security Info=False;" 

werden nicht ignoriert?

Nur um zu erwähnen, dass die Anwendung mit Sql Server 2016 Express auf Windows Server 2016 Standard über lokales Netzwerk verbindet.

Antwort

2

Ihr Problem ist mit

Integrated Security = SSPI

Es sollte auf false gesetzt werden (oder ganz entfernt), wie Sie keine aktuelle Windows-Benutzerauthentifizierung, sondern einen Standard-SQL vom Benutzer verwenden Passwort Login.

Aus MSDN documentation:

Wenn falsch, Benutzer-ID und Passwort sind in der Verbindung angegeben. Wenn wahr ist, werden die aktuellen Windows-Kontoanmeldeinformationen für die Authentifizierung verwendet. Erkannte Werte sind true, false, yes, no und sspi (dringend empfohlen), was dem Wert true entspricht. Wenn die Benutzer-ID und das Passwort angegeben sind und die integrierte Sicherheit auf "true" gesetzt ist, werden Benutzer-ID und Kennwort ignoriert. und integrierte Sicherheit werden verwendet.

+0

... und das bedeutet, dass mein Domänenkonto nicht berechtigt ist, auf sql server db zuzugreifen. Danke für den Tipp. – murga