如何配置SQL Server 2012,以便它可以还原并查看用户帐户中的文件?


10

我有一个SQL Server 2012实例作为服务在我的计算机上运行,​​并且根据服务页面以帐户 “ NT Service \ MSSQLSERVER” 登录。但是,在计算机管理屏幕的“本地用户和组”区域中,我在其他任何地方都看不到该帐户名,因为如下面的链接所述,这不是用户帐户,而是服务名称,在该框中,微软因此很有帮助地将其标记为“帐户”。在这一点上,我可以看到很多人感到困惑。

我要完成的任务是使用SSMS对话框“查找备份文件”还原文件,该对话框使用的对话框与任何标准Windows文件打开对话框完全不同,可能是因为它正在执行“远程”作业并从SQL Server的安全上下文是最终用户混乱的另一个丰富来源,我希望这个问题可能有助于解决。

到目前为止,如果要还原我的一个文件夹中的备份.mdf / .bak文件,则必须将该文件夹设置为“所有人都可读”,否则我将无法使用SQL Server“查找备份”进入该文件夹。文件”窗口。我发现这个想法是,您正在使用GUI与具有与您不同的用户帐户和权限的服务进行对话,即使我在Windows系统管理方面有多年经验,Microsoft的所有人也都不会理会您,这很令人困惑。

我希望我错过了一些SQL Server文档页面,这些页面将告诉您在安装新的SQL Server实例之后如何设置安全性。

这样的论坛帖子甚至让Microsoft工作人员说“这很复杂”,而在Denali中又“改变了”。现在,它在SQL Server 2012中如何工作,以及如何向SQL数据库引擎的安全性添加读取属于用户的文件的权限SID


SQL不使用标准对话框的原因是您无法选择SQL无法读取的文件。关于如何配置安全性,您是否愿意更改运行SQL的帐户,还是要保留现在的方式?如果可以更改服务帐户,则很容易解决。我们使用命名帐户,因此我无法使用通用MSSQLSERVER帐户进行测试来帮助您。
cfradenburg 2012年


如果每个人在进行开发时都将其SQL Server更改为以常规用户ID运行,则这可能是“最佳实践”。我只是想知道这是否是个好主意。如果将“ NT Service \ MSSQLSERVER”手动添加到我需要添加到的文件夹中是标准思想,那么我猜那将是最合乎逻辑的最小修复方法,对吗?我希望它是SQL Server SSMS UI可以更轻松地连接到此隐藏的“ NT Server \ xxx”帐户ID。
沃伦·P

Answers:


5

作为参考,“ Denali”是SQL Server2012。关于“最终用户的困惑”,我并不是所有人都关心最终用户是否对SSMS感到困惑。Microsoft并不是为普通的最终用户开发此工具的,而是为数据库管理员和/或必须管理数据库的用户开发的。因此,使用所提供的工具及其作用方式将有一条学习曲线。自SQL Server 2005推出SSMS以来,SSMS中一直使用文件对话框。这就是为什么您通常会看到大多数坚持使用T-SQL语句备份,还原或附加自此以来一直在使用它的数据库的原因。

为了与SQL Server配置文件系统权限可以按照从MSDN的说明这里

服务帐户的处理方式不附带或由于SQL Server而引起,这是由于操作系统级别上的更改所致。Window Server 2008 R2在服务帐户周围放置了更多的安全层。您的优势在于,即使使用默认设置安装,服务帐户也可以更轻松地访问域上的资源。该链接非常详细地介绍了如何使用SQL Server 2012处理服务帐户权限。该链接的摘录下面是SQL Server 2012中默认使用的虚拟帐户的链接。本文中还提供了一个链接,其中涉及更多内容。在服务帐户的概念与Windows,讨论在这里。它来自Window Server 2008 R2,但我相信在Window Server 2012以及Windows Server 2012 R2上仍然适用。

虚拟帐号

Windows Server 2008 R2和Windows 7中的虚拟帐户是托管的本地帐户,它们提供以下功能来简化服务管理。虚拟帐户是自动管理的,并且虚拟帐户可以在域环境中访问网络。如果在Windows Server 2008 R2或Windows 7上的SQL Server安装过程中将默认值用于服务帐户,则将使用实例名称作为服务名称的虚拟帐户,格式为NT SERVICE \。作为虚拟帐户运行的服务使用\ $格式的计算机帐户的凭据访问网络资源。指定虚拟帐户以启动SQL Server时,请将密码保留为空。如果虚拟帐户未能注册服务主体名称(SPN),请手动注册SPN。有关手动注册SPN的更多信息,请参见注册Kerberos连接的服务主体名称。注意注意虚拟帐户不能用于SQL Server故障转移群集实例,因为虚拟帐户在群集的每个节点上都不会具有相同的SID。

下表列出了虚拟帐户名称的示例。

数据库引擎服务的默认实例:NT SERVICE \ MSSQLSERVER名为PAYROLL的数据库引擎服务的命名实例:SQL Server的默认实例上的SQL Server代理服务:NT SERVICE \ MSSQL $ PAYROLL名为PAYROLL的SQL Server实例:NT SERVICE \ SQLAGENT $ PAYROLL


3
最终用户是指几十个类别的人中的任何一个,其中一些人在各个领域中非常专业并且在技术上胜任,但他们可能不是DBA。我个人认为,即使DBA也会发现可以改进此工具上的UI。强大的第三方工具市场是另一个迹象,表明SSMS尽管免费,但完全值得。
沃伦·P

1
在2017年,情况没有任何改善。因此,简短的答案是“无论用户界面设计得多么糟糕,它永远都不会变得更好,学习它的工作原理”。
沃伦·P


1

实际上,如果您尝试通过SSMS进行还原,并且通过Windows身份验证(!)登录,则需要该权限的是您的Windows帐户(而不是“所有人”),而不是SQL Server服务帐户,希望能消除混乱。服务帐户还有其他需求,例如,如果您是通过SQL身份验证帐户登录的,那么操作系统应要求哪些权限?-这将是SQL Server的服务帐户自从SQL Server 7.0起,这种情况就没有改变,甚至可能在此之前没有改变:)


1
不要忘记凭证
Remus Rusanu

我不确定它是否消除了混乱...如果您通过WA登录,则SQL Server帐户需要恢复权限(就SQL Server而言),但是SQL Server服务帐户需要读取权限在文件系统上打开该.bak文件(除非在用户目录中,除非明确授权,否则通常不会包含该文件)。
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.