Autor Beitrag
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Sa 19.12.15 23:40 
Hallo Yankyy02 und alle zusammen,

ich habe bis jetzt leider das problem nicht lösen können.

Im Netz viele dieser Probleme angegeben ein interessantes Thema habe ich hier gefunden bei dem ich mir ggf. Erfolg verspreche:

programmertoolbox.wo...ing-system-error-32/

Leider weiß ich nicht wo der Schreiber folgende Punkte durchführt:

1- add new connexion
2- browse to my database file in C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MyDB


Ich habe bis jetzt noch nicht mit dem Management Studio 2014 oder auch anderen Versionen gearbeitet, Erfahrungen mit dem SQL Servern habe ich auch keine.

Brauche dringend Unterstützung :-(.

Bis jetzt habe ich auch andere Versuche durchgeführt, das ich im Management Studio die Verwaltung.mdf eingebunden habe ohne Erfolg. Sämtliche Dienste die auf die Datei Zugreifen könnten
Angehalten ohne Erfolg. Sobald ich den SQL Server Anhalte bekomme ich Anstatt der oben genannten Meldung eine andere, das der Server Angehalten ist, was auch richtig ist.

Habe alle Daten auch die SQL Server Data Tools auf dem neuesten Stand.

Ich tappe gerade im Dunkeln :-(.

Kann es sein das ich ein Problem habe weil ich MS Visual Studio 2012 verwende jedoch der SQL Server SP1 eine 2014 Version ist?
Wo ich früher den SQL Server 2012 benutzt habe bin ich nie auf solche probleme gestoßen.

Viele Grüße
Yankyy02
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 132
Erhaltene Danke: 20

Win 10 x64
C# VS 2017 Pro
BeitragVerfasst: So 20.12.15 00:46 
Servus,

VS 2012 und SQL Server 2014 ist sicher nicht das Problem. Versuche dochmal den Lösungsvorschlag den du gefunden hast. Wäre ja in kürzester Zeit erledigt. Öffne das SQL Server Management Studio und verbinde dich damit zu deiner Instanz. Wähle deine Datenbank und führe einen rechtsklick auf die Datenbank aus um anschließend auf Tasks und Offline schalten zu wählen. Im VS fügst du dann die Datenbank wieder hinzu wie du es sonst auch machst und testet ob du dich nun wieder verbinden kannst.



LG
Einloggen, um Attachments anzusehen!
_________________
the quiter you become, the more you are able to hear
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Sa 26.12.15 20:07 
Hallo Yankyy02,

ich muss wirklich sagen das ich nun alles mögliche versucht habe die Datenbank anzusprechen.
Auch mit der zuletzt genannten Lösung.

Jedoch tappe ich immer wieder in weitere Meldungen. Zurzeit hänge ich an folgender Meldung:
Zitat:
Message: Cannot open user default datavase. Login failed.
LineNumber: 65536
Source: .Net SqlClient Data Provider
Procedure:
Index #1
Message: Login failed for 'xxxxx\User'.
....
....

Ich habe aber für die Datenbankdatei keine User Daten angegeben und bin als Administrator angemeldet.
Verstehe das nicht.

Was mich sehr verwirrt, ist das ich auf den SQL Server 2008 ganz normal zugreifen konnte.
Einmal habe ich diese Applikation auf einem fremd PC ausprobiert, dort reichte nur LocalDB zu installieren
und es lief alles. Woran kann es den liegen das es bei 2014 auf einmal solche probleme gibt?

Würde mich sehr freuen wenn ich noch Unterstützung erhalte um aus diesem "Fehler" herauszukommen.

Vielen Herzlichen Dank.

mkRE

Moderiert von user profile iconTh69: Quote-Tags hinzugefügt
Yankyy02
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 132
Erhaltene Danke: 20

Win 10 x64
C# VS 2017 Pro
BeitragVerfasst: Sa 26.12.15 22:40 
Hohoho,

vorab schonmal sorry aber über die Weihnachtsfeiertage ist der Alkoholspiegel etwas höher! :D Die Fehlermeldung besagt das der angegebene User sich nicht anmelden kann. Die Frage ist nun welche Anmeldemethode du bei deinem Server zugelassen hast und wie dein Connection String mittlerweile aussieht. Was mich ein wenig verwirrt ist das du einerseits von einer LocalDB sprichst und andererseits Probleme mit dem SQLServer hast!

LG

_________________
the quiter you become, the more you are able to hear
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Sa 26.12.15 23:20 
Hallo Yankee02,

lass es dir gut gehen ein Alkoholreset muss auch mal sein :-).

Mein Ziel ist es eine vorherige Datenbankdatei anzusprechen. Mittlerweile habe ich eine neue Test Applikation erstellt mit einer Datenbankdatei Verwalten.mdf.
Es handelt sich um eine einfache Datenbankanwendung in Visual Studio 2012.

Mein Connection String sieht folgendermaßen aus:
ausblenden C#-Quelltext
1:
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\User\Documents\Verwalten.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;");					

und vorher so:
ausblenden C#-Quelltext
1:
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Verwalten.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;");					

Den MSQL Server 2014 habe ich seit kurzem installiert wo ich das alte Programm wieder testen wollte.
Ich möchte ja keine probleme mit dem SQL Server haben, vielleicht versuche ich mehr zu machen als ich brauche :-(.

Viele Grüße

mkRE

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: So 27.12.15 02:16 
Hallo Yankyy02,

ich melde mich noch einmal mit neuen Erkentnissen zu meinem Problem.
Habe jetzt einmal mit dem Management Studio eine einfache Datenbank Datei erstellt mit dem Namen Test.

Connection String 1:
ausblenden C#-Quelltext
1:
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\Test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;");					

Sobald ich mit dem Connection String auf die Datenbank zugreifen möchte, dann erhalte ich folgende Meldung wie oben beschrieben:
Zitat:
Message: Cannot open user default datavase. Login failed.
LineNumber: 65536
Source: .Net SqlClient Data Provider
Procedure:
Index #1
Message: Login failed for 'xxxxx\User'.
....
....

Daraufhin habe ich im Management Studio unter Tasks die Datenbank Offline geschaltet und der Zugriff funktioniert einwandfrei.
Allerdings habe ich hier vorher die Datenbankdatei samt log file Volle Benutzerzugriffe erteilt.

Connection String 2:
ausblenden C#-Quelltext
1:
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;");					

Als neue Datenquelle habe ich die neu erstellte Datenbank "Test" in Visual Studio Projekt eingebunden.
Nun möchte ich mich mit der Datenbank "Test" verbinden die im Visual Studio Projekt integriert ist, jedoch kommt wieder die Fehlermeldung " Unable to open physical file ...".

Das kann doch nicht sein?

Ich gehe jetzt mal schlafen morgen gehe ich dem weiter auf die spur.

Bin Dankbar über jeden Tipp.

Viele Grüße

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Quote-Tags hinzugefügt
Yankyy02
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 132
Erhaltene Danke: 20

Win 10 x64
C# VS 2017 Pro
BeitragVerfasst: Mo 28.12.15 00:14 
Servus,

sorry für die Abstinenz aber das ist der Feiertagsstress! :lol: Als nächsten Hinweis hätte ich für dich das dein ConnectionString nicht ganz ok ist. Bei einer Attached DB musst du Database=dbname angeben. Warum das so ist steht auf der folgenden Seite beschrieben ..... www.connectionstrings.com/sqlconnection/ Im Bereich: Attach a database file on connect to a local SQL Server Express instance. Sag bescheid ob es funktioniert hat.

LG

_________________
the quiter you become, the more you are able to hear

Für diesen Beitrag haben gedankt: mkRE
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Di 29.12.15 21:30 
Hallo Yankyy02,

kein Problem ich freue mich das mich jemand unterstützen möchte. Bin dir da sehr dankbar.

Ich versuche mich gerade damit auseinander zu setzen und überlege wie ich Database = dbname in mein Connection String einbinde :-).
Die Beispiele verwirren mich etwas im link.

Viele Grüße

mkRE
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Di 29.12.15 22:21 
Hallo Yankyy02,

so ich habe mal einen anderen Versuch gestartet und zwar mal aus den Eigenschaften der Test.mdf Datenbank den Connection String bzw. Verbindungszeichenfolge kopiert
und wie folgt umgebastelt:

ausblenden C#-Quelltext
1:
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Test.mdf;Integrated Security=True;Connect Timeout=30");					


Jetzt funktioniert die Verbindung puuuuhhhhhhhh :-)


