Laden...

Datenbankverbindung nimmt Windows Anmeldename, statt SQL Benutzer

Erstellt von schuppsl vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.265 Views
S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 8 Jahren
Datenbankverbindung nimmt Windows Anmeldename, statt SQL Benutzer

verwendetes Datenbanksystem: SQL Server 2008

Guten Morgen.
In meinem kleinen WIndows Progrämmchen mit .NET 4.5/Visual Studio Ultimate 2013
erstelle ich eine neue Datenbankverbindung zu unserem Datanbankserver auf eine bestimmte Datenbank mit einem extra hierfür erstellten SQL Benutzer.

Da ich Adminrechte habe, funktioniert das Programm auf meinem Rechner auch außerhalt der Entwicklungsumgebung.
Beim Nicht-Admin-Kollegen allerdings kann keine Verbindung zur Datenbank hergestellt werden, da das Programm immer den Windows-Anmeldename für die Verbindung nimmt.
Meldung:

Fehlermeldung:
Cannot open Database "DATENBANK" requested by the login. The login failed. Login failed fpr user "DOMÄNE\windowsbenutzer".

Die Verbindungsdaten, ergo den SQL Benutezr habe ich extra im Programm gespeichert, bzw. extra in der App.config den ConnectionString entsprechend angepasst.

Kleiner Hinweis: Es ist noch eine Zweite Datenbank auf einem anderen Server beteiligt, mit diesem klappt die Verbindung mit dem SQL Benutzer.

Liegt das an meinem Programm? Oder an der Datenbank?
Any ideas?

T
2.219 Beiträge seit 2008
vor 8 Jahren

Wie sieht der Code für deinen Verbindungsaufbau und dein ConnectionString aus?
Das klingt nämlich so als würde dein Programm hier keinen Benutzer im ConnectionString haben.
So versucht er wohl den aktuellen Benutzer zu verwenden, was natürlich falsch ist.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 8 Jahren

Den interessiert der Connectionstring gar nicht.

Dieser sieht so aus:

Data Source=DATENBANK;Initial Catalog=TABELLE;Persist Security Info=True;User ID=reader;Password=**********

Also vollkommen korrekt eigentlich.

Die Tabelle habe ich mit ADO.NET eingebunden und spreche es mit LINQ an.
D.h. es gibt eine dbml Datei, mit dieser werden ja automatisch die Klassen erstellt.

Die Verbindung wird dann mit folgendem Code geöffnet:


 USERSDataContext userCon = new USERSDataContext();

C
168 Beiträge seit 2010
vor 8 Jahren

Den interessiert der Connectionstring gar nicht.

Data Source=DATENBANK;Initial Catalog=TABELLE;Persist Security Info=True;User ID=reader;Password=**********  

Was mir auffällt ist das Data Source eigentlich der Server ist und Initial Catalog die Datenbank.
Die Tabelle wird in einem ConnectionString nicht angegeben.

Es gibt ein SQLConnectionStringBuilder versuchs mal damit 😃

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 8 Jahren

Also jetzt geht es.
Ich habe die Tabelle in der dbml Ansicht entfernt und neu reingezogen. Dabei hat er mich gefragt, ob ich die unsicheren Verbindungsdaten speichern möchte. Habe dann auf ja geklickt.
Das habe ich wohl beim ersten Mal nicht....

3.825 Beiträge seit 2006
vor 8 Jahren

Bitte setze im Connectionstring wie folgt :

integrated security=false
persist security info=false

Und beachte - wie Crone schon gesagt hat - dass 'Data Source' der Server ist und 'Initial Catalog' die Datenbank.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 8 Jahren

Das mit dem Datasource und Initial Catalog passt schon(habe ich oben falsch editiert). Problem ist nur, dass das Passwort im Connectionstring gespeichert wird im Klartext. Ansonsten geht es jetzt.

463 Beiträge seit 2009
vor 8 Jahren

Warum erstellst du keine AD Gruppe, gibt dieser die Zugriffsrechte und legst alle Benutzer die dieses Programm nutzen dürfen in die AD Gruppe...

Und schon hättest du dein Problem sauber gelöst!

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 8 Jahren

Warum erstellst du keine AD Gruppe, gibt dieser die Zugriffsrechte und legst alle Benutzer die dieses Programm nutzen dürfen in die AD Gruppe...

Und schon hättest du dein Problem sauber gelöst!

Stimmt!
Einfachste Lösung.