问题
- 您在 ESET Windows 服务器产品中收到错误信息 "从 Microsoft SQL Server 数据库加载数据库文件时发生错误。请检查 "NT AUTHORITY/SYSTEM "账户是否有足够的权限从主数据库的系统视图中读取数据"。
- 获取数据库数据的自定义位置时出现错误
- 启用 ESET 服务以获取数据库数据的自定义位置
- 单个服务器上有多个 Microsoft SQL Server 实例
解决方案
在获取数据库数据的自定义位置时出现错误
Microsoft SQL Server 的自动排除项主要包括数据库文件的默认位置。不过,它也包括数据库文件存储在自定义位置的路径。在这种情况下,NT AUTHORITY\SYSTEM账户必须有适当的权限才能从主数据库中提取此信息。
在 Microsoft SQL Server 2016 及更高版本中,Microsoft 移除了 NT AUTHORITY\SYSTEM 帐户的系统管理员服务器角色,导致 ESET Windows 服务器产品无法访问主数据库中的数据,而主数据库中包含 Microsoft SQL Server 实例的数据库数据位置。
ESET Windows 服务器产品会通过错误消息告知此问题。单击日志文件,从下拉菜单中选择事件,然后查看错误消息:
"从 Microsoft SQL Server 数据库加载数据库文件时发生错误。检查'NT AUTHORITY\SYSTEM' 帐户是否有足够的权限从主数据库的系统视图中读取数据"。
点击图片在新窗口中查看大图
启用 ESET 服务以获取数据库数据的自定义位置
要启用我们的服务以 获取数据库数据的自定义位置,请使用 Microsoft SQL Server Management Studio 按照以下三个步骤之一进行操作:
- 向 NT AUTHORITY\SYSTEM 账户授予 "查看任何定义 "权限(推荐)
- 向 NT AUTHORITY\SYSTEM 账户授予 "sysadmin "服务器角色
- 为 NT AUTHORITY\SYSTEM 账户中的 "master "数据库分配 "db_owner "数据库角色
A.为 NT AUTHORITY\SYSTEM 账户授予 "查看任何定义 "权限(推荐)
-
导航到 Microsoft SQL Server Management Studio 并连接到所选的 Microsoft SQL Server 实例。
-
单击Securables。在 "授予 "列中,选择 "查看任何定义"旁边的复选框。单击确定。
图 2-1
B.将 "sysadmin "服务器角色授予 NT AUTHORITY\SYSTEM 帐户
-
导航到 Microsoft SQL Server Management Studio 并连接到所选的 Microsoft SQL Server 实例。
-
单击 "服务器角色",选择sysadmin旁边的复选框,然后单击 "确定"。
图 2-2
C.为 NT AUTHORITY\SYSTEM 账户中的 "master "数据库分配 "db_owner "数据库角色
-
导航到 Microsoft SQL Server Management Studio 并连接到所选的 Microsoft SQL Server 实例。
-
单击用户映射。在 "映射到此登录的用户"部分,选择master 旁边的复选框。在数据库角色成员资格部分,选择db_owner 旁边的复选框。单击确定。
图 2-3
单个服务器上的多个 MS SQL Server 实例
您可以使用启动 Microsoft SQL Server Management Studio 时显示的连接对话框连接到特定的 Microsoft SQL Server 实例:
-
导航到 Microsoft SQL Server Management Studio 并连接到所选服务器。
- 按以下格式在服务器名称字段中键入实例,然后单击连接。
<服务器名称>/<实例名称
图 3-1
获取 Microsoft SQL Server 实例列表
获取服务器上安装的 Microsoft SQL Server 实例列表有几种方法:
-
安装 Microsoft SQL Server 新实例时,在键入新实例名称的步骤中,安装向导会显示当前已安装实例的列表。
-
已安装实例的列表位于以下 Windows 注册表路径中:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names要获取列表,请使用以下 PowerShell 命令:
Get-Item "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" | % {$_.Property} -
每个 Microsoft SQL Server 实例都会在系统中安装相应的服务。该服务的名称格式如下:
SQL Server (<instance_name>)您可以使用以下 PowerShell 命令过滤系统中的这些服务,以获取已安装的 Microsoft Server SQL 实例列表:Get-Service | ?{ $_.DisplayName -like "SQL Server (*"}