6

安装新的 SQL Server 2012 实例后,我希望将数据库文件移动到单独的驱动器。当我在目标位置执行File->Properties然后点击Security->Edit->Add->Advanced,选择Location=MachineName,然后点击find,我只看到与分析服务相关的表单:

SQLServerMSASUser$MachineName$InstanceName

我认为我真正需要的权限是我可以看到存在于默认 C: 驱动器位置的权限:

MSSQL$InstanceName

当我尝试直接输入它时,它无法识别。如果我将目录设置为“Everyone”,然后将数据库移动到那里(使用恢复),它可以工作并显示 mdf 文件的上述权限。当父目录未显示为列表中的可用条目时,如何在父目录上设置该权限。谢谢!

4

3 回答 3

8

这是相关的 MSDN 文章:为数据库引擎访问配置文件系统权限

于 2013-01-29T19:17:57.070 回答
5

如果您无法确定所需的正确用户权限(假设您具有管理员权限),这里有两种更简单的方法...

方法 1 - 磁盘替换
(即 SQL Server 数据库文件的驱动器号最终将相同)

如果您要更换 SQL Server 数据库文件所在的辅助硬盘驱动器(例如更大的硬盘),则特别有用。右键单击 Microsoft SQL Server Management Studio (SSMS) 中的数据库、任务、脱机。

然后只需复制文件并保留其所有权:

  • 转到命令提示符(如果在Windows NT 6.x上,例如 Vista / 7 / 2008,记得右键单击命令提示符并以管理员身份运行)
  • 然后使用

    xcopy D:\path\sql1 E:\path\sql2 /E /F /I /V /K /O /X
    

在哪里:

  • /E- 复制目录和子目录,包括空目录
  • /F- 复制时显示完整的源文件和目标文件
  • /I- 如果目标不存在并且复制多个文件,则假定目标是一个目录
  • /V- 验证每个新文件
  • /K- 保留属性,包括只读的
  • /O- 复制文件所有权和 ACL 权限
  • /X- 复制文件审核设置(隐含/O

您可能还需要,具体取决于您要迁移的文件:

  • /C- 即使发生错误也继续复制
  • /G- 允许将加密文件复制到不支持加密的位置
  • /H- 复制隐藏和系统文件

更换驱动器并确保驱动器号与以前相同。最后右键单击 SSMS 中的数据库,任务,联机。

方法 2 - 将文件移动到另一个磁盘或分区
(即 SQL Server 数据库文件的驱动器号会改变)

当您想释放驱动器/分区上的空间时很有用(例如在您宝贵的 SSD 磁盘上,以便您可以将文件放在辅助标准盘片上!)。

在 SSMS、Tasks、Detach 中右键单击要移动的数据库。导航到文件,这些文件通常位于类似C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA和调用的MyDatabase.mdf文件以及MyDatabase_1.ndf. 将它们复制到新位置(不要担心它们的权限)。

然后以管理员身份打开 SSMS,否则您将在下一步中CREATE FILE出现类似错误。Access is denied

右键单击数据库、附加、添加,浏览到新定位的MyDatabase.mdf.

瞧!如果您右键单击文件并在 SSMS 中附加之前和之后检查它们的权限,您会注意到权限已被神奇地纠正!

于 2013-06-03T19:58:26.667 回答
4

查看安装日志,帐户 MSSQL$ InstanceName是以下的简写:

NT 服务\MSSQL$ InstanceName

可以直接输入。我仍然不知道为什么这些没有出现在列表中。

于 2012-05-29T21:36:57.047 回答