Tôi đang cố gắng đính kèm một bản sao của msdbmáy trạm SQL Server 2012 dành cho nhà phát triển của mình trên Windows 8.1 để cố gắng bắt chước vấn đề được nêu chi tiết trong câu hỏi này khi OP đang cố gắng tạo lại các công việc bị thiếu từ msdb nước ngoài.
Tôi đã thực hiện các hành động sau:
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
Sau đó tôi dừng SQL Server dịch vụ, tạo ra một bản sao của C:\SQLServer\Data\msdbtest_data.mdfvà C:\SQLServer\Logs\msdbtest_log.mdf, và khởi động lại SQL Server.
Sau đó tôi đã thực hiện như sau:
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;
Kết quả này trong:
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 được cấu hình với các cài đặt ngoài hộp mặc định cho tài khoản dịch vụ:
Bảo mật truy cập hiệu quả cho tài khoản dịch vụ SQL Server trên c:\sqlserver\data\msdbtest_data.mdflà:

Tôi hoàn toàn mất mát; Tôi nghĩ rằng lỗi được trả lại là gây hiểu lầm cho tôi. Có lẽ tôi hiểu sai mục đích của CREATE DATABASE ... FOR ATTACH?
Theo như tôi có thể nói, SQL Server chắc chắn sẽ có quyền truy cập vào tệp. Thư mục C:\SQLServer\Datađược sử dụng bởi tất cả các cơ sở dữ liệu người dùng khác hiện được đính kèm.
SELECT @@VERSION trả về:
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: )
