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

MSSQL
一个分页存储过程代码
Sql Server 2000 行转列的实现(横排)
sql2000挂起无法安装的问题的解决方法
完美解决MSSQL"以前的某个程序安装已在安装计算机上创建挂起的文件操作"
SQL Server数据库的修复SQL语句
分页存储过程代码
批量执行sql语句的方法
一条SQL语句搞定Sql2000 分页
SQL Server 海量数据导入的最快方法
SQL Select语句完整的执行顺序
MSSQL 清空数据库的方法
mssql自动备份及自动清除日志文件服务器设置
Sql 语句学习指南
.NET Framework SQL Server 数据提供程序连接池
对有自增长字段的表导入数据注意事项
SQL Server导入、导出、备份数据方法
sql server 临时表 查找并删除的实现代码
该行已经属于另一个表 的解决方法
SQL 注入式攻击的本质
SQL 平均数统计

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 65 ::
收藏到网摘: 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或者操作系统管理员的权限。