Benutzer mit den meisten Antworten
Netzwerkbezogener oder Instanzspezifischer Fehler (SQL komplett deinstallieren, Upgrades)

Frage
-
Hallo,
folgende Situation:
Ein Freund hat mittels Visual Studio 2015 Enterprise ein C# Projekt mit einer SQL Datenbankanbindung erstellt.
Die Datenbankdatei hat die Form "Dateiname.mdf", außerdem gibt es noch die log-Datei dazu.
Er hat seinen Projektordner kopiert und mir gesendet (als .zip) verpackt. Dieses habe ich entpackt, das Projekt geöffnet und wollte die Datenbank verbinden. Nun kam die Meldung, dass meine SQL Server Version zu alt ist (ich hatte 2014). Nun ja, soweit wie es ging 2014 deinstalliert und 2016 installiert. Beim erneuten Aktualisieren der DB-Verbindung kam (und kommt noch) folgende Fehlermeldung:"Fehler beim Anfügen an die Datenbank mit den folgenden Informationen: Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: SQL Network Interfaces, error: 50 - Fehler in der Local Database Runtime. Es kann keine automatische Instanz erstellt werden. Fehlerdetails finden Sie im Windows-Anwendungsereignisprotokoll."
Nun Ja, anschließend habe ich (da ich mich erst seit kurzem mit SQL beschäftige) einige Instanzen von SQL Server 2016 installiert. Hat nichts geholfen, Instanzen deinstalliert.
Nun möchte ich meinen kompletten PC von sämtlichen SQL-Dateien und -Anwendungen befreien und komplett neu installieren.
Wie gehe ich am Besten vor?Zwischendurch habe ich noch SQL Data Tools und das Management Studio installiert... im Management Studio kann ich wenigstens die DB öffnen. Habe schon sämtliches probiert und so langsam liegen meine nerven blank.
Selbst in neuen C# Projekten kommt die oben genannte Fehlermeldung beim Verbinden UND Erstellen einer neuen DB.
Ich würde mich freuen, wenn mir hier jemand weiter helfen könnte!
Antworten
-
Hallo,
wildes (De-)Installieren hat in den allerwenigsten Fällen geholfen...
Dein Freund hat mit der SQL Server Local Db gearbeitet und dies so in der app.config hinterlegt, ausgenommen Dein Freund hat sie direkt im Quellcode hinterlegt. Schau dort mal nach und gucke was als "Data Source" (oder "Server" eingetragen ist.
Man muss jedoch nicht mit der Local Db arbeiten, sondern kann auch eine vollwertige SQL Server Instanz verwenden (von denen Du ja bereits einige hast/hattest). Füge die Datenbank an Deine SQL Server Instanz an und ändere die Verbindungszeichenfolge ab, so dass sie auf Deine SQL Server Instanz verweist - das wäre üblicherweise Data Source=(local)\<Instanzname>, wobei <Instanzname> für den Namen Deiner jetzigen SQL Server Instanz steht.
Ansonsten muss die Local Db Installiert sein, so dass sie unter dem jeweiligen Benutzer gestartet werden kann.
Gruß Elmar
- Als Antwort vorgeschlagen Christoph Muthmann Montag, 21. November 2016 07:57
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 30. November 2016 11:15
Alle Antworten
-
Hallo,
wildes (De-)Installieren hat in den allerwenigsten Fällen geholfen...
Dein Freund hat mit der SQL Server Local Db gearbeitet und dies so in der app.config hinterlegt, ausgenommen Dein Freund hat sie direkt im Quellcode hinterlegt. Schau dort mal nach und gucke was als "Data Source" (oder "Server" eingetragen ist.
Man muss jedoch nicht mit der Local Db arbeiten, sondern kann auch eine vollwertige SQL Server Instanz verwenden (von denen Du ja bereits einige hast/hattest). Füge die Datenbank an Deine SQL Server Instanz an und ändere die Verbindungszeichenfolge ab, so dass sie auf Deine SQL Server Instanz verweist - das wäre üblicherweise Data Source=(local)\<Instanzname>, wobei <Instanzname> für den Namen Deiner jetzigen SQL Server Instanz steht.
Ansonsten muss die Local Db Installiert sein, so dass sie unter dem jeweiligen Benutzer gestartet werden kann.
Gruß Elmar
- Als Antwort vorgeschlagen Christoph Muthmann Montag, 21. November 2016 07:57
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 30. November 2016 11:15
-
Hallo Elmar,
vielen Dank für deine Antwort.
Als Data Source ist folgendes im Code eingetragen:SqlConnection cn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\[...]customerManagementDoc.mdf;Integrated Security=True;Connect Timeout=30");
Daraus schließe ich, dass es eine Local DB ist?
Sprich ich müsste folgendes installieren:
https://msdn.microsoft.com/de-de/library/hh510202.aspx
Und lediglich den Dateipfad ändern? Oder muss mein Freund auch noch etwas ändern?Viele Grüße
David -
Hallo,
es ist die Verbindung zu einer LocalDb.
Du musst nichts installieren, wenn Du anstatt dessen die Verbindungszeichenfolge auf Deine SQL Server Instanz änderst und den Pfad dorthin, wo Du die Dateien abgelegt hast.
Anschließend das Projekt neu kompilieren.
An Deinen Freund den Ratschlag, solche Verbindungen in die Anwendungseinstellungen zu verlegen, da kann man sie jederzeit ändern.
Gruß Elmar
- Bearbeitet Elmar BoyeEditor Samstag, 19. November 2016 15:45
-
Da ich alle SQL Server 2016 Instanzen deinstalliert habe, wollte ich nun eine Neue anlegen.
Dabei muss ich nach dem Installationsmedium suchen.
Bei mir ist das folgender Pfad:
C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\SQLServer2016
Da ist jedenfalls die Setup.Exe von SQL Server 2016 drin (automatisch angelegt)...
Wähle ich den SQLServer2016 aus, kommt die Fehlermeldung:"C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\SQLServer2016 ist kein gültiger Installationsordner."
In den Optionen vom Installationscenter ist auch kein Installationsmedium eingetragen, hier selbes Spiel wo oben: ".... ist kein gültiger Installationsordner".Was stimmt hierbei nicht? Google spuckt mir da leider auch nicht viel zu aus.
Viele Grüße
DavidEdit: Ich habe eben mal meine ganzen Ordner durchsucht, die etwas mit SQL zu tun haben.
Folgende Ordner sind vorhanden:
C:\SQLServer2016MediaC:\Program Files\SQL Server 2014 (samt Setup.exe etc)
C:\Program Files\Microsoft SQL Server\80
C:\Program Files\Microsoft SQL Server\90
C:\Program Files\Microsoft SQL Server\100
C:\Program Files\Microsoft SQL Server\110
C:\Program Files\Microsoft SQL Server\120
C:\Program Files\Microsoft SQL Server\130
C:\Program Files\Microsoft SQL Server\Client SDK
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER
C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS
C:\Program Files (x86)\Microsoft SQL Server (ebenfalls mit den o.g. bis auf die letzten beiden)
C:\Program Files (x86)\Microsoft SQL Server Compact Edition (leer)
Kommt mir ein wenig viel vor?
- Bearbeitet David JNG Samstag, 19. November 2016 17:35
-
Hi David,
wenn Du den SQL Server 2016 installieren willst, musst Du das Installationsmedium in das CD-Laufwek einlegen oder ein Installtionsverzeichnis mit dem Inhalt der CD bzw. ISO.Datei bereitstellen. Irgendetwas aus dem Programmordner reicht da nicht bzw, erdordert zusätzlich das Installationsmedium (CD oder Inhalt der Installations-CD).
--
Viele Grüsse
Peter Fleischer (MVP Reconnect, Partner)
Meine Homepage mit Tipps und Tricks- Bearbeitet Peter Fleischer Samstag, 19. November 2016 18:02
-
Hallo David,
das dürfte von Deinen verschiedenen Installationsversuchen herrühren... So kommen die Verzeichnisse von SQL Server 2000 (80) - 2016 (130) zusammen, wobei einige aus Kompatibilitätsgründen auch von neueren Versionen angelegt werden können.
Die Existenz der Verzeichnisse allein besagt nichts, vielmehr wie viel dort noch enthalten ist; denn nach einer Deinstallation bleibt das Hauptverzeichnis oft (manchmal mit wenigen Resten) noch erhalten.
Wenn MSSQL13.MSSQLSERVER und MSSQL13.SQLEXPRESS mit Inhalten existieren, so hast Du zumindest eine Standard-Instanz und eine SQL Server Express Instanz installiert - wobei die erste Standard-Instanz für private Zwecke reichen sollte.
Am schnellsten erhältst Du einen Überblick in dem Du den SQL Server Konfigurationsmanager aufrufst. Der zeigt alle installierten Instanzen an und ob sie laufen.
Gruß Elmar
-
Vielen Dank, Peter!
Das hat funktioniert.Elmar:
Im Konfigurationsmanager finde ich unter SQL-Server Dienste den SQL-Server "MSSQL", welcher aktuell ausgeführt wird. Klicke ich im Kontextmenü auf "Eigenschaften" ist im Tab "Anmelden" "Dieses Konto" mit dem Anmeldename "NT Service\MSSQLSERVER" und einem längeren Passwort hinterlegt (mit Passwortmaske, keine Ahnung welches PW dahinter steckt, jedenfalls keines von mir). Außerdem sehe ich folgenden Pfad: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVERWie du bereits meintest, scheint das die Standard-Instanz zu sein.
Nebenbei gibt es dann noch einen SQL-Server Browser und Agent (beide deaktiviert).
Lege ich nun die DB-Datei in den MSSQL13.MSSQLSERVER und ändere die DataSource dementsprechend dahin?
Viele Grüße
David -
Hallo,
dann ändere bitte die Verbindungszeichenfolge auf:
Data Source=(local);AttachDbFilename=<Pfad zur mdf>\customerManagementDoc.mdf;Integrated Security=True;
wobei <Pfad zur mdf> das Verzeichnis mit der Datenbank-Datei (und ggf. dem Protokoll .ldf) ist.
An dem Konto für den Dienst musst (und solltest) Du nichts ändern.
Gruß Elmar
-
Hallo Elmar,
Habe ich gemacht, beim Aktualisieren der DB via Server Explorer kommt immer noch die gleiche Fehlermeldung wie im Eingangspost genannt.Beim Kompilieren des Projekts kommt "Fehler beim Anfügen einer automatisch benannten Datenbank für die Datei <Pfad zur Datei>. Eine Datenbank mit diesem Namen ist bereits vorhanden, die angegebene Datei kann nicht geöffnet werden, oder sie befindet sich in der UNC-Freigabe.".
- Bearbeitet David JNG Samstag, 19. November 2016 22:49
-
Hallo David,
leider ist die Fehlermeldung für AttachDbFileName sehr allgemein, nach dem Motto "es kann alles sein". Da ich nun nicht weiss, was Du alles probiert hast, und davon evtl. weitere Probleme herkommen. Es kann sein:
- Die Datenbank ist bereits geöffnet, insbes. wenn man sie im Data Explorer aufmacht.
- Oder auch, der SQL Server Dienst hat keine Berechtigung auf die Datei zuzugreifen.
- Oder Du hast den Pfad nicht entsprechend angegeben, also <Pfad zur Datei> richtig ersetzt.
- Auch möglich wäre, dass der SQL Server Dienst gar nicht läuft.
Was Du zuerst tun solltest: Versuche die Datenbank über das SQL Server Management Studio anzufügen.
Treten dort Fehler auf, die auf Berechtigungsprobleme hinweisen, kopiere die Datenbank in das Datenbank-Verzeichnis der SQL Server Instanz.
Ist das Anfügen erfolgreich, kannst Du die Datenbank direkt ansprechen mit:
Data Source=(local);Database=customerManagementDoc;Integrated Security=True;
unter der Voraussetzung der logische Datenbankname entspricht dem Dateinamen (ohne .mdf), ansonsten musst Du ihn anpassen.
Gruß Elmar
-
Hallo Elmar,
es sieht so aus, als würde es laufen.Die DB hatte ich schon vorher im Management Studio angefügt.
Als Data Source habe ichData Source=(local);Database=customerManagementDoc.mdf;Integrated Security=True;
verwendet. Ohne die .mdf-Endung kam eine Fehlermeldung ("Die von der Anmeldung angeforderte DB kann nicht geöffnet werden. Fehler bei der Anmeldung. Fehler bei der Anmeldung für den Benutzer "MicrosoftAccount\MeineOutlookMail".
Mit .mdf-Endung kann ich das Projekt problemlos kompilieren und ich sehe im SQL-Server-Objekt-Explorer die DB samt Tabellen. Lediglich der Server-Explorer lässt mich keine Datenbanken oder Verbindungen hinzufügen (selber Fehler wie im Eingangspost). Nun Ja, jedenfalls kann ich nun erstmal weiter arbeiten. :) Vielen Dank!
Viele Grüße
David