使用SQL Server代理运行CmdExec命令
发布时间:2020-12-12 12:39:37 所属栏目:MsSql教程 来源:网络整理
导读:【IT专家网独家】需求:调用网服务器(SMS SQL Server)上的短信发送接口(是一个存储过程)来发送(Stage SQL Server)上的数据内容到本Team 成员的手机上。这两台服务器,本地在拨VPN后可以访问。要求以本地的SQL Server做跳转,同时调用这两台服务器的数据接口。
【IT专家网独家】需求:调用网服务器(SMS SQL Server)上的短信发送接口(是一个存储过程)来发送(Stage SQL Server)上的数据内容到本Team 成员的手机上。这两台服务器,本地在拨VPN后可以访问。要求以本地的SQL Server做跳转,同时调用这两台服务器的数据接口。 实现方法与步骤(在本地的SQL Server环境): 1、创建一个SQL Server Job 2、创建一个调用 操作系统(CmdExec)命令的Job步骤,调用命令以完成自动拨VPN的功能。 代码如: rasdial idc_name user_name user_password 3、创建链接服务器SMS SQL Server和Stage SQL Server。 4、创建一个读取Stage SQL Server上需要发送的数据内容,并调度SMS SQL Server的短信发送接口,完成短信发送的Job步骤(T-SQL)。 5、创建一个CmdExec的Job步骤,调用命令完成自动断开VPN的功能。 代码如: rasdial idc_name /disconnect 6、设置这三个步骤的先后顺序(2,4,5)。并设置调度频率为每天早上9点。 该过程中可能涉及到两个问题,如下: 1、分别调用两个服务器上的存储过程,可能需要打开分布式事务。简要步骤如下: 运行dcomcnfg命令,组件服务,计算机,我的电脑,属性,MSDTC,安全配置 选中“网络DTC访问” 在客户端管理中选中“允许远程客户端”“允许远程管理” 在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证” 保证DTC登陆账户为:NT AuthorityNetworkService 2、执行CmdExec步骤的默认帐号是SQL Server代理的启动帐号,一般是 NT AUTHORITYNetworkService,该帐号不是sysadmin组, 不具备执行该命令的权限。所以可能需要修改代理的启动帐号为有权限的帐号。 总结:本文总结问题的关键在于把握分布式事务的正确开启以及SQL Server代理中,通常执行Job的帐号AUTHORITYNetworkService并不属于系统管理员组,代理执行一些任务失败时,注意观察所执行操作需要的权限,例如本文的执行CmdExec命令,就需要sysadmin或者操作系统管理员的权限。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SQL Server生成查询的模糊匹配字符串
- sql – MAX()和MAX()OVER PARTITION BY在Teradata Query中产
- SQLServer2016 AlwaysOn基于证书的搭建笔记
- sql-server – 为什么SSIS Runtime无法启动分布式事务?
- sql-server – 如何使用COALESCE多行而不使用逗号?
- 为什么SQL Server在使用变量时变慢?
- SQL Server误区30日谈 第26天 SQL Server中存在真正的“事务
- sql-server – 估计在SQL Server上执行数据库缩减的时间的方
- sql-server – 避免大ID值的原因
- sql-server – 类型DATE不是定义的系统类型