Datenbank kopieren / ersetzen

  • C#
  • .NET (FX) 4.0

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    Datenbank kopieren / ersetzen

    Guten Tag liebe VB Gemeinde,

    Zuerst ich bin ein Kompletter Anfänger in C# und in SQL Datenbanken.Hoffe bin hier für freundliche Hilfe im richtigen Forum/Bereich.
    Ich habe von meinem Chef den Auftrag bekommen das ich von einem Vorgänger das Programm soweit ergänzen soll das es auf anderen Computern läuft.
    Hauptproblem an dem Programm ist das er die Datenbank 1. via Visual Studio erstellt hat wodurch ich nicht darauf zugreifen kann, geschweige denn sie im Servermanager an Server anbinden kann um diese dort zu öffnen. Also scheint mir diese Datenbank ziemlich unbrauchbar da ich diese nicht weiter verwenden kann. Wenn ich nun eine exakte Datenbank anlege mit den gleichen Tabellen, Spalten etc habe ich das Problem das das Programm rumzickt da es nicht richtig die MID übernimmt. Gibt es noch irgendwelche Einstellungen etc die ich vielleicht dort übernehmen muss damit ich diese so Identisch wie möglich nachmachen kann ?

    Danke für die Hilfe :)
    Ja er hat wohl ein Dataset über Visual Studio erstellt.

    Auf der Fehlersuche wurde mir nun klar das die Originale Datenbank sich nicht auf den Server spielen lässt weil diese Version 852 ist und der Server nur Version 782 oder früher unterstützt. So wie ich das werde ich sie wohl downgraden müssen. Zumindest wenn dies möglich ist ?
    Zunächst mal solltest du klären, womit du's eiglich zu tun hast.
    Alle gängigen Datenbanken sind Sql-Datenbanken - also da sollteste schon rauskriegen, ob du mit Oracle arbeitest, Access, SqlServer, SqLite, MySql or whatever.

    Ohne das kann man keine Aussage treffen.
    Ich weiß auch nicht was mit Version 852 ist und Version 782 - Version von was?
    Also ich arbeite mit SQL Server.
    Und das mit den Versionen verstehe ich selbst nicht aber das ist zumindest das was im Fehlercode steht.Das schlimme ist ja das ich am gleichen Computer wie der Ersteller sitze und somit genau die gleichen Programme benutze. Deshalb sehe ich das er die Datenbank wohl via Visual Studio erstellt hat,was wohl bei einer Datenbank mit Pfad ganz ok ist aber für eine Globale Datenbank eher schlecht.Ich kann diese dort aber nicht mehr öffnen da sie angeblich nichtmehr vorhanden sei. Einfügen lässt sie sich auch nicht mehr... Wenn ich es über den Microsoft SQL Server Manager versuche, mit dem ich schon Erfahrung hab bei mdf Dateien,bekomme ich diese genannte Fehlermeldung mit der Version. Ich weis ja selbst nicht was für eine Version gemeint ist. Vorallem weil der SQL Server auf dem Computer nicht zwichendrin mal einfach gedownpatched wurde. Was meint ihr ?

    Der gennante Fehlercode beim Einfügen der mdf:

    Fehler bei Datenbank anfügen für Server 'DESKTOP-0QT9SRU\SQLEXPRESS'. (Microsoft.SqlServer.Smo)

    Hilfe erhalten Sie durch Klicken auf: go.microsoft.com/fwlink?ProdNa…fügen+Server&LinkId=20476

    ZUSÄTZLICHE INFORMATIONEN:

    Ausnahme beim Ausführen einer Transact-SQL-Anweisung oder eines Transact-SQL-Batches. (Microsoft.SqlServer.ConnectionInfo)

    ------------------------------

    Die C:\USERS\AOP UG\DESKTOP\ABSCHLUSSPROJEKT FSTINF15 MARIO WARREN - PERSO\PERSO\PERSO\PERSODB.MDF-Datenbank kann nicht geöffnet werden, weil sie die Version 852 aufweist. Dieser Server unterstützt Version 782 und früher. Ein Herabstufungspfad wird nicht unterstützt.
    Die neue C:\USERS\AOP UG\DESKTOP\ABSCHLUSSPROJEKT FSTINF15 MARIO WARREN - PERSO\PERSO\PERSO\PERSODB.MDF-Datenbank konnte nicht geöffnet werden. CREATE DATABASE wird abgebrochen. (Microsoft SQL Server, Fehler: 948)
    Sieht man ja schon. Ist ein MS SQL Express Server.
    Vermutlich bist du nicht mit dem selben User wie der Ersteller eingeloggt und kannst dich mit deinem User nicht zur Datenbank connecten?
    Oder der Dienst läuft nicht. Schau mal unter Dienste nach MS SQL Server
    Das ist meine Signatur und sie wird wunderbar sein!

    akeros schrieb:

    C:\USERS\AOP UG\DESKTOP\ABSCHLUSSPROJEKT FSTINF15 MARIO WARREN - PERSO\PERSO\PERSO\PERSODB.MDF-Datenbank


    Bis du in Windows als "AOP UG" angemeldet? Sonst könnte es mit dem Berechtigungen schwierigkeiten geben wenn du bei einem anderen User auf dem Desktop dateien ändern willst.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    Bis du in Windows als "AOP UG" angemeldet?
    Dies hier ist ein Firmencomputer also hat der Vorgänger von dem das Programm ist auch den gleichen Benutzer gehabt, womit es auch keine Probleme mit den Rechten geben sollte.

    mrMo schrieb:

    Wie stellt das Programm die Verbindung zur DB her?
    Vorher über einen Dateipfad zu einer Lokalen Datenbank. Dies sollte ich ändern das er sich die Datenbank von einem Lokalen Server holt. Grund dafür ist das die Datenbank dann Global auf dem Rechner verfügbar ist. Sagt zumindest mein Chef. Tut aber so weit ich weis nichts zur sache da es ja darum geht das ich nun das Problem im Programm habe das meine erstellte Datenbank die ich 1zu1 von der anderen Abgetippt habe nun nicht funktioniert.
    Also ich kenne es so, dass man in seinem Programm irgendwo nen ConnectionString rumfahren hat, der angibt wo die DB liegt und und mit welchem Benutzer die Anmeldung erfolgt. Kannst du den finden und hast du den bearbeitet?

    Man kann jedoch glaub auch eine Verbindung über den Designer von VS herstellen, das mach ich aber nie und kenne mich daher damit nicht aus.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    mrMo schrieb:

    Also ich kenne es so, dass man in seinem Programm irgendwo nen ConnectionString rumfahren hat, der angibt wo die DB liegt und und mit welchem Benutzer die Anmeldung erfolgt. Kannst du den finden und hast du den bearbeitet?


    So hatte es der Vorgänger auch gemacht. Ich sollte laut angaben meines Chefs nun eine Globale Datenbank machen. Ich mache C# erst seit 2 Wochen also nicht wunder falls es unsauber ist.Das 4 zeilige Kommentar ab Zeile 5 ist die Verbindung zur Lokalen Datenbank von dem Vorgänger.Dieses hatte ich nur raus Kommentiert. Der Rest ist von mir.

    C#-Quellcode

    1. private SqlConnection dbVerbindung;
    2. private OOB.Mitarbeiter mitarbeiterObj;
    3. private SqlDataReader reader;
    4. private string dbpfad = Application.StartupPath; //holt aktuellen Pfad und schreibt es in die Variable
    5. //public DBController()
    6. //{
    7. //this.dbVerbindung = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=" + dbpfad + "\\DB\\PersoDB.mdf; Integrated Security=True;Connect Timeout=30"); //Verbindung zur Datenbank aufbauen mit relativem Pfad
    8. //}
    9. public DBController()
    10. {
    11. //deklarierung der Service.xml
    12. string servicexml = dbpfad + "/Service.xml";
    13. XPathDocument xdoc = new XPathDocument(servicexml);
    14. XPathNavigator xnav = xdoc.CreateNavigator();
    15. string ssqlDataSource = "";
    16. string ssqlInitialCatalog = "";
    17. string ssqlUserID = "";
    18. string ssqlPassword = "";
    19. //XML Navigator
    20. xnav.MoveToRoot();
    21. //variablen zuweisen
    22. ssqlDataSource = xnav.SelectSingleNode("/Service/DBConnection/SQLDataSource").Value;
    23. ssqlInitialCatalog = xnav.SelectSingleNode("/Service/DBConnection/SQLInitialCatalog").Value;
    24. ssqlUserID = xnav.SelectSingleNode("/Service/DBConnection/UserID").Value;
    25. ssqlPassword = xnav.SelectSingleNode("/Service/DBConnection/Password").Value;
    26. //verbindung DB
    27. this.dbVerbindung = new SqlConnection("Server="+ ssqlDataSource +";Initial Catalog="+ ssqlInitialCatalog +";Integrated Security=True");
    Die Version 852 ist wohl SQL Server 2016. Version 782 ist SQL Server 2014.
    Schau doch mal in den Diensten was für ein SQL Express Server installiert ist.

    Was steht in der /Service.xml"; XML als Service/DBConnection/SQLDataSource"
    Das ist meine Signatur und sie wird wunderbar sein!
    Der Pfad zu deiner Datenbank liegt im dem XML-Dokument Service.xml und liegt im gleichen Ordner wie auch das Progamm liegt.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Ok, auf dem Server ist aktuell nen SQL-Server installiert? Jetzt kriegst du die alte DB da nicht rein weil die SQL-Server Version auf dem neuen Server zu hoch ist?

    Übrigens sieht es so aus, als wenn dein Vorgänger den WindowsUser zur Anmeldung verwendet.

    Hier müsste der Connection string noch entsprechend erweitert werden.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Mono schrieb:

    Die Version 852 ist wohl SQL Server 2016. Version 782 ist SQL Server 2014.
    Schau doch mal in den Diensten was für ein SQL Express Server installiert ist.

    Was steht in der /Service.xml"; XML als Service/DBConnection/SQLDataSource"

    Es ist 2014 installiert. Darf die Version nicht ändern da Firmencomputer. Muss also mit 2014 arbeiten.
    SQLDataSource steht der SQL Server Name (hier auf dem Computer DESKTOP-0QT9SRU\SQLEXPRESS) der dann auf anderen Computern nur noch geändert werden muss und dann noch die Datenbank auf den Server eingebunden. So in etwa nach dem Prinzip, welches auch Funktioniert. Leider macht die Datenbank da nicht mit...
    Kannst du dich auf dem Server mittels Zugangsdaten per Management Studio anmelden? Ist in diesem SQL-Server deine DB bereits drin und du kannst sie über das Management Studio einsehen?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    mrMo schrieb:

    Kannst du dich auf dem Server mittels Zugangsdaten per Management Studio anmelden? Ist in diesem SQL-Server deine DB bereits drin und du kannst sie über das Management Studio einsehen?



    Nein kann ich nicht. In dem Express Server war sie nie enthalten also denke ich mal das sie auf dem simulierten Server von Visual Studio erstellt wurde. Was auch einen Sinn machen würde wegen der Version. Wenn ich seine Datenbank versuche zu öffnen in Visual Studio dann bekomme ich eine Fehlermeldung das sie angeblich nicht da wäre. Was sie aber ist da ich wenn ich das Programm in Visual Studio starte alles normal ist und ich die Datenbank bearbeiten kann.

    Fehlermeldung : Die Datei oder Assembly "Microsoft.SqlServer.Managment.sdk.Sfc, Version = 11.0.0, Culture = neutral, PublicKeyToken=89845dcd8080cc91" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
    Langsam blick ich nicht mehr durch. Magst du vielleicht einmal sauber des Status quo hier beschreiben? Also was ist wo installiert und welche DB ist wo.

    Normalerweise installiert man den SQL-Server auf dem Server, "exportiert" die DB aus dem alten SQL-Server und hängt sie in den neuen. Dann passt man den Connectionstring an und fertig.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen