怎样用SQL语句将一个远程SQL Server数据库中各个表的数据导入到本地数据库相应的表中
发表时间:2005-7-18
怎样用SQL语句将一个远程SQL Server数据库中各个表的数据导入到本地数据库相应的表中?
表结构完全相同,听说DTS比较方便,但是不会用
一、方法一
1、远程数据库注册到本地的方法:
exec sp_addlinkedserver '名称','','SQLOLEDB','远程数据库的地址' exec sp_addlinkedsrvlogin '名称','false','本地用户名称','远程用户名称','远程用户密码' |
2、倒入表
insert 数据库.dbo.表 |
建立了连接后,试试看
二、方法二
访问不同电脑上的数据库(远程访问,只好联好网就一样),如果经常访问或数据量较大,建议用链接服务器方法。
1、创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或IP地址' |
2、使用示例
--查询示例 --导入示例 go |
3、若不再使用时,删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins' |
三、方法三
如果只是临时访问,可以直接使用openrowset。
1、示例1
--查询示例 --导入示例 |
2、示例2(此示例使用测试正常)
insert 数据库名称.dbo.表 |
四、相关问题
问:当导入的数据量很大,而网络突然中断,会不会出现问题?
答:中断的话,就等于什么也没做,也就是事务回滚,重新运行。
五、随后的问题
问:由于在表中,通常都定义了自增量列及主键,而自增量列还进行了关连。由于在倒表时,自增量列不随原表变化,就造成了关联关系的丢失,通常的做法是:
SET IDENTITY_INSERT 表名 ON |
即使用“SET IDENTITY_INSERT 表名 ON”将自增量关闭,但是,需要注意的是,当该表中没有自增量字段时,使用该命令会产生一个错误。
因此,在没有自增量字段的表中进行“插入”操作时,请不要使用“SET IDENTITY_INSERT 表名 ON”。