在SQL Server 2008中,我可以附加仅位于其预定义文件夹(C:\ Program Files \ Microsoft SQL Server \ MSSQL10.MSSQLSERVER \ MSSQL \ DATA)中的数据库。在某些情况下,特别是当我读书时,我需要从桌面附加测试数据库,而不是每次需要时复制每个数据库,但SQL Server不允许我访问桌面。
解决此问题的任何解决方法?
答案 0 :(得分:1)
这可能是授予运行SQL服务的帐户对桌面文件夹(C:\Documents and Settings\YourLogin\Desktop
)的适当权限的问题。但是,为什么不使用这些文件的公共保留位置,而不是使用特定于您的登录名称的桌面并且可能无法访问运行SQL服务的帐户?像C:\AdHocDBs
或类似你想要的东西。
答案 1 :(得分:0)
首次创建数据库文件(数据或日志)时,它(当然)位于特定的驱动器和文件夹中。创建备份时,此信息将作为备份的一部分存储。除非另有说明,否则数据库RESTORE命令将假定数据库将在完全相同的位置进行恢复。为此,在“with”选项下的RESTORE命令中,必须包含“move”选项。它看起来像这样:
RESTORE ...
with
move '<logcalFileName>' to 'physicalFileName'
,move '<logcalLogFileName>' to 'physicalLogFileName'
每个要移动的文件必须包含一个move
,因此您通常最终会使用这些子句中的至少两个。棘手的部分是您必须知道数据库文件的逻辑名称。这些可以通过附加数据库上的sp_helpFile
和
RESTORE FILELISTONLY
from disk = '<backupFile>'
在现有备份上。
(我确信所有这些都可以通过SSMS备份/恢复GUI以某种方式完成。我在几年前切换到基于TSQL的脚本,以便快速灵活地访问备份和恢复命令中包含的所有功能。)