这种情况可以用dts吗?怎么用?

elven 2003-10-18 02:46:54
我需要将数据库中的一部分表包括表的结构和内容,一起装载到另一台机子上(此机是独立的即无网络),用dts怎样实现。
bcp我试过不行,因为它一次只能导出/入一张表的内容,并且无法导入表的结构。
因此我想用dts将瘦所有的表一起打成dts包(强调含有表的结构与内容),然后将此包放到需导入数据的机子上运行,恢复数据。
dts是否可以办到?怎样操作?
如果不行,该怎样解决这种问题???
望各位献计献策!!!
...全文
55 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
老本 2003-10-21
  • 打赏
  • 举报
回复
bigInt 导出有问题。
如何解决?
elven 2003-10-19
  • 打赏
  • 举报
回复
你说的我想过,
但是客户哪里需要装access吗?
如果不需要,那就可行了。
rocllllll 2003-10-18
  • 打赏
  • 举报
回复
简单,你用DTS先把要用的结构导到一个ACCESS文件中,再把文件带到客户哪里
再用DTS就行了.
我不明白为什么要写那么复杂的sql程序来导数据
elven 2003-10-18
  • 打赏
  • 举报
回复
重申一遍,运行dts包的机子与原数据源机子不在一起,
即:
运行dts包的机子是用户机;
原数据源机是我的开发用的。
elven 2003-10-18
  • 打赏
  • 举报
回复
如果做成安装程序,到客户那里去用,上面的方法可不是很好呀。
用户可不知道怎样建库,跟别谈使用SQL SERVER了。
xxu333 2003-10-18
  • 打赏
  • 举报
回复
1/数据库全部挂上去
2/建一个新库
3/用SQL数据转换服务(DTS)
。。。
看一下就明白
选中你要copy的表(可以选触发器/主键等)

yoki 2003-10-18
  • 打赏
  • 举报
回复
(转)
/********************导整个数据库*********************************************/

用bcp实现的存储过程


/*
实现数据导入/导出的存储过程
根据不同的参数,可以实现导入/导出整个数据库/单个表
调用示例:
--导出调用示例
----导出单个表
exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',1
----导出整个数据库
exec file2table 'zj','','','xzkh_sa','C:\docman',1

--导入调用示例
----导入单个表
exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',0
----导入整个数据库
exec file2table 'zj','','','xzkh_sa','C:\docman',0

*/
if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)
drop procedure File2Table
go
create procedure File2Table
@servername varchar(200) --服务器名
,@username varchar(200) --用户名,如果用NT验证方式,则为空''
,@password varchar(200) --密码
,@tbname varchar(500) --数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表
,@filename varchar(1000) --导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt
,@isout bit --1为导出,0为导入
as
declare @sql varchar(8000)

if @tbname like '%.%.%' --如果指定了表名,则直接导出单个表
begin
set @sql='bcp '+@tbname
+case when @isout=1 then ' out ' else ' in ' end
+' "'+@filename+'" /w'
+' /S '+@servername
+case when isnull(@username,'')='' then '' else ' /U '+@username end
+' /P '+isnull(@password,'')
exec master..xp_cmdshell @sql
end
else
begin --导出整个数据库,定义游标,取出所有的用户表
declare @m_tbname varchar(250)
if right(@filename,1)<>'\' set @filename=@filename+'\'

set @m_tbname='declare #tb cursor for select name from '+@tbname+'..sysobjects where xtype=''U'''
exec(@m_tbname)
open #tb
fetch next from #tb into @m_tbname
while @@fetch_status=0
begin
set @sql='bcp '+@tbname+'..'+@m_tbname
+case when @isout=1 then ' out ' else ' in ' end
+' "'+@filename+@m_tbname+'.txt " /w'
+' /S '+@servername
+case when isnull(@username,'')='' then '' else ' /U '+@username end
+' /P '+isnull(@password,'')
exec master..xp_cmdshell @sql
fetch next from #tb into @m_tbname
end
close #tb
deallocate #tb
end
go


27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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