我有一个 SQL Server 2012 实例在我的计算机上作为服务运行,根据服务页面,它以帐户“NT Service\MSSQLSERVER”登录。但是,我在其他任何地方都看不到该帐户名称,包括在计算机管理屏幕的“本地用户和组”区域中,因为正如下面的链接所说,这不是用户帐户,而是服务名称,在那个框中微软如此有用地标记了“帐户”。在这一点上,我可以看到很多人感到困惑。
我要完成的任务是使用 SSMS 对话框“查找备份文件”来恢复文件,该对话框使用的对话框完全不同于任何标准的 windows 文件打开对话框,可能是因为它正在执行“远程”工作并从SQL 服务器的安全上下文是最终用户混淆的另一个丰富来源,我希望这个问题可能有助于澄清。
到目前为止,如果我想恢复我在其中一个文件夹中的备份 .mdf/.bak 文件,我必须将该文件夹设置为所有人都可以读取,否则我无法使用 SQL Server“定位备份”进入那里文件”窗口。我发现您正在使用 GUI 与具有与您不同的用户帐户和权限的服务交谈的想法,Microsoft 甚至没有人愿意向您解释清楚,即使我有多年的 Windows 系统管理经验,这也很令人困惑.
我希望我错过了一些关于 SQL Server 的文档页面,这些页面会告诉您在安装新的 SQL Server 实例后如何设置安全性。
像这样的论坛帖子甚至连微软员工都说“这很复杂”,并且在 Denali 中“再次发生了变化”。这在 SQL Server 2012 中现在如何工作,以及我如何将读取属于用户的文件的权限添加到 SQL 数据库引擎的安全性SID
。
作为参考,“Denali”是 SQL Server 2012。关于“最终用户混淆”,我并不关心最终用户是否对 SSMS 感到困惑。Microsoft 没有为普通最终用户开发此工具,而是为数据库管理员和/或必须管理数据库的用户开发此工具。因此,所提供的工具及其运作方式将有一个学习曲线。自从 SSMS 与 SQL Server 2005 一起出现以来,SSMS 中的文件对话框一直是这样的。这就是为什么您通常会看到大多数人坚持使用 T-SQL 语句来备份、恢复或附加从那时起一直使用它的数据库.
要使用 SQL Server 配置文件系统权限,您可以按照 MSDN此处的说明进行操作。
处理服务帐户的方式不是 SQL Server 附带的,也不是因为 SQL Server,而是由于操作系统级别的更改。Window Server 2008 R2 为服务帐户添加了更多的安全层。您拥有的优势是服务帐户可以更轻松地访问域上的资源,即使使用默认设置安装也是如此。此链接非常详细地介绍了如何使用 SQL Server 2012 处理服务帐户权限。下面是 SQL Server 2012 中默认使用的虚拟帐户的链接摘录。文章中还提供了一个链接,用于了解更多关于 Windows 服务帐户概念的讨论,请点击此处. 它来自 Window Server 2008 R2,但我相信在 Window Server 2012 和可能的 Window Server 2012 R2 上仍然适用。
要查看/访问另一个文件夹中的文件,请授予
NT SERVICE\MSSQLSERVER
该文件夹的权限。请参阅我在.bak 文件上发布的答案,这些文件在 SSMS 的任何目录中都不可见,以获取屏幕截图和所涉及的步骤。(与向文件夹添加普通用户/组权限略有不同。)希望有帮助!
事实上,如果您尝试通过 SSMS 进行恢复,并且您通过 Windows 身份验证 (!) 登录,则需要该权限的将是您的 Windows 帐户(而不是“每个人”) - 而不是 SQL Server 服务账号。希望解开疑惑。服务账号还有其他需求。比如你是通过SQL认证账号登录的——那么操作系统应该要求哪些权限?——这里就是SQL Server的服务账号仅限案例!这自 SQL Server 7.0 以来没有改变,甚至可能在此之前也没有改变 :)