使用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 Authority\NetworkService

2、执行CmdExec步骤的默认帐号是SQL Server代理的启动帐号,一般是 NT AUTHORITY\NetworkService,该帐号不是sysadmin组,

不具备执行该命令的权限。所以可能需要修改代理的启动帐号为有权限的帐号。

总结:本文总结问题的关键在于把握分布式事务的正确开启以及SQL Server代理中,通常执行Job的帐号AUTHORITY\NetworkService并不属于系统管理员组,代理执行一些任务失败时,注意观察所执行操作需要的权限,例如本文的执行CmdExec命令,就需要sysadmin或者操作系统管理员的权限。

时间: 2024-10-22 10:04:16

使用SQL Server代理运行CmdExec命令的相关文章

谢谢大家-无法选择在sql server代理账户下运行

问题描述 无法选择在sql server代理账户下运行 这个怎么解决 解决方案 SQL Server 代理 开机自动运行sql server 2008 Sql server代理无法启动Chapter 1 Securing Your Server and Network(1):选择SQL Server运行账号 解决方案二: 去服务管理器里看一下sql server代理服务启动了没: 如果启动了,把SQL Server服务启动帐户改为网络帐户试一下:

Sql Server 代理错误日志知多少

  一 概述 默认情况下,SQL Server 代理创建错误日志来记录警告和错误.日志中显示下列警告和错误: 警告消息,提供有关潜在问题的信息,例如"作业 在执行时被删除". 错误消息,通常需要系统管理员干预,例如"无法启动邮件会话".可以通过 net send 将错误消息发送给特定用户或计算机. 默认情况下,执行跟踪消息不写入 SQL Server代理日志错误,因为它们会将日志填满.如果错误日志已满,会降低选择和分析更严重的错误的能力.因为日志会增加服务器的处理负

【转载】关于sql server 代理(已禁用代理xp)

原文地址:http://blog.sina.com.cn/s/blog_493cafbb0100qy91.html   症状: SQL SERVER2005里面,启动SQL代理服务,启动正常,但是在sql server 代理还是显示已禁用代理 xp 在Management Studio中新建维护计划时,提示以下错误信息: "代理XP"组件已作为此服务器安全配置的一部分被关闭.系统管理员可以使用sp_configure来启用"代理XP".有关启用"代理XP&

求救 pymssql怎么都连不上 服务中sql server代理也启动不了

问题描述 求救 pymssql怎么都连不上 服务中sql server代理也启动不了 Traceback (most recent call last): File ""pymssql.pyx"" line 630 in pymssql.connect (pymssql.c:10097) File ""_mssql.pyx"" line 1887 in _mssql.connect (_mssql.c:20477) File

用java+sql server2000做的系统,怎样用java+sql server 2005运行

问题描述 用java+sql server2000做的系统,怎样用java+sql server 2005运行 我在网上下载了一个图书馆管理系统,是用java+sql server2000做的,但是怎样用java+sql server 2005运行呢? 运行的时候出现了如下的错误: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. at com.microsof

SQL Server中使用外部命令执行sql脚本

server|脚本|执行 Author:David EulerDate: 2004/09/28Email:de_euler-david@yahoo.com.cn 有任何问题,请与我联系:)    有时候我们需要多次运行一个文件夹下所有的sql脚本(可能时txt或者sql等文本文件)来更新Schema,文件多的时候需要多次执行,那么可以使用多条语句来执行sql脚本.--下面的查询语句在SQL Query中运行,将执行d:\vss下面的指定sql脚本,这些脚本的后缀都是txtexec master.

sql server代理中作业执行SSIS包失败的解决办法_MsSql

RT,执行失败了,总是只提示一句"以xxxx用户身份执行失败",很难找原因. 引用 http://bbs.csdn.net/topics/300059148 Sql2005如何用dtexec运行ssis(DTS)包 一.首先在Business Intelligence中设计好包,并调试通过. 二.选用dtexec工具运行包 (一)  打开 xp_cmdshell 选项 SQL Server 2005 中引入的 xp_cmdshell 选项是服务器配置选项,使系统管理员能够控制是否可以在

sql server代理中作业执行SSIS包失败的解决办法

RT,执行失败了,总是只提示一句"以xxxx用户身份执行失败",很难找原因. 引用 http://bbs.csdn.net/topics/300059148 Sql2005如何用dtexec运行ssis(DTS)包 一.首先在Business Intelligence中设计好包,并调试通过. 二.选用dtexec工具运行包 (一)  打开 xp_cmdshell 选项 SQL Server 2005 中引入的 xp_cmdshell 选项是服务器配置选项,使系统管理员能够控制是否可以在

将MS SQL SERVER数据库运行在普通用户(独立用户)状态下的设置方法终结篇

看了脚本之家网上的很多文章,整理了如下步骤,基本上可以说是终结解决方法了,这里给详细的整理下了, 希望可以帮助更新的朋友,让我们的服务器更加安全.脚本之家奉献. 首先是大家已经安装好了sqlserver 企业版. 第一步: Win2003 MSSQL以普通用户运行安全设置篇 这个里面主要是讲解了,普通用户的创建与设置,但需要注意的是,权限的设置 C盘需要以下权限: C:\administrators 全部权限 System 全部权限 IIS_WPG只读与运行的权限(只应用在当前文件夹) SQL2