22,300
社区成员




CREATE PROCEDURE Get_RecordList(
@flag as int =0
)
AS
set nocount on
BEGIN
declare @rid as int
declare @enddate as datetime
--return 0
set @rid=0
select top 1 @rid=Record_ID, @enddate=LastGetDate from Record_LastGet
if (@rid=0 or @rid is null or @flag=1)
begin
select a.Program_Name as jmmc,
startdate as jmrq,
b.Description as jmpd,
a.StartTime as jmsd_start,
a.EndTime as jmsd_end,
'mms://xx.xxx.com/record'+a.Record_URL as jmdz
from Record_List a, Publish_Point_List b where a.Record_Type in (1,4) and a.Channel_ID=b.Channel_ID
end
else
begin
select a.Program_Name as jmmc,
startdate as jmrq,
b.Description as jmpd,
a.StartTime as jmsd_start,
a.EndTime as jmsd_end,
'mms://xx.xxx.com/record'+a.Record_URL as jmdz
from Record_List a, Publish_Point_List b where Insert_Time>=@enddate and a.Record_Type in (1,4) and a.Channel_ID=b.Channel_ID and
Record_ID not in (select Record_ID from Record_LastGet)
delete from Record_LastGet
end
select top 1 @enddate=Insert_Time from Record_List order by Insert_Time desc
insert into Record_LastGet (Record_ID, LastGetDate)
select Record_ID, Insert_Time from Record_List where Insert_Time=@enddate
return 0
END
GO
<%
Dim MM_JM_STRING
'这里是SQLB的连接字符串
MM_JM_STRING = "Provider=SQLOLEDB;Server=SQLB;Database=jmdb;UID=xx;PWD=xx"
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
'这里是SQLA的连接字符串
strconn="Provider=SQLOLEDB;Server=SQLA;Database=xxxxx;UID=xx;PWD=xx"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText="{call Get_RecordList(0)}"
set rs=cmd.Execute()
if not rs.eof or not rs.bof then
Do While Not rs.eof
if len(rs("jmpd"))<1 then jmpd="节目" else jmpd=rs("jmpd")
if len(rs("jmmc"))<1 then jmmc="节目" else jmmc=rs("jmmc")
if len(rs("jmrq"))<1 then jmrq=date() else jmrq=rs("jmrq")
if isnull(rs("jmsd_start"))<0 then jmsd=0 else jmsd=rs("jmsd_start")
if isnull(rs("jmsd_end"))<0 then jmsd2=0 else jmsd2=rs("jmsd_end")
if len(rs("jmdz"))<1 then jmdz="mms://" else jmdz=rs("jmdz")
MM_editQuery = "insert into dbo.jmdb (jmpd,jmmc,jmrq,jmsd,jmsd2,jmdz) values ('"&jmpd&"','"&jmmc&"','"&jmrq&"',"&jmsd&","&jmsd2&",'"&jmdz&"')"
Set MM_editCmd = Server.CreateObject("ADODB.Command")
MM_editCmd.ActiveConnection = MM_JM_STRING
MM_editCmd.CommandText = MM_editQuery
MM_editCmd.Execute
MM_editCmd.ActiveConnection.Close
response.write "["&jmrq&"]-["&jmpd&"]-["&jmmc&"]-["&jmsd&"-"&jmsd2&"]........OK!<BR/>"
rs.movenext
loop
response.write "ALL OK!!!"
end if
conn.close
set conn = nothing
set cmd = nothing
%>
ie = new ActiveXObject("InternetExplorer.Application");
// Define how the window should look
ie.left = 50;
ie.top = 50;
ie.height = 510;
ie.width = 470;
ie.menubar = 0;
ie.toolbar = 0;
// Set the browser to a blank page
ie.navigate("http://xxxx/我要执行的这个ASP文件");
// Show the browser
ie.visible=0;
// Open a stream and write data.
//ie.document.open;
//ie.document.write(html);
//ie.document.close;
SQL Server如何定时作业(执行某个存储过程)
ZDNet 软件频道 更新时间:2007-08-31 作者:ccidnet 来源:database.ccidnet.com
本文关键词:数据 微软 数据库 SQL Server
如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,可以用管理->SQL Server代理->作业来实现。
1、管理->SQL Server代理->作业(按鼠标右键)->新建作业->
2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->
分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->
描述[填写本次工作详细描述内容];
[ 创建作业分类的步骤:
SQL Server代理->作业->右键选所有任务->添加、修改、删除 ]
3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型[Transact-SQL(TSQL)脚本]->
数据库[要操作的数据库]->命令
[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件
如果要执行存储过程,填
exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN]
]
->确定
(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);
4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->
更改[调度时间表]->确定
(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);
5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。
跟作业执行相关的一些SQL Server知识:
SQLSERVERAGENT服务必须正常运行,启动它的NT登录用户要跟启动SQL Server数据库的NT登录用户一致。
点作业右键可以查看作业执行的历史记录情况,也可以立即启动作业和停止作业。
最近在看作业历史记录时,发现有的作业记录的历史记录多,有的作业记录的记录的历史记录少.
如何能使某些作业按各自的需求,保留一段时间.比如保留一个月的历史记录.
看了SQL Server的在线帮助文档,里面介绍说:
在管理->SQL Server代理->右键选属性->作业系统->限制作业历史记录日志的大小->
作业历史记录日志的最大大小(行数) 默认为1000 如果某台机器的作业数量很多,一定要提高它,例如为100000
每个作业历史记录日志的最大行数 默认为100 如果作业每天执行两次,需要保留一个月的日志,可以设为60
它们之间有一个相互制约关系, 我们可以根据自己的需要来改.
如果SQL Server服务器改过机器名, 管理是旧名称时建立的job的时候可能会遇到
错误14274: 无法添加、更新或删除从MSX服务器上发起的作业(或其步骤或调度)
看了Microsoft的文档:http://support.microsoft.com/default.aspx?scid=kb;en-us;281642
说SQL Server 2000系统里msdb..sysjobs 里originating_server 字段里存的是原来的服务器的名称.
24X7在用的系统肯定不能按上面Microsoft的文档说的那样把名字改回来又改过去。
于是想,msdb..sysjobs 能否update originating_server 字段成现在在用的新服务器名?
use msdb
select * from sysjobs
找到originating_server 字段还是旧服务器的job_id, 然后执行update语句: