Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Datenbankverbindung nimmt Windows Anmeldename, statt SQL Benutzer
schuppsl
myCSharp.de - Member



Dabei seit:
Beiträge: 789

Themenstarter:

Datenbankverbindung nimmt Windows Anmeldename, statt SQL Benutzer

beantworten | zitieren | melden

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:
Fehler
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?
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.087
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
schuppsl
myCSharp.de - Member



Dabei seit:
Beiträge: 789

Themenstarter:

beantworten | zitieren | melden

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();
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von schuppsl am .
private Nachricht | Beiträge des Benutzers
Crone
myCSharp.de - Member



Dabei seit:
Beiträge: 168

beantworten | zitieren | melden

Zitat von schuppsl
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 :)
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Crone am .
Real programmers don't comment their code - it was hard to write, it should be hard to understand.
private Nachricht | Beiträge des Benutzers
schuppsl
myCSharp.de - Member



Dabei seit:
Beiträge: 789

Themenstarter:

beantworten | zitieren | melden

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....
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3.812
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
schuppsl
myCSharp.de - Member



Dabei seit:
Beiträge: 789

Themenstarter:

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von schuppsl am .
private Nachricht | Beiträge des Benutzers
Stefan.Haegele
myCSharp.de - Member

Avatar #avatar-3068.jpg


Dabei seit:
Beiträge: 462
Herkunft: Untermeitingen

beantworten | zitieren | melden

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!
private Nachricht | Beiträge des Benutzers
schuppsl
myCSharp.de - Member



Dabei seit:
Beiträge: 789

Themenstarter:

beantworten | zitieren | melden

Zitat von Stefan.Haegele
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.
private Nachricht | Beiträge des Benutzers