使用不同的连接字符串执行 T-SQL 作业

cou*_*sej 3 sql-server sql-server-agent

是否可以在指定自定义应用程序名称的同时从 SQL 代理作业执行存储过程,类似于在连接字符串中指定应用程序名称?

我想这样做的原因是为了避免数据库上的触发器专门区分连接字符串使用的应用程序名称。

我知道您可以使用不同的连接字符串执行集成包,但我希望这也适用于 T-sql 作业。

Jon*_*gel 5

我认为没有内置的方法可以做到这一点,但这里有一些替代方案:

  1. OPENDATASOURCE像这样使用:

    EXEC OPENDATASOURCE('SQLNCLI', 'Data Source=MyServer;Integrated Security=SSPI;Initial Catalog=master;Application Name="test app"')
        .master.sys.sp_configure;
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,即使您不会编写访问另一台服务器的代码(SQL Server 不知道这一点),使用时也OPENDATASOURCE需要您打开Ad hoc Distributed Queries sp_configure设置(如文档的备注部分所述)。

  2. 创建一个包装 SSIS 包,在连接管理器中指定应用程序名称,然后使用执行 SQL 任务来运行存储过程。

  3. 创建一个包装命令行应用程序,将连接字符串和命令作为参数;使用操作系统 (cmdexec) 作业步骤执行它。