用SQL语句将远程SQL Server数据库中表数据导入到本地数据库相应的表中

怎样用SQL语句将一个远程SQL Server数据库中各个表的数据导入到本地数据库相应的表中?
表结构完全相同,听说DTS比较方便,但是不会用

一、方法一

1、远程数据库注册到本地的方法

exec sp_addlinkedserver ‘名称’,”,’SQLOLEDB’,'远程数据库的地址’

exec sp_addlinkedsrvlogin ‘名称’,'false’,'本地用户名称’,'远程用户名称’,'远程用户密码’

2、倒入表

insert 数据库.dbo.表
select * from 远程名称.dbo.表

建立了连接后,试试看

二、方法二

访问不同电脑上的数据库(远程访问,只好联好网就一样),如果经常访问或数据量较大,建议用链接服务器方法。

1、创建链接服务器

exec sp_addlinkedserver ‘srv_lnk’,”,’SQLOLEDB’,'远程服务器名或IP地址’
exec sp_addlinkedsrvlogin ‘srv_lnk’,'false’,null,’用户名’,'密码’
exec sp_serveroption ‘srv_lnk’,'rpc out’,'true’  –这个允许调用链接服务器上的存储过程
go

2、使用示例

–查询示例
select * from srv_lnk.数据库名.dbo.表名

–导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名

go

3、若不再使用时,删除链接服务器

exec sp_dropserver ‘srv_lnk’,'droplogins’

三、方法三

如果只是临时访问,可以直接使用openrowset。

1、示例1

–查询示例
select * from openrowset(‘SQLOLEDB’
,’sql服务器名’;'用户名’;'密码’,数据库名.dbo.表名)

–导入示例
select * into 表 from openrowset(‘SQLOLEDB’
,’sql服务器名’;'用户名’;'密码’,数据库名.dbo.表名)

2、示例2(此示例使用测试正常)

insert 数据库名称.dbo.表
select * from
from  openrowset(‘MSDASQL’,
‘DRIVER={SQL Server};SERVER=远程服务器地址;UID=用户名;PWD=密码’,表) AS a

四、相关问题

问:当导入的数据量很大,而网络突然中断,会不会出现问题?

答:中断的话,就等于什么也没做,也就是事务回滚,重新运行。

五、随后的问题

问:由于在表中,通常都定义了自增量列及主键,而自增量列还进行了关连。由于在倒表时,自增量列不随原表变化,就造成了关联关系的丢失,通常的做法是:

SET IDENTITY_INSERT 表名 ON
insert into 表名(字段,字段,字段) values (64,’han’,'guo’)
SET IDENTITY_INSERT 表名OFF

即使用“SET IDENTITY_INSERT 表名 ON”将自增量关闭,但是,需要注意的是,当该表中没有自增量字段时,使用该命令会产生一个错误。

因此,在没有自增量字段的表中进行“插入”操作时,请不要使用“SET IDENTITY_INSERT 表名 ON”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值