资源描述:
《不同数据库之间复制表的数据的方法4》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、不同数据库之间复制表的数据的方法当表目标表存在时:insertinto目的数据库..表select*from源数据库..表当目标表不存在时:select*into目的数据库..表from源数据库..表--如果在不同的SQL之间:insertintoopenrowset('sqloledb','目的服务器名';'sa';'',目的数据库.dbo.表)select*from源数据库..表--或用链接服务器:----------------------------------------创建链接服务器-
2、-----------------------------------execsp_addlinkedserver'srv_lnk','','SQLOLEDB','远程服务器名'execsp_addlinkedsrvlogin'srv_lnk','false',null,'sa','密码'execsp_serveroption'srv_lnk','rpcout','true'--这个允许调用链接服务器上的存储过程go--查询示例select*fromsrv_lnk.数据库名.dbo.表名--导入示
3、例select*into表fromsrv_lnk.数据库名.dbo.表名go--后删除链接服务器execsp_dropserver'srv_lnk','droplogins'--如果是将一个数据库中的数据全部复制到另一个数据库,而且两个库结构完全一样的话,就用备份/恢复的方式:/*--将一个数据库完整复制成另一个数据库--*//*--调用示例execp_CopyDb@ddbname='test'--*/ifexists(select*fromdbo.sysobjectswhereid=object
4、_id(N'[dbo].[p_CopyDb]')andOBJECTPROPERTY(id,N'IsProcedure')=1)dropprocedure[dbo].[p_CopyDb]GOcreateprocp_CopyDb@sdbnamesysname='',--定义要复制的数据库名,默认为当前数据库@ddbnamesysname,--定义复制后生成的数据库名@overexistbit=1,--是否覆盖已经存在的数据库@killuserbit=1--是否关闭用户使用进程,仅@overexist=
5、1时有效asdeclare@sqlvarchar(8000),@bpathvarchar(8000),@rpathvarchar(8000)--得到要复制的数据库名ifisnull(@sdbname,'')=''set@sdbname=db_name()--得到临时备份数据目录及文件名5select@bpath=rtrim(reverse(filename))frommaster..sysfileswherename='master'select@bpath=substring(@bpath,ch
6、arindex('',@bpath)+1,8000),@bpath=reverse(substring(@bpath,charindex('',@bpath),8000))+'BACKUP'mailto:+@sdbname+%20_%20+convert(varchar,getdate(),112)+'_'+replace(convert(varchar,getdate(),108),':','')+'.bak'--生成数据库备份语句,进行数据库备份set@sql='backupdataba
7、semailto:%20+@sdbname+'tomailto:disk=%20%20%20+@bpath+'''withNOINIT'exec(@sql)--根据备份文件恢复成新的数据库(完成复制工作)set@sql='restoredatabasemailto:%20+@ddbname+'frommailto:disk=%20%20%20+@bpath++'withfile=1'+casewhen@overexist=1then',replace'else''end--得到数据库存放的默认目录
8、--得到SQL安装时设置的数据文件路径select@rpath=rtrim(reverse(filename))frommaster..sysfileswherename='master'select@rpath=reverse(substring(@rpath,charindex('',@rpath),8000))--添加移动逻辑文件的处理--从备份文件中获取逻辑文件名declare@lfnnvarchar(128),@tpchar(1),@iint--创建临时表,保存获取的信