当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 使用SQL Server代理运行CmdExec命令

MSSQL
使用SQL Server数据库嵌套子查询的方法
SQL Server SQL Agent服务使用教程小结
五种提高 SQL 性能的方法
非常不错的SQL语句学习手册实例版
SQL语言查询基础:连接查询 联合查询 代码
SQL SERVER的优化建议与方法
简单的SQL Server备份脚本代码
sql基本函数大全
SQL查询语句精华使用简要
数据库分页存储过程代码
SQL查询连续号码段的巧妙解法
sql server中千万数量级分页存储过程代码
sql2000各个版本区别总结
如何远程连接SQL Server数据库图文教程
一个SQL语句获得某人参与的帖子及在该帖得分总和
通用分页存储过程,源码共享,大家共同完善
SQL查找某一条记录的方法
使用 GUID 值来作为数据库行标识讲解
非常详细的SQL--JOIN之完全用法
收缩后对数据库的使用有影响吗?

MSSQL 中的 使用SQL Server代理运行CmdExec命令


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 59 ::
收藏到网摘: n/a

需求:调用网服务器(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或者操作系统管理员的权限。