100分问题

ZSUWinFast 2003-10-10 09:48:46
我想用sql server每天0点自动生成一些xml文档放在服务器上面。
怎么实现
...全文
37 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2003-10-10
  • 打赏
  • 举报
回复
--创建生成XML文件的存储过程,这里也生成表sysobjects的记录为例子:
create proc p_createxml
as
declare @sql varchar(8000)
select @sql='select * from '+db_name()+'..sysobjects for xml auto'
,@sql='bcp "'+@sql+'" queryout "c:\a.xml" /S"'+@@servername
+'" /S"用户名" /P"密码" /c'
exec master..xp_cmdshell @sql
go

--创建作业
exec sp_add_job @job_name='数据处理'

--创建作业步骤
declare @sql varchar(800),@dbname varchar(250)
select @sql='exec p_createxml' --数据处理的命令
,@dbname=db_name() --执行数据处理的数据库名


exec sp_add_jobstep @job_name='数据处理',
@step_name = '数据同步',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql
@retry_attempts = 5, --重试次数
@retry_interval = 5 --重试间隔

--创建调度
EXEC sp_add_jobschedule @job_name = '数据处理',
@name = '时间安排',
@freq_type = 4, --每天
@freq_interval = 1, --每天执行一次
@active_start_time = 00000 --0占执行


zjcxc 2003-10-10
  • 打赏
  • 举报
回复
你要生成什么xml文件,这个才是决定存储过程怎么写的关键.
pengdali 2003-10-10
  • 打赏
  • 举报
回复
create table aaa(a int,b text)
go



CREATE PROCEDURE sp_textcopy
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1)
AS
/* 这是使用textcopy工具将文件插入到数据库中,如果有前台工具可以用前台开发工具将文件插入,这里为了演示 */
DECLARE @exec_str varchar (255)
SELECT @exec_str='textcopy /S '+@srvname+' /U '+@login+' /P '+@password+' /D '+@dbname+' /T'+@tbname+' /C '+@colname+' /W"'+@whereclause+'" /F"'+@filename+'" /'+@direction
EXEC master..xp_cmdshell @exec_str
go

insert aaa values(1,'') --''是必须的不是null


sp_textcopy 'daliserver','sa','element','test','aaa','b','c:\tt.txt','where a=1','I' --注意条件是 a=1




go
drop table aaa
go
drop proc sp_textcopy



前提c:\下有tt.txt文件,如果报textcopy不是可执行文件的话,你就到
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
目录下拷备 textcopy.exe到:
C:\Program Files\Microsoft SQL Server\80\Tools\Binn
ZSUWinFast 2003-10-10
  • 打赏
  • 举报
回复
关键是我的存储过程怎么写?这是一个重点哦
pengdali 2003-10-10
  • 打赏
  • 举报
回复
你的数据库服务器-》企业管理器-》管理-》SQL Server 代理-》作业-》新建作业,按照要求填就可以了,在“步骤”的“命令”中填写你要执行的存储过程或语句,在“调度”里面填写什么时间执行
伍子V5 2003-10-10
  • 打赏
  • 举报
回复
首先写好你的存储过程
然后建成作业,用SQLAGENT调度即可
txlicenhe 2003-10-10
  • 打赏
  • 举报
回复
或者:
你的数据库服务器-》企业管理器-》管理-》SQL Server 代理-》作业-》新建作业,按照要求填就可以了,在“步骤”的“命令”中填写你要执行的存储过程或语句,在“调度”里面填写什么时间执行
txlicenhe 2003-10-10
  • 打赏
  • 举报
回复
当然是用job

EXEC sp_add_job @job_name = '作业名字'


EXEC sp_add_jobstep @job_name = '作业名字',
@step_name = '步骤名子',
@subsystem = 'TSQL',
@command = 'EXEC 库名..过程名',
@retry_attempts = 5, --重试次数
@retry_interval = 5 --重试间隔

EXEC sp_add_jobschedule @job_name = '作业名字',
@name = '作业调度名字',
@freq_type = 4, -- 每天
@freq_interval = 26, --间隔
@active_start_time = 10000 --开始时间

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