不同网段间数据库之间复制 参见联机帮助复制与dts两方面内容! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1: 发布/订阅2:DTS可以3:脚本只能复制对象不能复制数据吧?4:还可以用备份/恢复。5:还可以直接连接远程服务器。 用什么方式和总部互联的1 发布订阅可以的 3 脚本导出数据 参考http://expert.csdn.net/Expert/topic/1397/1397315.xml?temp=1.774234E-02拨号做订阅发布 数据传输量大的话 数据会很慢我做过这样一个方法你可以参考,但有些和你不同1 需要改动表结构2 需要手工拨号文件传输总分部数据写procedure把新增修改记录导出文本,这样需要在表中添加判断标志,如:1 未传传输,2 已上传把文本传到其他服务器,这个可以用前台软件写个传输文件程序(或者直接用master..xp_cmdshell),取指定服务器目录内的文件,再用过程导入数据库,导入时进行数据过滤程序可以这样写过程 比如表名叫table 状态字段为state (1 未传传输,2 已上传)CREATE PROCEDURE sp_convert --数据转换过程with recompile ,encryptionasdeclare @bcp varchar(600), @path char(100), @file char(200), @user char(10), @mdate char(8) @mdept char(5), @passwd char(8) if @@TRANCOUNT >0 COMMIT TRAN select @user=suser_name() select @passwd=password from login where code=ltrim(rtrim(@username)) --用户登录表 select @path=ltrim(rtrim(up_path))+'download\' from parm --运行参数表 包括文件传输路径 select @mdate=convert(char(8),cast(open_close as datetime),112) select @file='file'+@mdate 得到带日期的txt文件 --convert data to txtselect @bcp='bcp "select * from dbname..table where state=1 " queryout '+ltrim(rtrim(@path))+ltrim(rtrim(@file))+'.txt'+' -c -t, -U '+@user+'-P '+@passwd --选择未传输数据导出exec master..xp_cmdshell @bcpbegin tranupdate dbname..table set state=1 where ct_state=1 --更新状态commit tranCREATE PROCEDURE sp_copyfile --文件copy过程with recompile,encryptionasdeclare @path char(100), @copy char(300), @user char(10), @passwd char(8), @bcpname char(300)if @@TRANCOUNT >0 COMMIT TRAN select @usere=suser_name() select @passwd=password from login where code=ltrim(rtrim(@username)) select @path=ltrim(rtrim(up_path))+'upload\' from parm --copy files to serversselect @copy='copy '+ltrim(rtrim(@path))+'file*.txt '+ltrim(rtrim(@path))+substring(convert(char(8),getdate(),112),7,2)exec master..xp_cmdshell @copyselect @copy='del '+ltrim(rtrim(@pathname))+'file*.txt' --copy完成删除文件exec master..xp_cmdshell @copyname if @@TRANCOUNT >0 COMMIT TRAN return 总部每天做日结处理,也用同样的方法导出数据成文本,在分部与总部联接传输数据据同时把总部数据传入分部上面的那个日结处理程序 有这样几个问题:1)拨号是以人工方式进行的, 文件上传是用前台程序做的2)后台的处理过程做成job每天定时处理 3)分布和总部的表结构相同2. 是记录的变化就好办了 ,根据上面的标志来判断 设立标记字段的目的 一是为了防止数据的重复处理,已经处理过的数据就不再理会了 二是可以减少文件传输量,只对新生成或更改的记录传输 还有一个补充,如果总部的数据发生变化,也需要用过程导出数据上面的那个总分部的处理方法比较适合这样的流程;分部对各自的数据库进行操作,比如销售,调拨等(库存数会发生变化),日结处理时把相应的销售记录传输至总部总部服务器对各分部上传的记录进行处理,比如库存数的增减,处理完毕生成各分部全部最新的数据,传回到分部,这样在总部的表中就不需要设立标记字段了 你的各个案场和总部如果有网络连接,这样就好办了,上面各位说的都可以实现.如果没有,你可以导出到TXT文档,总部再从TXT导入到SQL. sql-server2000如何导入sql-server2005的MDF 求sql多表连接查询一条,谢谢 sql group by语句 请教一个按时间统计的SQL语句 没有分了, IDENTITY_INSERT 是什么 意思 ???? 正常情况下是 on 还是 off ????? MS SQL Server,查询varchar 类型字段,仍然尾随空格 求助:关于SQL字段拼接问题 SQL update 的问题 按分组进行分页 關於SQL 語法問題, 想做一個結合顯示,請各位高手幫手~~ 如何取得局域网上的所有SQL Server服务的机器名? 如何设置自动+1字段的初值?
2:DTS可以
3:脚本只能复制对象不能复制数据吧?
4:还可以用备份/恢复。
5:还可以直接连接远程服务器。
1 发布订阅可以的
3 脚本导出数据 参考
http://expert.csdn.net/Expert/topic/1397/1397315.xml?temp=1.774234E-02拨号做订阅发布 数据传输量大的话 数据会很慢
我做过这样一个方法你可以参考,但有些和你不同
1 需要改动表结构
2 需要手工拨号文件传输总分部数据写procedure把新增修改记录导出文本,这样需要在表中添加判断标志,
如:1 未传传输,2 已上传把文本传到其他服务器,这个可以用前台软件写个传输文件程序(或者直接用
master..xp_cmdshell),取指定服务器目录内的文件,再用过程导入数据库,导入时进行数据过滤
程序可以这样写过程 比如表名叫table 状态字段为state (1 未传传输,2 已上传)CREATE PROCEDURE sp_convert --数据转换过程
with recompile ,encryption
as
declare
@bcp varchar(600),
@path char(100),
@file char(200),
@user char(10),
@mdate char(8)
@mdept char(5),
@passwd char(8)
if @@TRANCOUNT >0
COMMIT TRAN
select @user=suser_name()
select @passwd=password from login where code=ltrim(rtrim(@username)) --用户登录表
select @path=ltrim(rtrim(up_path))+'download\'
from parm --运行参数表 包括文件传输路径
select @mdate=convert(char(8),cast(open_close as datetime),112)
select @file='file'+@mdate 得到带日期的txt文件
--convert data to txtselect @bcp='bcp "select * from dbname..table where state=1 " queryout '+ltrim(rtrim(@path))+ltrim(rtrim(@file))+'.txt'+' -c -t, -U '+@user+'-P '+@passwd --选择未传输数据导出
exec master..xp_cmdshell @bcp
begin tran
update dbname..table set state=1 where ct_state=1 --更新状态
commit tran
CREATE PROCEDURE sp_copyfile --文件copy过程
with recompile,encryption
as
declare
@path char(100),
@copy char(300),
@user char(10),
@passwd char(8),
@bcpname char(300)if @@TRANCOUNT >0
COMMIT TRAN
select @usere=suser_name()
select @passwd=password from login where code=ltrim(rtrim(@username))
select @path=ltrim(rtrim(up_path))+'upload\' from parm
--copy files to servers
select @copy='copy '+ltrim(rtrim(@path))+'file*.txt '+ltrim(rtrim(@path))+substring(convert(char(8),getdate(),112),7,2)
exec master..xp_cmdshell @copy
select @copy='del '+ltrim(rtrim(@pathname))+'file*.txt' --copy完成删除文件
exec master..xp_cmdshell @copyname
if @@TRANCOUNT >0
COMMIT TRAN
return 总部每天做日结处理,也用同样的方法导出数据成文本,在分部与总部联接传输数据据同时把
总部数据传入分部
上面的那个日结处理程序
有这样几个问题:
1)拨号是以人工方式进行的, 文件上传是用前台程序做的
2)后台的处理过程做成job每天定时处理
3)分布和总部的表结构相同2. 是记录的变化就好办了 ,根据上面的标志来判断
设立标记字段的目的
一是为了防止数据的重复处理,已经处理过的数据就不再理会了
二是可以减少文件传输量,只对新生成或更改的记录传输 还有一个补充,如果总部的数据发生变化,也需要用过程导出数据上面的那个总分部的处理方法比较适合这样的流程;分部对各自的数据库进行操作,比如销售,调拨等(库存数会发生变化),日结处理时把相应的销售记录传输至总部总部服务器对各分部上传的记录进行处理,比如库存数的增减,处理完毕生成各分部全部最新的数据,传回到分部,这样在总部的表中就不需要设立标记字段了