• 解决数据库作业访问链接服务器问题


    需求

    需要建立一个作业,从本地数据库及远程数据库中获取数据,处理数据得到简单的汇总报表。远程数据库访问通过建立链接服务器实现。

    问题

    本地执行作业步骤中的T-SQL语句没有问题,但执行作业时,报错,如下图

    原因

    查看作业历史记录,发现报错信息如下:


    其中关键的信息是已以用户NT AUTHORITY\NETWORK SERVICE 的身份执行
    一开始我混淆了作业所有者和作业步骤运行者,以为该作业所有者为登录sa那么作业步骤的运行者就是sa。后来知晓,作业步骤是在SQL Server代理服务中运行的,代理服务的登录身份包括内置账户和本地账户两种,与SQL Server的登录名不尽相同。
    打开SQL Server配置管理器,可以看到目前系统中SQL Server代理服务的登录身份是NT AUTHORITY\NETWORK SERVICE,这也就是为什么错误信息中提示以用户NT AUTHORITY\NETWORK SERVICE的身份运行。


    选中代理服务右键,可以修改登录身份:

    解决方法

    由错误信息可以得知NT AUTHORITY\NETWORK SERVICE 不能通过远程链接服务器的身份验证,原因就是没有建立登录映射,在链接服务器安全性配置中新建该用户的登录映射即可。
    再次运行作业,可以看到运行成功!

    备注

    由于本人水平有限,上文陈述可能有不妥之处,请指正
    以下为SQL Server 联机丛书对代理安全性的建议

    1. 遵循下列指导原则可以提高SQL Server 代理实现的安全性:
      1. 专门为代理创建专用的用户帐户,并且只使用这些代理用户帐户来运行作业步骤。
      2. 只为代理用户帐户授予必需的权限。只授予运行分配给给定代理帐户的作业步骤实际所需的那些权限。
      3. 不要作为Windows Administrators 组成员的Microsoft Windows 帐户运行SQL Server 代理服务。
    2. 由于可以有多个服务使用网络服务帐户,因此很难控制哪些服务具有对网络资源(包括SQL Server 数据库)的访问权限。建议不要对SQL Server 代理服务使用网络服务帐户。
  • 相关阅读:
    HTML4如何让一个DIV居中对齐?float输入日志标题
    HTML3层叠样式表
    面向对象 学生考试计分题目
    C#总复习
    HTML2列表表单框架
    HTML1网页三部份内容
    HTML 5 JavaScript初步 编译运行.doc
    初识MYSQL
    数据库设计
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/JentleWang/p/2168390.html
Copyright © 2020-2023  润新知