Ich versuche, eine Kopie von msdban meine Workstation SQL Server 2012 Developer Edition unter Windows 8.1 anzuhängen , um das in dieser Frage beschriebene Problem nachzuahmen , bei dem das OP versucht, fehlende Jobs aus einer fremden MSDB wiederherzustellen.
Ich habe folgende Aktionen ausgeführt:
use master;
backup database msdb to disk='C:\sqlserver\test.bak';
go
restore database msdbtest from disk='c:\sqlserver\test.bak'
with move 'MSDBData' to 'C:\SQLServer\Data\msdbtest_data.mdf'
, move 'MSDBLog' TO 'C:\SQLServer\Logs\msdbtest_log.ldf';
go
Ich habe dann den SQL Server-Dienst gestoppt, eine Kopie von C:\SQLServer\Data\msdbtest_data.mdfund erstellt C:\SQLServer\Logs\msdbtest_log.mdfund SQL Server neu gestartet.
Ich habe dann folgendes durchgeführt:
drop database msdbtest;
go
create database msdbtest on (
name='msdbtest_data'
,filename='c:\sqlserver\data\msdbtest_data.mdf'
) log on (
name='msdbtest_log'
, filename='c:\sqlserver\log\msdbtest_log.ldf'
) for attach;
Das führt zu:
Msg 5120, Level 16, State 101, Line 1
Unable to open the physical file "c:\sqlserver\data\msdbtest_data.mdf".
Operating system error 5: "5(Access is denied.)".
SQL Server wird mit den Standardeinstellungen für das Dienstkonto konfiguriert:
Der effektive Sicherheitszugriff für das SQL Server-Dienstkonto c:\sqlserver\data\msdbtest_data.mdfist:

Ich bin total ratlos; Ich denke, der zurückgegebene Fehler führt mich in die Irre. Vielleicht verstehe ich den Zweck von falsch CREATE DATABASE ... FOR ATTACH?
Soweit ich das beurteilen kann, sollte SQL Server auf jeden Fall Zugriff auf die Datei haben. Der Ordner C:\SQLServer\Datawird von allen anderen Benutzerdatenbanken verwendet, die derzeit an die Instanz angehängt sind.
SELECT @@VERSION kehrt zurück:
Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
Dec 28 2012 20:23:12
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
