SQL2005中保存XML的问题

wangchangk 2009-06-23 09:26:34
我现在有个问题是想把数据库中的一些数据保存为XML文件来保存,请问能不能定制个程序让它定时运行,然后保存到相应的磁盘空间中?我只知道SQL中支持XML,并且通过查询能够取得数据的XML格式数据,但是怎么去保存有没有方法?
...全文
105 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
guguda2008 2009-06-28
  • 打赏
  • 举报
回复
神奇的SQL
claro 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wangchangk 的回复:]
是不是SQL保存的XML不够灵活,要想灵活的保存还要用程序区写
[/Quote]可以用auto xml 语句处理,只不过保存到本地磁盘需要另处理。
--小F-- 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wangchangk 的回复:]
是不是SQL保存的XML不够灵活,要想灵活的保存还要用程序区写
[/Quote]
也许是要考虑下前段程序来做
wangchangk 2009-06-28
  • 打赏
  • 举报
回复
是不是SQL保存的XML不够灵活,要想灵活的保存还要用程序区写
ai_li7758521 2009-06-23
  • 打赏
  • 举报
回复
可以参照:(创建共享文件夹)
create  table  #([output]  varchar(8000))  

declare @BackupPath varchar(200)
set @BackupPath='D:\文件夹'
set @BackupPath='dir '+@BackupPath+''
insert into # exec master..xp_cmdshell @BackupPath

if exists(select 1 from # where [output]='找不到文件')
begin
set @BackupPath=replace(@BackupPath,'dir ','md ')
exec master..xp_cmdshell @BackupPath
exec master..xp_cmdshell 'net share test="D:\文件夹"'
end
else
begin
print '文件夹已存在!'
end

drop table #
将其改造,然后利用作业定时执行。
wangchangk 2009-06-23
  • 打赏
  • 举报
回复
5楼的方法是可以,SQL中能不能自己创建文件夹,比如说每个月一个文件夹,我就可以用程序自动创建,而不用手动去每月建了
  • 打赏
  • 举报
回复
xml没用过。帮顶
ai_li7758521 2009-06-23
  • 打赏
  • 举报
回复
if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_savexml]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)   
drop procedure [dbo].[p_savexml]
GO

/*--存为XML

将表/查询存储为标准的XML文件

--邹建 2003.12(引用请保留此信息)--*/

/*--调用示例
--用SQL用winows身份验证的情况
exec p_savexml @sql='地区资料',@fname='c:\地区资料.xml'

--用指定的用户
exec p_savexml @sql='地区资料',@fname='c:\地区资料.xml',@userid='sa'
--*/
create proc p_savexml
@sql varchar(8000), --要保存的表/视图/SQL查询语句
@fname varchar(1000)='c:\tmp.xml', --保存的XML文件名
@userid varchar(50)='', --用户名,如果为nt验证方式,则为''
@password varchar(50)='' --密码
as
declare @err int,@src varchar(255),@desc varchar(255)
declare @obj int,@constr varchar(1000)
if isnull(@userid,'')=''
set @constr='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog='
+db_name()+';Data Source='+@@servername
else
set @constr='Provider=SQLOLEDB.1;Persist Security Info=True;'
+'User ID='+@userid+';Password='+isnull(@password,'')
+';Initial Catalog='+db_name()+';Data Source='+@@servername

exec @err=sp_oacreate 'adodb.recordset',@obj out
if @err<>0 goto lberr

exec @err=sp_oamethod @obj,'open',null,@sql,@constr
if @err<>0 goto lberr

set @sql='del '+@fname
exec master..xp_cmdshell @sql,no_output
exec @err=sp_oamethod @obj,'save',null,@fname,1
if @err<>0 goto lberr

exec @err=sp_oadestroy @obj
return

lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
select cast(@err as varbinary(4)) as 错误号
,@src as 错误源,@desc as 错误描述
go
htl258_Tony 2009-06-23
  • 打赏
  • 举报
回复
参考:http://www.cnblogs.com/zyh-nhy/archive/2008/11/27/1342150.html

对XML不是很熟,只能提供参考资料,帮顶了.
wangchangk 2009-06-23
  • 打赏
  • 举报
回复
定制JOB是可以定期执行,但是我想问的是怎么把表里面的数据定期保存到XML文件中,用存储过程怎么把一个表里的数据保存到硬盘上的一个文件夹中,以XML形式保存?
htl258_Tony 2009-06-23
  • 打赏
  • 举报
回复
定时作业的制定方法参考  

企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
EXEC 存储过程名 ...

--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排


然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
--小F-- 2009-06-23
  • 打赏
  • 举报
回复
这个估计要用到JOB
对XML不熟悉 帮顶

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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