Aber ehrlich gesagt wie soll man da selber darauf kommen einen funktionierenden Connection String zu schreiben?
Wo finde ich Einstiegsmateriel mit konkreten Beispielen zu Connection Strings ein guter Link oder eine PDF wäre echt super!

Dein Link finde ich auch super ohne Frage aber kannst du mir ggf. aus einem Beispiel aus deinem Link ein reales Beispiel zeigen?

Es geht um folgendes z.B.:

Trusted Connection
ausblenden C#-Quelltext
1:
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;					




Viele Grüße und vielen Dank!!
Yankyy02
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 132
Erhaltene Danke: 20

Win 10 x64
C# VS 2017 Pro
BeitragVerfasst: Di 29.12.15 22:41 
Hallo,

zuerst freut es mich mal das du es nun geschafft hast. Zu deiner Frage bezüglich Trusted_Connection .... das ist ein Synonym für integrated security wie du es bereits schon verwendest. Schau dir mal die ConnectionStringBuilder Klassen bzw. deren Eigenschaften an dann wird's dir sicher um einiges verständlicher sein. Ausserdem finde ich es übersichtlicher als den gesamten ConnectionString in einem nur durch Semikolons getrennt zu betrachten.

Ich kann dir das Buch Datenbank-Programmierung mit Visual C# 2012 empfehlen ...... www.amazon.de/Datenb...451425131&sr=1-4

