不同数据库之间复制表的数据的方法 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表 当目标表不存在时: select * into 目的数据库..表 from 源数据库..表 --如果在不同的SQL 之间: insert into openrowset('sqloledb','目的服务器名';'sa';'',目的数据库.dbo.表) select * from 源数据库..表 --或用链接服务器: ----------------------------------------创建链接服务器------------------------------------ exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名' exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','密码' exec sp_serveroption 'srv_lnk','rpc out','true' --这个允许调用链接服务器上的存储过程 go --查询示例 select * from srv_lnk.数据库名.dbo.表名 --导入示例 select * into 表 from srv_lnk.数据库名.dbo.表名 go --后删除链接服务器 exec sp_dropserver 'srv_lnk','droplogins' --如果是将一个数据库中的数据全部复制到另一个数据库,而且两个库结构完全一样的话,就用备份/恢复的方式: /*--将一个数据库完整复制成另一个数据库 --*/ /*--调用示例 exec p_CopyDb @ddbname='test' --*/ if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_CopyDb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[p_CopyDb] GO create proc p_CopyDb @sdbname sysname='', --定义要复制的数据库名,默认为当前数据库 @ddbname sysname, --定义复制后生成的数据库名 @overexist bit=1, --是否覆盖已经存在的数据库 @killuser bit=1 --是否关闭用户使用进程,仅@overexist=1 时有效 as declare @sql varchar(8000),@bpath varchar(8000),@rpath varchar(8000) --得到要复制的数据库名 if isnull(@sdbname,'')='' set @sdbname=db_name() --得到临时备份数据目录及文件名 select @bpath=rtrim(reverse(filename)) from master..sysfiles where name='master' select @bpath=substring(@bpath,charindex('\',@bpath)+1,8000) ,@bpath=reverse(substring(@bpath,charindex('\',@bpath),8000))+'BACKUP\' mailto:+@sdbname+%20_%20+convert(varchar,getdate(),112) +'_'+replace(convert(varchar,getdate(),108),':','')...