none
SQL Express 2014 und Zugriffsrechte RRS feed

  • Frage

  • Hallo,

    ich habe folgendes Problem. Ich möchte in C# via SMO ein Backup einer Datenbank ziehen um dieses Backup dann auf einer neuen Instanz zu installieren. Das Backup ziehen klappt ohne Probleme. Verbindung zu beiden Instanzen ist auch da. Aber immer wenn ich Das Backup auf der 2. Instanz installieren will bekomme ich den Fehler das Zugriffsrechte fehlen würden. Alle Ordner in Instanz 1 und 2 haben vollzugriff, mir ist es ein Rätsel wo da der Fehler liegt.

    Kann mir da jemand weiter helfen?

    Danke :)

    Donnerstag, 2. Juni 2016 13:29

Antworten

Alle Antworten

  • Hi,

    poste bitte die exakte und vollständige Fehlermeldung. Ohne die können wir leider nichts machen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 2. Juni 2016 13:32
    Moderator
  • Microsoft.SqlServer.Management.Smo.FailedOperationException:

    Fehler bei Wiederherstellen für Server '.\SQLTEST'

    Microsoft.SqlServer.Management.Common.ExecutionFailureException:

    Ausnahme beim Ausführen einer Transact-SQL-Anweisung oder eines Transact-SQL-Batches

    System.Data.SqlClient.SqlException:

    Das Sicherungsmedium C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Backup\AdventureWorks2014.bak kann nicht geöffnet werden. Betriebsfehler5(Zugriff verweigert). RESTORE DATABASE wird fehlerbedingt beendet

    Donnerstag, 2. Juni 2016 13:43
  • Hi,

    die Fehlermeldung ist recht eindeutig. Leg die .bak Datei einfach in einen anderen Ordner, bspw. C:\temp und probier es dann erneut.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 2. Juni 2016 13:47
    Moderator
  • Betriebsfehler5(Zugriff verweigert).


    Der Service Account der 2ten Instanz hat keinerlei Leserechte auf die Ordner der ersten Instanz. Du musst das Backup File in einem Ordner ablegen, auf den beide Instanzen Lese/Schreibrechte haben.

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Donnerstag, 2. Juni 2016 13:49
  • Hallo,

    bei der Installation werden für das Backup Verzeichnis (und alle anderen) restriktive Rechte festgelegt. So hat auf das Backup-Verzeichnis in der Regel nur das Dienstkonto der Instanz Zugriff (neben System, Administratoren).

    Wenn eine Du auf einen anderen Server / Instanz zurück sicherst, so hat sie in der Regel ein anderes Konto und damit auch keinen Zugriff. (Welche Rechte Du / das ausführende Programm haben, ist dabei belanglos).

    Entweder verwendest Du ein Verzeichnis auf das beide Instanzen Zugriff haben oder aber Du änderst die Rechte ab.

    Siehe auch Sichern von Daten- und Protokolldateien (Backups werden ebenfalls beschrieben).

    Gruß Elmar

    Donnerstag, 2. Juni 2016 13:54
    Beantworter
  • vielen Dank für die schnellen Antworten. Ich probier es aus und melde mich wieder
    Donnerstag, 2. Juni 2016 14:00
  • Hallo,

    ich habe nun versucht im Management Studio die Speicherorte der Datenbanken und Backups zu ändern. Habe auch die Dienste beendet und neu gestartet und die Änderung scheint auch übernommen worden zu sein. dennoch habe ich das Problem der Zugriffsrechte. Er versucht laut Fehler Meldung immer noch auf den .\DATA Ordner zuzugreifen auf dem ich ja mit Instanz 2 keine rechte habe.

    Muss ich noch was beachten um den Speicherort zu ändern?

    Ich habe auch auf beiden Instanzen User mit den erforderlichen Berechtigungen angelegt, ohne Erfolg.

    Wo mache ich den Fehler bitte?

    Danke :)  

    Freitag, 3. Juni 2016 09:00
  • Was ich auch noch nicht so ganz verstehe ist warum er überhaupt auf die AdventureWorks2014.mdf im Datenbank Ordner der Instanz 1 zugreifen will. Ich habe ja ein Backup gezogen und daraus baut er sich doch die neue Datenbank oder? Wozu dann noch der Zugriff auf die orginal Datenbank in Instanz 1?
    Freitag, 3. Juni 2016 09:03
  • Hi,

    wo will denn da was auf die .mdf zugreifen? Ich sehe lt. deiner Meldung nur den Zugriff auf die .bak, also die Sicherung.

    Zu deinem vorhergehenden Posting: Lies doch bitte nochmal, was wir beschrieben haben. Du sollst nicht primär an den Rechten irgendwelcher SQL Verzeichnisse rumfummeln, sondern einfach die .bak Datei, die Du für die Wiederherstellung verwenden willst, in einen anderen Ordner legen, bspw. C:\temp. Der ist in der Regel nicht so restriktiert, dass nur sehr begrenzte Zugriffe möglich sind.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 3. Juni 2016 09:16
    Moderator
  • Das habe ich gemacht. Backup liegt in C:\temp und ich bekomme immer noch die Fehlermeldung das er nicht auf .\DATA\AdventueWorks2014.mdf zugreifen kann

    Das Betriebssystem hat bei 'RestoreContainer::ValidateTargetForCreation für C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\AdventureWorks2014_Data.mdf' den Fehler '5(Zugriff verweigert)' zurückgegeben

    und genau das ist was ich nicht verstehe. Hier mal mein Code dazu:

    Server srv = openSQL(txtServerRestore.Text);
                if (srv != null)
                {
                    try
                    {
                        Restore rstDatabase = new Restore();
                        rstDatabase.Action = RestoreActionType.Database;
                        rstDatabase.Database = "AdventureWorks2014";
                        BackupDeviceItem bkuDevice = new BackupDeviceItem(backuppath, DeviceType.File);
                        rstDatabase.Devices.Add(bkuDevice);
                        rstDatabase.ReplaceDatabase = true;
                        rstDatabase.SqlRestore(srv);
                        lblRestore.Content = "Database restored";
                        srv.ConnectionContext.Disconnect();
                    }
                    catch (SmoException em)
                    {
                        MessageBox.Show(em.ToString());
                    }
                }

    backuppath ist C:\temp und srv ist erfolgreich mit Server instanz 2 verbunden

    Freitag, 3. Juni 2016 09:32
  • ich habe nun versucht im Management Studio die Speicherorte der Datenbanken und Backups zu ändern.

    Du meinst in den Server-Einstellungen? Das sind nur die Default-Werte für neue Datenbanken/Backups, hat sonst aber keine Auswirkung

    Er versucht laut Fehler Meldung immer noch auf den .\DATA Ordner zuzugreifen auf dem ich ja mit Instanz 2 keine rechte habe.

    In der Backup-Datei wird der ursprüngliche Speicherort der Datenbank-Dateien mit vermerkt und wenn man beim Restore mit der MOVE Option keinen anderen Dateinamen angibt, wird der ursprüngliche Dateinamen verwendet, also der aus der anderen Instanz. Also MOVE Option beim Restore mit dem neuen Dateinamen für die zweite Instanz angeben.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 3. Juni 2016 09:36
  • Hallo,

    Du musst ggf. auch die Pfade anpassen, ein Restore ohne alles versucht die Original-Pfade zu verwenden.

    Ist die Datenbank bereits vorhanden, so braucht es zudem die Replace Option. Und es sollte niemand auf die Datenbank zugreifen (inkl. des Zurücksichernden ;)

    Ich hatte mal eine SMO befreite Version in VB.NET gepostet unter: backup and restore table using sql database in vb.net

    Gruß Elmar

    Freitag, 3. Juni 2016 09:45
    Beantworter
  • ja, ich hatte das ganze anfangs mit einer normalen sqlconnection und und sqlcommand gemacht. da sende ich dem server ja einfach nur den sql befehl und dort habe ich with move eingebaut und es funktionierte auch alles. nun will ich ja wie gesagt das ganze mit smo machen und landete bei besagtem problem.

    Nun noch meine letzte frage. wie setze ich die Move Option in SMO bitte?

    Freitag, 3. Juni 2016 09:55
  • Freitag, 3. Juni 2016 10:08
    Beantworter
  • super, vielen Dank für die hilfe - ich werde es gleich ausprobieren :)
    Freitag, 3. Juni 2016 10:09
  • Vielen Dank nochmal - mit Relocate habe ich es endlich hinbekommen. Danach war noch ein kleines Problem mit den Logical Names aber das war schnell gelöst.....

    Gruß Oliver

    Freitag, 3. Juni 2016 11:07