Benutzer mit den meisten Antworten
SQL Express 2014 und Zugriffsrechte

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 :)
Antworten
-
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- Als Antwort vorgeschlagen Christoph Muthmann Freitag, 3. Juni 2016 11:49
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 16. Juni 2016 10:42
-
- Als Antwort vorgeschlagen Andreas.WolterMicrosoft employee Donnerstag, 2. Juni 2016 21:02
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 16. Juni 2016 10:43
-
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
- Als Antwort vorgeschlagen Christoph Muthmann Freitag, 3. Juni 2016 11:49
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 16. Juni 2016 10:44
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 -
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
-
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- Als Antwort vorgeschlagen Christoph Muthmann Freitag, 3. Juni 2016 11:49
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 16. Juni 2016 10:42
-
- Als Antwort vorgeschlagen Andreas.WolterMicrosoft employee Donnerstag, 2. Juni 2016 21:02
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 16. Juni 2016 10:43
-
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
- Als Antwort vorgeschlagen Andreas.WolterMicrosoft employee Donnerstag, 2. Juni 2016 21:02
-
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 :)
-
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?
-
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 -
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
-
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] -
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
- Als Antwort vorgeschlagen Christoph Muthmann Freitag, 3. Juni 2016 11:49
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 16. Juni 2016 10:44
-
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?
-
Hallo,
über die RelocateFiles Eigenschaft. Siehe dazu:
How to restore SQL Server database backup to a newly created database?
und ersetzen durch die ReplaceDatabase Eigenschaft.
Gruß Elmar