Announcement

Collapse
No announcement yet.

Mit SQLCMD auf Server zugreifen

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

  • Mit SQLCMD auf Server zugreifen

    Hallo,
    ich habe ein Problem mit SQL Server 2005 Express:

    Ich verusche mich mit einem normalen Domänen Benutzer über SQLCMD den lokalen SQL 2005 Server Express anzumelden.
    Installiert wurde der Server auf dem Rechner mit einem Domänen Administrator Account.

    so komme ich auf den Server:

    SQLCMD -S Computername\SQLExpress

    Aber die Datenbank, auf die ich zugreifen möchte, kann ich so nicht erreichen. Ich müsste mich wie folgt anmelden:

    SQLCMD -S Computername\

    Das funktioniert aber nicht (mit dem Domänen Administrator schon, da kann ich die Datenbank sehen)


    Ich möchte mit dem Domänenbenuzter folgendes tun:
    SQLCMD.EXE -E -S Server -q "BACKUP DATABASE adonisdb TO DISK = 'C:\1.BAK' with init"


    Was muss ich tun?

    Vielen Dank!

  • #2
    Hallo hep83,
    SQLCMD -S Computername\
    Das funktioniert aber nicht
    Das funktioniert natürlich nicht, Du musst schon den Instanzen-Namen angeben. Das ist so, als würdest Du im Browser http://www. eingeben, da erreichst Du auch keine Site mit.

    Ich tippe einfach mal darauf, das der Domänen-Benutzer, mit dem Du Dich anmelden willst, einfach keine Berechtigungen für die Datenbanken / zum Sichern hat.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Hallo, vielen Dank für die Antwort.

      Ich tippe einfach mal darauf, das der Domänen-Benutzer, mit dem Du Dich anmelden willst, einfach keine Berechtigungen für die Datenbanken / zum Sichern hat.
      Der Benutzer hat die nötigen Rechte. Ich versuche mein Problem mal genauer zu beschreiben:

      Ich habe ein Programm als Domänen-Admin installiert, dass eine Datenbank auf dem SQL Express Server nutzt.
      Nun möchte ich eine automatische Sicherung der DB realisieren, mit diesem Befehl, der durch einen geplanten Task aufgerufen werden soll, wenn sich der Domänen-Benutzer anmeldet.

      SQLCMD.EXE -E -S Server -q "BACKUP DATABASE adonisdb TO DISK = 'C:\1.BAK' with init"

      Das Problem:

      Die Datenbank scheint nicht in der standard-Instanz "sqlexpress" zu liegen, sondern eine Stufe tiefer?? Wie komme ich darauf:

      Wenn ich mich als Domänen-Admin mit dem Management-Studio beim SQL Server anmelde, sehe ich die Datenbank nicht, wenn ich mich wie folgt verbinde:

      Servername: Computer1\sqlexpress

      Ich sehe die Datenbank nur, wenn ich mich wie folgt verbinde:

      Servername: Computer1


      Wenn ich als Domänen-Admin SQLCMD.EXE -E -S Computer1 ausführe, kann ich mich einloggen, als Domänen-Benuzter geht das nicht. Fehler:

      PHP Code:
      HResult '0x4818'Ebene '14'Status '1'
      'Login failed for user '
      ESA-PDC\j.themann'.'
      HResult '0x4'Ebene '16'Status '1'
      'Shared Memory-Provider: E/A-Fehler bei Lese-/Schreibvorgang [4]. '
      SqlcmdFehlerMicrosoft SQL Native Client Kommunikationsverbindungsfehler
      Richte ich also eine geplanten Task mit dem Domänen-Benutzer ein, läuft der Task schief, ohne die Angabe von einer Instanz geht's halt nicht, und meine Datenbank liegt nun mal nicht in der SQLEXPRESS Instanz. Auf die DB Master etc. kann ich als Benuzte problemlos zugreifen.

      Nun dachte ich natürlich, warum nicht einfach den Task über ein Admin Konto ausführen lassen. Problem: Das funktioniert nicht, es fehlen angeblich Rechte, unser Systemadministrator kann den Fehler nicht finden. Zudem ist ihm das Sicherheitsrisiko zu groß, in einen Task ein Domänen-Admin Passwort einzutragen.

      Einzige Lösung die ich sehe ist also, den Zugriff als Domänen-Benutzer auf die DB des Programmes hinzubekommen...

      Noch mal vielen Dank für eure Hilfe, und schuldigung für den langen Text, aber kürzer kann ich das nicht erklären.

      Gruß

      Comment


      • #4
        Sieh bitte mal in der Diensteverwaltung nach, ob 2 oder gar mehrere und wenn welche Sql Server Instanzen laufen.
        Es müsste mindestens den Dienst "SQL Server (SQLEXPRESS)" geben; der Instanzenname steht in Klammern dahinter.
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          SQL Server (SQLEXPRESS) -> automatisch
          SQL Server Active Directory Helper -> deaktiviert
          SQL Server Browser -> deaktiviert
          SQL Server VSS Writer -> automatisch
          SQLServerAgent -> manuell

          Alle automatisch gestarteten Dienste laufen auch.

          Comment


          • #6
            hat dein MSSQLdienst-Benutzer Zugriff auf c:\?

            Comment


            • #7
              Hallo openshinok,

              wie finde ich das heraus? Darf er auf jeden Fall haben falls nötig. Also bis zum kopieren
              des Backups auf C: kommt es bis jetzt erst gar nicht, der Login am Server schlägt ja fehl...
              falls du das meinst.

              Gruß

              Comment


              • #8
                hm ich kann mich auch geirrt haben weil die Meldung nicht unbedingt auf dieses Problem schließen lässt...


                in deiner Installation deines MSSQL-Servers oder Express hast du einen Ordner Backup, gib den mal an Stelle von c:\ ein.

                Comment


                • #9
                  Hallo,

                  also mit den Zugriffsrechten auf C: hat es glaube ich nichts zu tun. Ich könnte mir vorstellen, dass es einfach nicht möglich ist mit einem Benuzter auf eine Datenbank ausßerhalb einer Instanz zuzugreifen. Mit dem Account, mit dem die Datenbank istalliert wurde, geht's aber.

                  Kann ich dem Benutzer nicht irgendein Recht geben, das der Admin-Account hatte....? Oder liegt's echt am Account Name?


                  Kann man bei Express eigentlich neue Instanzen anlegen?

                  Gruß

                  Comment


                  • #10
                    hallo,
                    neue Instanz = Express nochmal installieren und einen anderen als den bisher installierten Instanznamen angeben.


                    Gib deinem Domänen-Benutzer das Recht in MSSQL zu sichern. db_backupoperator auf die zu sichernde Datenbank könnte ausreichen. Wenns es dennoch nicht funktioniert, kannst du mal db_owner auf die Datenbank probieren und wenn das immer noch nicht hilft dann Versuche mal die Serverrolle serveradmin dem Benutzer zu geben. Die letzten beiden Vorschläge beruhen auf der Tatsache dass mir nicht genau geläufig ist welche Rechte du wirklich zum sichern benötigst in MSSQL aber das kannst du bei Bedarf bei Microsoft nachlesen.

                    Wenn ich mich nicht irre hast du nach wie vor die Anforderung dass der Dienstbenutzer deiner Express-Instanz auf das Verzeichnis welches du in der Batchdatei als Sicherungsziel angibst schreiben können muss.

                    Comment


                    • #11
                      was passiert eigentlich wenn du dich mit dem Domänenaccount (normaler Benutzer der auch den Task laufen lassen soll) am Management Studio anmeldest? Kannst du über das Studio dann ein Backup machen?

                      Comment


                      • #12
                        Hallo,

                        ich habe dem Benutzer alle Rechte verpasst. Daran liegt es aber nicht. Wie gesagt, ich komme ja gar nicht erst als Benuzter auf den Server, nur wenn ich mich bei einer Instanz anmelde. Nur Liegt die Datenbank nich in der Instanz, sonder "eine Stufe tiefer". Namenraumtechnisch imt Root-Verzeichnis

                        hier liegt meine Datenbank -> Computername\
                        und nur hier kann ich mich als Benutzer am Server anmelden -> Computername\SQLEXPRESS

                        Gruß

                        Comment


                        • #13
                          Hallo nochmal,
                          hab deinen letzten Eintrag gerade erste gelesen. Nein das geht nicht, ich sehe die Datenbank nicht, weil ich mich nur an SQLEXPRESS anmelden kann. Die Datenbank wird dann einfach nicht angezeigt

                          Comment


                          • #14
                            mich nur an SQLEXPRESS
                            Auf dem Rechner gibt es auch nur die eine Instanz "SQLExpress", wie der Auszug aus der Diensteverwaltung zeigt.

                            Wenn der Benutzer die Datenbank nicht "sehen" kann, liegt es daran, das er keine Berechtigungen für die Datenbank hat.
                            Olaf Helper

                            <Blog> <Xing>
                            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                            Comment

                            Working...
                            X