Announcement

Collapse
No announcement yet.

Zugriff auf fremden SQL-Server geht nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf fremden SQL-Server geht nicht

    Hallo zusammen!

    Ich habe ein Problem beim Zugriff auf einen externen SQL-Server (sqlexpress 2005) .

    Auf dem SQL-Server liegt eine Datenbank, die ich regelmäßig lokal auf einem Notebook einspielen will. Dazu ziehe ich einfach ein Backup, welches dann auf den Notebook restored wird.
    Mit dem SQL Server Management Studio Express funktioniert das auch wunderbar.

    Nun möchte ich diesen Prozess aber automatisieren und per Programm erledigen. Mein Programm macht auch wie gewünscht Backup und Restore. Aber leider nur lokal auf Notebook!

    Ich verwende natürlich im Programm die gleichen Zugangsdaten, wie im Management Studio. Daher vermute ich, daß mein Problem eher in der Übergabe der Parameter in meinem C#-Programm liegt.
    Bei C# bin ich noch ziemlich neu....

    Die Daten liegen auf dem Server in einer eigenen Instanz "Data". Auf dem Notebook in der Standard-Instanz.

    Wenn ich mein Programm ausführe erhalte ich bei "bck.SqlBackup(srv)" eine Exception mit der Message "Fehler bei Sichern von Server 'Notebook' ". Mein Eintrag für den Server/Instanznamen wird also völlig ignoriert!
    Auf dem Notebook habe ich andere Zugangsdaten, so das die Anmeldung da natürlich fehl schlägt.

    Ich habe natürlich schon im Internet herumgesucht. Aber irgendwie kann ich mit keinem Rezept mein Problem in den Griff bekommen.

    Irgendeine Idee?

    So sieht mein Code aus:

    Code:
                // Datenbank exportieren (backup)
                Server srv = new Server();
                srv.ConnectionContext.ServerInstance = "server\\Data";
                srv.ConnectionContext.LoginSecure = false;
                srv.ConnectionContext.ConnectAsUserName = "nextX";
                srv.ConnectionContext.ConnectAsUserPassword = "geheim";
    
                Backup bck = new Backup();
                bck.Action = BackupActionType.Database;
                bck.Database = "MeineDaten";
                bck.Devices.Clear();
                bck.Incremental = false;
                bck.Initialize = true;
                bck.LogTruncation = BackupTruncateLogType.Truncate;
    
                BackupDeviceItem BackupItemDevice = new BackupDeviceItem(@"c:\DATA-Backup.bak", DeviceType.File);
                bck.Devices.Add(BackupItemDevice);
    
                try
                {
                    bck.SqlBackup(srv);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

  • #2
    Auch hallo,

    das ist (zugegebenermassen) ins Blaue geraten:
    -IP-Adresse des Zielservers statt "server\" eintragen
    -Remote Zugriff auf dem fremden Server aktivieren (via Management Studio)
    -einen Blick ins Unterforum werfen: http://entwickler-forum.de/forumdisplay.php?f=41

    Zusatz:
    -unter insidesql.org nach "Remote" suchen : http://support.microsoft.com/kb/914277
    Zuletzt editiert von Markus Lahr; 22.02.2009, 22:18.
    MfG
    Cheat-Sheets for Developers / Programming Quotes

    Comment


    • #3
      Remote Zugriff auf dem fremden Server aktivieren (via Management Studio)
      dürfte dafür weniger notwendig sein.

      Eher wäre zu prüfen, ob der Server überhaupt eine Verbindung hat und dann prüfen, ob er auf dem Port erreichbar ist
      Christian

      Comment


      • #4
        Originally posted by Christian Marquardt View Post
        dürfte dafür weniger notwendig sein.

        Eher wäre zu prüfen, ob der Server überhaupt eine Verbindung hat und dann prüfen, ob er auf dem Port erreichbar ist
        Danke für die Tipps, aber ich habe zwischenzeitlich die Lösung gefunden:

        Der Remote-Zugriff funktioniert übrigens einwandfrei, da ich ja mit dem Management-Studio zugreifen kann.

        Wie vermutet, liegt das Problem in meinen mangelnden C#- bzw. .Net-Kenntnissen:

        Ich wusste nicht, wie ich an eine aussagekräftigere Fehlermeldung komme. Das habe ich nun irgendwo im Netz gefunden (Stichwort "InnerException"). Da habe ich herausgefunden, daß nur der Login nicht klappte.

        Richtig muß mein Source diese Zeilen enthalten:
        Code:
        srv.ConnectionContext.Login = "nextX";
        srv.ConnectionContext.Password = "geheim";
        Irgendwo habe ich wohl mal das falsche Beispiel abgekupfert...
        Auf den lokalen Server greife ich mit Windows-authentifiierung zu. Da braucht es keinen User und Passwort....

        AARGH

        Bis zum nächsten mal.

        N.

        Comment

        Working...
        X