LG

_________________
the quiter you become, the more you are able to hear
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Mi 30.12.15 00:33 
Yankyy02,

ich danke dir für deine Tipps und möchte das ganze auch gerne übersichtlicher machen soweit es geht, mag es auch nicht so eingequetscht.
Zwar war es ein kleiner Erfolg und nebenbei habe ich zum erstenmal auch mit dem SQL Server Management Studio gearbeitet :-).

Falls es hierzu noch Probleme geben wird schreibe ich noch was. :wink:

Vielen Dank
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3897
Erhaltene Danke: 794

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Mi 30.12.15 10:16 
Da gibt es eine super Seite: The Connection Strings Reference ;-)
Jeder Datenbank-Hersteller hat da seine eigenen Parameter definiert, darum kommt man ohne Doku von alleine auch nicht weiter.

Und hier explizit die .NET Framework Data Provider for SQL Server connection strings.

Edit: habe jetzt erst gesehen, daß Yankyy02 ja schon den Link gepostet hat (hatte vorher nur den Link zum "Datenbank-Programmierung mit Visual C# 2012" gesehen) - ist wohl noch zu früh am Morgen...
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Do 31.12.15 17:51 
Hallo Th69,

danke der Link ist auch ganz gut!
Werde mal alle bei mir möglichen ConnectionStrings ausprobieren wird ein interessantes Training :-).

Viele Grüße

mkRE
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: So 10.01.16 01:11 
Hallo zusammen,

ich wollte nochmal etwas fragen es wäre eine Erweiterung der eigentlichen Anfangsfrage.

Wie kann ich am elegantesten bei meiner Anmeldung an die Datenbank unterscheiden ob es sich bei dem Angemeldeten um ein Administrator mit erweiterten Möglichkeiten oder ob es sich um einen Standard User handelt?

Mir schwebt da vor Die Datenbank mir einem weiteren Feld zu erweitern wo noch zu den Benutzerdaten angegeben wird ob er ein User oder Admin ist.

- Uder_ID - Benutzerrechte - Benutzername - Passwort -

Leider komme ich nicht darauf wie ich es am elegantesten Abfragen soll.

Würde mich hierbei um einige Tipps freuen.

Vielen Dank.
Yankyy02
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 132
Erhaltene Danke: 20

Win 10 x64
C# VS 2017 Pro
BeitragVerfasst: So 10.01.16 11:59 
Servus,

ich hoffe ich habe die Frage richtig verstanden ...... du möchtest prüfen ob der User am lokalen PC in der Gruppe der Administratoren ist bzw. über diese Rechte verfügt? Wenn dem so ist solltest du dir die WindowsPrincipal-Klasse ansehen. Mit der Methode IsInRole(SecurityIdentifier) der Klasse kannst du das prüfen. Ich würde mir dazu eine eigene Methode schreiben die true oder false zurück gibt ob es sich um einen Admin handelt.

LG

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: URL-Titel hinzugefügt.

_________________
the quiter you become, the more you are able to hear
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: So 10.01.16 23:24 
Hallo Yankyy02,

freue mich über deine Antwort die mich auf einer weitere Idee gebracht hat und sicherlich von nutzen sein wird!
Leider lag meine Vorstellung wo anders vielleicht etwas einfacher und zwar soll in der Datenbank zu jedem User noch eine User ID und Benutzerrechte zu dem Usernamen und Passwort eingegeben werden.

Im Feld Benutzerrechte steht dann entweder User oder Admin.

Ich möchte nun Abfragen ob der Username und das Passwort das sich anmelden will erweiterte Rechte "Admin der Anwendung" nur für die Anwendung hat oder nicht.
Falls es sich um einen Admin handelt, werden noch weitere möglichkeiten in der Anwendung freigeschaltet z.B. kann der jenige weitere Benutzernamen eintragen usw.

Ich hab leider keine Idee wie ich das Abfragen soll.

Bis jetzt habe ich von dir ganz am Anfang gelernt wie man am besten den Benutzernamen und das Passwort abfragt mit dem SQLDataReader und hier versuchte ich gestern auch etwas zu finden.

Parallel versuche ich noch eine Lösung zu finden.
Habe zwar gestern die Anmeldung einmal für einen Admin und die andere für einen User gemacht jeweils ein Button, aber das gefällt mir absolut gar nicht
und habs auch wieder entfernt.


Viele Grüße und Danke für deine Unterstützung.
Yankyy02
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 132
Erhaltene Danke: 20

Win 10 x64
C# VS 2017 Pro
BeitragVerfasst: Mo 11.01.16 20:39 
Servus,

um das Rad nicht neu zu erfinden hier ein Link der dich in die richtige Richtung lenken sollte. User Login.
Als Alternative wenn du nicht unter Windows-Benutzer unterscheiden möchtest sonder explicit für deine Anwendung würde sich ein Bool-Feld in deiner Datenbank bzw. in deiner User-Tabelle anbieten das du bei der Anmeldung abfragst und dir in deiner Anwendung als Eigenschaft merkst. Sobald ein User eine Funktion aufruft die nur ein Admin darf prüfst du ob der Angemeldete Benutzer ein Admin ist.

LG

_________________
the quiter you become, the more you are able to hear
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Mi 13.01.16 23:24 
Hallo Yankyy02 sorry für die Verspätung hatte einiges um die Ohren.

An die User Login Beispiel Applikation gehe ich mal am Wochenende an und melde mich dann mit Ergebnissen.

Der Tipp mit dem Bool-Feld ist super habe gar nicht daran gedacht ich wollte das ganze ursprünglich auf die Schlüsselwörter User oder Admin abfragen.

Es geht auch Einfacher so wie ich es grad sehe :D .

Melde mich auf jedenfall mit Ergebnissen :!: oder auch Problemen :?: .

Viele Grüße
mkRE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 98



BeitragVerfasst: Mi 13.01.16 23:50 
Hallo Yankyy02 ich melde mich doch noch mal.

user profile iconYankyy02 hat folgendes geschrieben Zum zitierten Posting springen:
Servus,
Als Alternative wenn du nicht unter Windows-Benutzer unterscheiden möchtest sonder explicit für deine Anwendung würde sich ein Bool-Feld in deiner Datenbank bzw. in deiner User-Tabelle anbieten das du bei der Anmeldung abfragst ....


Hier war mein eigentliches Problem, das ich nicht weiß wie ich unterscheiden kann bei der Anmeldung ob es ein Admin oder User ist nur explizit bei der Anwendung in meiner User-Tabelle.
Mittels SQLDataReader. Der Datenbank weg wäre mir aktuell lieber obwohl die Windows-Benutzer Thematik in den meisten Anwendungen mehr sinn machen kann.

Naja ich schaue mal was das Wochenende für Erfolge bringt :?.

Danke und viele Grüße
Yankyy02
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 132
Erhaltene Danke: 20

Win 10 x64
C# VS 2017 Pro
BeitragVerfasst: So 17.01.16 00:24 
Hallo mkRE,

quick and dirty wie man so schön sagt würde es eben dann über ein zusätzliches Feld in deiner Datenbank gehen. Als Spaltenbezeichner zb. Administrator und als Datentyp würde sich Bit anbieten.
Wenn du dir eine statische Klasse zb. AccessControl mit einer statischen Property IsAdmin erstellst kannst du diese Property bei der Abfrage des Benutzers und zugehörigen Passwortes setzen wenn die Anmeldung erfolgreich war. Bevor dann eine Aktion ausgeführt wird die nur von einem Admin ausgeführt werden darf kannst du mit AccessControl.IsAdmin prüfen ob der User dazu berechtigt ist.

ausblenden C#-Quelltext
1:
AccessControl.IsAdmin = Convert.ToBoolean(reader["Administrator"]);					


LG

_________________
the quiter you become, the more you are able to hear

Für diesen Beitrag haben gedankt: mkRE