【问题标题】:Transact-SQL Job permissionTransact-SQL 作业权限
【发布时间】:2012-06-26 16:53:08
【问题描述】:

我有 2 个 SQL 服务器:A 和 B。在 A 上,我有一个存储过程,它处理来自 B 的一些数据,然后将结果转储到 A 上的表中。我需要安排一个作业来运行这个过程。

根据http://msdn.microsoft.com/en-us/library/ms189064(SQL.105).aspx,运行作业时使用的是作业所有者。 (不能在 TSQL 步骤/作业的作业步骤上设置“运行方式”。)

网络人员设置这些机器/安全性的方式是使用第三台服务器 C,其上存储有集中登录。所以我的登录名是:SERVERC\SEAN。此登录名可以访问数据库服务器 A 和 B。如果我在登录并连接到服务器 A 时执行,则 proc 运行良好。

所以我将job owner设置为SERVERC\SEAN,但是job运行的时候报错信息是: “以用户身份执行:NT AUTHORITY\NETWORK SERVICE。用户 SERVERC\SERVERA$ 登录失败”

为什么它作为网络服务和一些奇怪的登录组合运行,而不是按照指示作为作业所有者运行?我如何让它发挥作用?

谢谢

【问题讨论】:

  • 你是如何执行这项工作的?
  • 我不确定你的意思,“如何”?这是一个预定的工作。如果我让调度程序运行它,或者我通过 Management Studio 执行它,它就会失败。

标签: sql-server security login jobs


【解决方案1】:

看看这个post,它应该做你想做的事。

编辑以显示最有用的链接 http://social.msdn.microsoft.com/Forums/en/sqltools/thread/54dff132-b9c9-4753-b0c5-2134bf7f4327

【讨论】:

  • 不,这没有帮助。当我单击省略号时,我只得到服务器 A 上的用户列表,而不是服务器 C 上的用户列表。如果我尝试输入 SERVERC\SEAN,那么它将不会接受该用户。如果我尝试 SERVERA\SEAN(我也有本地登录名),那么作业将失败 - 因为 SERVERA\SEAN 无权访问 SERVERB 数据库(“访问远程服务器被拒绝,因为当前的安全上下文不受信任”)。
  • 好吧,所以你没有可以使用的网络服务登录?
  • 一个“网络服务登录”?不……我不这么认为。这与 SERVERC\SEAN 上的登录有何不同?
  • @SeanW 问题是“SERVERC\SEAN”是该服务器的本地登录名 - 这解释了为什么您无法使用该登录名访问 SERVERA。因此,如果您希望能够通过模拟访问多个服务器,您将需要一个可以访问所有三个服务器的域登录。您的另一个选择是服务器的链接,如果它们可以互相看到,那么您也应该可以做您想做的事情。这有意义吗?
  • 这真的没有意义,因为我不熟悉安全/网络(我只是一个开发人员!)。但据我所知,SERVERC 专门设置为集中式(域?)登录服务器。所以我在 SERVERC 上的登录可以访问 SERVERA 和 SERVERB。因此,如果我可以将作业设置为使用该用户,那应该没问题。但我不能,如上所述。我不确定链接服务器需要什么,我会试着问他们——但我到底需要问什么?谢谢!!
猜你喜欢
  • 1970-01-01
  • 2016-09-04
  • 2021-11-27
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 2020-04-30
  • 2019-09-19
相关资源
最近更新 更多