1.在服务器1上作服务器2的链接服务器 2.insert 服务器2.库.用户名.table1 select * from 服务器1.库.用户名.table1
1.在服务器2(被导入的服务器)上创建服务器1的链接服务器 2.在服务器2上运行 insert into table1 select * from 链接服务器.数据库名.用户名.table1
1.在服务器2(被导入的服务器)上创建服务器1的链接服务器 这个以前没用过 ,期待一个实例 (以下引自:联机帮助) sp_addlinkedserver 创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft® SQL Server™,则可执行远程存储过程。语法 sp_addlinkedserver [ @server = ] 'server' [ , [ @srvproduct = ] 'product_name' ] [ , [ @provider = ] 'provider_name' ] [ , [ @datasrc = ] 'data_source' ] [ , [ @location = ] 'location' ] [ , [ @provstr = ] 'provider_string' ] [ , [ @catalog = ] 'catalog' ]参数 [ @server = ] 'server'要创建的链接服务器的本地名称,server 的数据类型为 sysname,没有默认设置。如果有多个 SQL Server 实例,server 可以为 servername\instancename。此链接的服务器可能会被引用为下面示例的数据源:SELECT *FROM [servername\instancename.]pubs.dbo.authors. 如果未指定 data_source,则服务器为该实例的实际名称。[ @srvproduct = ] 'product_name'要添加为链接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128),默认设置为 NULL。如果是 SQL Server,则不需要指定 provider_name、data_source、location、provider_string 以及目录。[ @provider = ] 'provider_name'与此数据源相对应的 OLE DB 提供程序的唯一程序标识符 (PROGID)。provider_name 对于安装在当前计算机上指定的 OLE DB 提供程序必须是唯一的。provider_name 的数据类型为nvarchar(128),默认设置为 NULL。OLE DB 提供程序应该用给定的 PROGID 在注册表中注册。[ @datasrc = ] 'data_source'由 OLE DB 提供程序解释的数据源名称。data_source 的数据类型为 nvarchar(4000),默认设置为 NULL。data_source 被当作 DBPROP_INIT_DATASOURCE 属性传递以便初始化 OLE DB 提供程序。 当链接的服务器针对于 SQL Server OLE DB 提供程序创建时,可以按照 servername\instancename 的形式指定 data_source,它可以用来连接到运行于特定计算机上的 SQL Server 的特定实例上。servername 是运行 SQL Server 的计算机名称,instancename 是用户将被连接到的特定 SQL Server 实例的名称。[ @location = ] 'location'OLE DB 提供程序所解释的数据库的位置。location 的数据类型为 nvarchar(4000),默认设置为 NULL。location 作为 DBPROP_INIT_LOCATION 属性传递以便初始化 OLE DB 提供程序。[ @provstr = ] 'provider_string'OLE DB 提供程序特定的连接字符串,它可标识唯一的数据源。provider_string 的数据类型为 nvarchar(4000),默认设置为 NULL。Provstr 作为 DBPROP_INIT_PROVIDERSTRING 属性传递以便初始化 OLE DB 提供程序。当针对 Server OLE DB 提供程序提供了链接服务器后,可将 SERVER 关键字用作 SERVER=servername\instancename 来指定实例,以指定特定的 SQL Server 实例。servername 是 SQL Server 在其上运行的计算机名称,instancename 是用户连接到的特定的 SQL Server 实例名称。[ @catalog = ] 'catalog'建立 OLE DB 提供程序的连接时所使用的目录。catalog 的数据类型为sysname,默认设置为 NULL。catalog 作为 DBPROP_INIT_CATALOG 属性传递以便初始化 OLE DB 提供程序。返回代码值 0(成功)或 1(失败)结果集 如果没有指定参数,则 sp_addlinkedserver 返回此消息:Procedure 'sp_addlinkedserver' expects parameter '@server', which was not supplied.使用适当 OLE DB 提供程序和参数的 sp_addlinkedserver 返回此消息: Server added.
--创建链接服务器 exec sp_addlinkedserver 'ITSV','','SQLOLEDB','远程服务器名或ip地址' exec sp_addlinkedsrvlogin 'ITSV','false',null,'用户名','密码'--查询示例 select * from ITSV.数据库名.dbo.表名--导入示例 select * into 表 from ITSV.数据库名.dbo.表名--以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV','droplogins'--连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset--查询示例 select * from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)--生成本地表 select * into 表 from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)--把本地表导入远程表 insert openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名) select *from 本地表--更新本地表 update b set b.列A=a.列A from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)as a inner join 本地表 b on a.column1=b.column1--openquery用法需要创建一个连接--首先创建一个连接创建链接服务器 exec sp_addlinkedserver 'ITSV','','SQLOLEDB','远程服务器名或ip地址' --查询 select * FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名') --把本地表导入远程表 insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名') select * from 本地表 --更新本地表 update b set b.列B=a.列B FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名') as a inner join 本地表 b on a.列A=b.列A--3、opendatasource/openrowset SELECT * FROM opendatasource('SQLOLEDB', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码' ).test.dbo.roy_ta --把本地表导入远程表 insert opendatasource('SQLOLEDB', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码').数据库.dbo.表名 select * from 本地表
如上,如果是频繁的两库操作的话, 如只需一次或次数不多可使用如下--*远程库 --1 select * from openrowset('SQLOLEDB','BERRY';'sa';'sa',tt.dbo.ALaw_FilePunish)--选择delete from openrowset('SQLOLEDB','BERRY';'sa';'sa',tt.dbo.ALaw_BestbigPunish)--删除 --注意'192.168.18.252';'sa';'abc'中间是";",而不是","。 --2 select a.* from OPENQUERY('SQLOLEDB','BERRY';'sa';'sa',库名.dbo.表名) a SELECT a.* FROM OPENQUERY ('oradb','192.168.0.111';'sa';'sa',库名.dbo.表名) a --3 SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data Source=192.168.0.111;User ID=sa;Password=sa').tt.dbo.ALaw_BestbigPunish --第二个参数webconfig连接字符串可以使用delphi、visual studio等开发工具中的ADO控件自动生成相应的连接字符串
--*远程库 --1 select * from openrowset('SQLOLEDB','BERRY';'sa';'sa',tt.dbo.ALaw_FilePunish)--选择 select * from openrowset('SQLOLEDB','远程服务器名';'用户名';'密码';'库名.dbo.表名')
请问从一台服务器的 table1 表,导入数据到另一台服务器的table1 表的script 怎样写的呢? 两个表的数据结构是相同的建立一个连接: insert into servername2.dbname2.dbo2.tb2 select * from servername1.dbname1.dbo1.tb1
不同服务器数据库之间的数据操作--创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表 select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表 insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) select *from 本地表 --更新本地表 update b set b.列A=a.列A from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' --查询 select * FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') --把本地表导入远程表 insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') select * from 本地表 --更新本地表 update b set b.列B=a.列B FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset SELECT * FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta --把本地表导入远程表 insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 select * from 本地表
2.insert 服务器2.库.用户名.table1 select * from 服务器1.库.用户名.table1
2.在服务器2上运行 insert into table1 select * from 链接服务器.数据库名.用户名.table1
(以下引自:联机帮助)
sp_addlinkedserver
创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft® SQL Server™,则可执行远程存储过程。语法
sp_addlinkedserver [ @server = ] 'server'
[ , [ @srvproduct = ] 'product_name' ]
[ , [ @provider = ] 'provider_name' ]
[ , [ @datasrc = ] 'data_source' ]
[ , [ @location = ] 'location' ]
[ , [ @provstr = ] 'provider_string' ]
[ , [ @catalog = ] 'catalog' ]参数
[ @server = ] 'server'要创建的链接服务器的本地名称,server 的数据类型为 sysname,没有默认设置。如果有多个 SQL Server 实例,server 可以为 servername\instancename。此链接的服务器可能会被引用为下面示例的数据源:SELECT *FROM [servername\instancename.]pubs.dbo.authors. 如果未指定 data_source,则服务器为该实例的实际名称。[ @srvproduct = ] 'product_name'要添加为链接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128),默认设置为 NULL。如果是 SQL Server,则不需要指定 provider_name、data_source、location、provider_string 以及目录。[ @provider = ] 'provider_name'与此数据源相对应的 OLE DB 提供程序的唯一程序标识符 (PROGID)。provider_name 对于安装在当前计算机上指定的 OLE DB 提供程序必须是唯一的。provider_name 的数据类型为nvarchar(128),默认设置为 NULL。OLE DB 提供程序应该用给定的 PROGID 在注册表中注册。[ @datasrc = ] 'data_source'由 OLE DB 提供程序解释的数据源名称。data_source 的数据类型为 nvarchar(4000),默认设置为 NULL。data_source 被当作 DBPROP_INIT_DATASOURCE 属性传递以便初始化 OLE DB 提供程序。 当链接的服务器针对于 SQL Server OLE DB 提供程序创建时,可以按照 servername\instancename 的形式指定 data_source,它可以用来连接到运行于特定计算机上的 SQL Server 的特定实例上。servername 是运行 SQL Server 的计算机名称,instancename 是用户将被连接到的特定 SQL Server 实例的名称。[ @location = ] 'location'OLE DB 提供程序所解释的数据库的位置。location 的数据类型为 nvarchar(4000),默认设置为 NULL。location 作为 DBPROP_INIT_LOCATION 属性传递以便初始化 OLE DB 提供程序。[ @provstr = ] 'provider_string'OLE DB 提供程序特定的连接字符串,它可标识唯一的数据源。provider_string 的数据类型为 nvarchar(4000),默认设置为 NULL。Provstr 作为 DBPROP_INIT_PROVIDERSTRING 属性传递以便初始化 OLE DB 提供程序。当针对 Server OLE DB 提供程序提供了链接服务器后,可将 SERVER 关键字用作 SERVER=servername\instancename 来指定实例,以指定特定的 SQL Server 实例。servername 是 SQL Server 在其上运行的计算机名称,instancename 是用户连接到的特定的 SQL Server 实例名称。[ @catalog = ] 'catalog'建立 OLE DB 提供程序的连接时所使用的目录。catalog 的数据类型为sysname,默认设置为 NULL。catalog 作为 DBPROP_INIT_CATALOG 属性传递以便初始化 OLE DB 提供程序。返回代码值
0(成功)或 1(失败)结果集
如果没有指定参数,则 sp_addlinkedserver 返回此消息:Procedure 'sp_addlinkedserver' expects parameter '@server', which was not supplied.使用适当 OLE DB 提供程序和参数的 sp_addlinkedserver 返回此消息: Server added.
--创建链接服务器
exec sp_addlinkedserver 'ITSV','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'ITSV','false',null,'用户名','密码'--查询示例
select * from ITSV.数据库名.dbo.表名--导入示例
select * into 表 from ITSV.数据库名.dbo.表名--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV','droplogins'--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset--查询示例
select * from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)--生成本地表
select * into 表 from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)--把本地表导入远程表
insert openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)
select *from 本地表--更新本地表
update b
set b.列A=a.列A
from openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1--openquery用法需要创建一个连接--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV','','SQLOLEDB','远程服务器名或ip地址'
--查询
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名') as a
inner join 本地表 b on a.列A=b.列A--3、opendatasource/openrowset
SELECT *
FROM opendatasource('SQLOLEDB', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource('SQLOLEDB', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码').数据库.dbo.表名
select * from 本地表
如只需一次或次数不多可使用如下--*远程库
--1
select * from openrowset('SQLOLEDB','BERRY';'sa';'sa',tt.dbo.ALaw_FilePunish)--选择delete from openrowset('SQLOLEDB','BERRY';'sa';'sa',tt.dbo.ALaw_BestbigPunish)--删除
--注意'192.168.18.252';'sa';'abc'中间是";",而不是","。
--2
select a.* from OPENQUERY('SQLOLEDB','BERRY';'sa';'sa',库名.dbo.表名) a
SELECT a.* FROM OPENQUERY ('oradb','192.168.0.111';'sa';'sa',库名.dbo.表名) a
--3
SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data Source=192.168.0.111;User ID=sa;Password=sa').tt.dbo.ALaw_BestbigPunish
--第二个参数webconfig连接字符串可以使用delphi、visual studio等开发工具中的ADO控件自动生成相应的连接字符串
--1
select * from openrowset('SQLOLEDB','BERRY';'sa';'sa',tt.dbo.ALaw_FilePunish)--选择
select * from openrowset('SQLOLEDB','远程服务器名';'用户名';'密码';'库名.dbo.表名')
两个表的数据结构是相同的建立一个连接:
insert into servername2.dbname2.dbo2.tb2 select * from servername1.dbname1.dbo1.tb1
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例
select * from ITSV.数据库名.dbo.表名 --导入示例
select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset --查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表 --更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset
SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
select * from 本地表