代码之家  ›  专栏  ›  技术社区  ›  MatBailie

SQL Server 2005-链接服务器和代理作业

  •  0
  • MatBailie  · 技术社区  · 15 年前

    我有一个奇怪的情况,我目前无法解释。我活在希望这只是“周五的感觉”,或者这里的某个和蔼的鞋底会把我的大脑从无尽的“但是为什么”循环中解救出来。“?”

    两台运行SQL Server 2005的服务器,DNS条目为:

    1. ServerA  
    2. ServerB  
    

    (好吧,他们不是真的这么叫,但这就足够了…)

    在这两个SQL Server实例上,都配置了指向另一个服务器的链接服务器。

    出于明显的安全原因,LinkedServer安全配置设置为:

    - Be made using the login's current security context
    

    其他“链接服务器选项”是…

    Collation Compatible: True
    Data Access:          True
    RPC:                  True
    RPC Out:              True
    Use Remote Collation: True
    Collation Name:       <blank>
    Connection Timeout:   30
    Command Timeout:      10
    

    在两个实例上使用相同的密码创建登录。这些登录名被授予对相关存储过程的适当执行权限。

    我写了一些代码,然后在那个登录名下执行它,一切正常。 霍拉


    但当我创建一个代理作业来运行这些存储过程时,一切都会出错。代理作业的所有者是“自动\作业\登录”,但我的错误日志记录提供了以下内容: -用户“自动”登录失败

    (为了保护罪犯,这个名字又被改了。)


    我一辈子都搞不明白为什么当我以那个用户的身份登录时,它会工作,但是当连接到链接服务器时,它会出错。(它确实在链接服务器连接点。)

    为了使事情更混乱,如果我将链接服务器安全配置更改为“使用此安全上下文创建”,并使用正确的密码指定“自动\u作业\登录”,它将正常工作。

    我错过了什么,我知道我一定错过了,但我找不到什么。我一直在阅读文档,直到我的眼睛流血而失败。请帮帮我:)


    [将链接服务器安全选项保留为“使用此安全上下文创建:”不是一个选项,因为这将给该服务器的所有用户不可接受的访问其他服务器的级别。]

    1 回复  |  直到 15 年前
        1
  •  3
  •   gbn    15 年前

    SQL代理作业可能属于您的登录名,但它不会在该登录上下文中执行。它在里面 SQL Agent service account context

    因为您有SQL Server 2005,所以可以使用exec as user='mylogin'作为存储过程选项。

    否则,必须使用 @database_user_name 参数 sp_add_jobstep . In SSMS ,可以设置上下文。工作所有权与设置工作所有权有细微的不同。

    推荐文章