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?
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.
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();
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.
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....
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
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.
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!
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.