欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【使用SQL Server代理运行CmdExec命令】,下面是详细的分享!
使用SQL Server代理运行CmdExec命令
需求:调用网服务器(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代理运行CmdExec命令,下面是编辑为你推荐的有价值的用户互动:
相关问题:如何使用 SQL Server 代理作业运行包
答:1、在 SQL Server Management Studio 中,打开要在其中创建作业的 SQL Server 的实例,或者打开包含要向其中添加步骤的作业的实例。 2、展开 SQL Server 代理,然后执行下列操作之一: 若要创建新的作业,请右键单击“作业”,再单击“新建”。 若要... >>详细
相关问题:如何启动 SQL Server 代理
答:在命令提示符下,输入下列命令之一: net start "SQL Server Agent (MSSQLSERVER)" - 或 - net start SQLSERVERAGENT END >>详细
相关问题:关于sqlserver里写代码来运行代理服务器
答:--启动作业Exec msdb.dbo.sp_start_job @job_name= '[cy001]自动备份'/*语法sp_start_job { [@job_name =] 'job_name' | [@job_id =] job_id } [ , [@error_flag =] error_flag] [ , [@server_name =] 'server_name'] [ , [@step_name =] 'step_... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
