创建链接服务器

创建链接服务器 

1、创建方法

--exec sp_addlinkedserver '注册名','','SQLOLEDB','远程服务器名或ip地址和端口(ip和端口中间用逗号)'
--exec sp_addlinkedsrvlogin '注册名','false',null,'用户名','密码'

exec   sp_dropserver     '注册名',   'droplogins'
--go

2、具体说明
sp_addlinkedserver 
[ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] 
     
[ , [ @provider= ] 'provider_name' ] 
     
[ , [ @datasrc= ] 'data_source' ] 
     
[ , [ @location= ] 'location' ] 
     
[ , [ @provstr= ] 'provider_string' ] 
     
[ , [ @catalog= ] 'catalog' ]  
参数
[ @server = ] 'server' 
要创建的链接服务器的名称。server 的数据类型为 sysname,没有默认值。 

[ @srvproduct = ] 'product_name' 
要添加为链接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 
nvarchar(128),默认值为 NULL。如果为 SQL Server,则不必指定 provider_name、data_source、location、provider_string 和 catalog。

[ @provider = ] 'provider_name' 
与此数据源对应的 OLE DB 访问接口的唯一编程标识符 (PROGID)。对于当前计算机中安装的指定 OLE DB 访问接口,provider_name 必须唯一。provider_name 的数据类型为 
nvarchar(128),默认值为 NULL;但如果忽略 provider_name,则使用 SQLNCLI。SQLNCLI 是 SQL 本机 OLE DB 访问接口。OLE DB 访问接口应以指定的 PROGID 在注册表中注册。

[ @datasrc = ] 'data_source' 
由 OLE DB 访问接口解释的数据源的名称。data_source 的数据类型为 
nvarchar(4000)。data_source 作为 DBPROP_INIT_DATASOURCE 属性传递以初始化 OLE DB 访问接口。

[ @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 或传递给 IDataInitialize 或设置为 DBPROP_INIT_PROVIDERSTRING 属性以初始化 OLE DB 访问接口。

在针对 SQL 本机客户端 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 访问接口。在针对 SQL Server 实例定义链接服务器时,目录指向链接服务器映射到的默认数据库。

sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'
     [ , [ @useself = ] 'TRUE' | 'FALSE' | NULL ]
     [ , [ @locallogin = ] 'locallogin' ]
     [ , [ @rmtuser = ] 'rmtuser' ]
     [ , [ @rmtpassword = ] 'rmtpassword' ]

参数

[@rmtsrvname =] 'rmtsrvname'

是应用登录映射的链接服务器名称。rmtsrvname 的数据类型为 sysname,没有默认设置。(对应sp_addlinkedserver 配置的server)。

[@useself =] 'useself'

决定用于连接到远程服务器的登录名称。useself 的数据类型为 varchar(8),默认设置为 TRUE。true 值指定 SQL Server 验证的登录使用其自己的凭据以连接到 rmtsrvname,而忽略 rmtuserrmtpassword 参数。false 值指定 rmtuserrmtpassword 参数用来连接到特定 localloginrmtsrvname。如果 rmtuserrmtpassword 也设置为 NULL,则连接链接服务器不需使用任何登录或密码。对于 Windows NT 身份验证登录而言,useself true 则无效,除非 Microsoft Windows NT® 环境支持安全帐户委托,并且,提供程序支持 Windows 身份验证(此时不再需要创建值为 true 的映射,不过创建仍然有效)。

[ @locallogin =] 'locallogin'

本地服务器上的登录。locallogin 的数据类型为 sysname,默认设置为 NULL。NULL 值指定此条目将应用于所有连接到 rmtsrvname 的本地登录。如果值不为 NULL,则 locallogin 可以是一个 SQL Server 登录或 Windows NT 用户。必须授予 Windows NT 用户直接访问 SQL Server 或通过其作为已授予访问权限的组的成员来访问 SQL Server 的权限。

[@rmtuser =] 'rmtuser'

useselffalse 时,用来连接 rmtsrvname 的用户名,rmtuser 的数据类型为 sysname,默认设置为 NULL。

[@rmtpassword =] 'rmtpassword'

rmtuser 相关的密码。rmtpassword 的数据类型为 sysname,默认设置为 NULL。

 

3.实例展示

--创建链接服务器  
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  
>exec sp_addlinkedserver @server=’别名’,@provider=’sqloledb’,@srvproduct=’’,@datasrc=’远程服务器IP’ 

4、不同数据库的创建

/SQL SERVER

 

Exec sp_droplinkedsrvlogin DBVIP,Null

 

Exec sp_dropserver DBVIP

 

EXEC sp_addlinkedserver

    @server='DBVIP',--被访问的服务器别名

    @srvproduct='',

    @provider='SQLOLEDB',

    @datasrc='Server2'   --要访问的服务器

 

EXEC sp_addlinkedsrvlogin

     'DBVIP', --被访问的服务器别名

     'false',

     NULL,

     'sa', --帐号

     'thankyoubobby' --密码

 

Select   *   from DBVIP.pubs.dbo.orders  

 

/ORACLE

 

需要SQL SERVER服务器中安装ORACLE客户端;

 

Exec sp_droplinkedsrvlogin demo,Null

 

Exec sp_dropserver demo

 

go

 

EXEC sp_addlinkedserver

        @server ='demo', --要创建的链接服务器别名

        @srvproduct='Oracle', --产品名称    

        @provider='MSDAORA', --OLE DB 字符

        @datasrc='ServiceName'   --数据源 oracle"ora92"network"admin"tnsnames.ora 查看

 

EXEC sp_addlinkedsrvlogin

     'demo', --已建立的链接服务器名

     'false', -- 固定 */

     NULL, --为每个登陆SQL SERVER的用户使用此链接服务器,否则写用户名 */

     'userid', --帐号

     'password' –密码

go

 

SELECT * FROM demo.. USERID.TABLE

 

--注意用大写,因为在Oracle的数据字典中为大写

 

数据库的格式必须是链接服务器名..ORACLE用户名.表名.

 

SELECT * FROM OPENQUERY(demo ,'select * from tbdemo' )

 

UPDATE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE id = 101')

 

SET name = 'hello';

 

INSERT OPENQUERY (demo, 'SELECT id FROM tbdemo')

 

VALUES ('hello');

 

DELETE OPENQUERY (demo, 'SELECT id FROM tbdemo WHERE name = ''hello''');

 

如此则在SQL SERVER中就可以访问ORACLE的数据了。

 

建立的链接服务器可以在企业管理器中看见.

 

/ACCESS

 

--建立连接服务器

 

EXEC sp_addlinkedserver

         'ai',             --要创建的链接服务器名称

         ‘access',     --产品名称   

         'Microsoft.Jet.OLEDB.4.0', --OLE DB 字符

         'd:"testdb"db.mdb' --数据源 -- 盘符:"路径"文件名 -- ""网络名"共享名"文件名 (网络版本)

GO

 

--创建链接服务器上远程登录之间的映射

 

--链接服务器默认设置为用登陆的上下文进行

 

--现在我们修改为连接链接服务器不需使用任何登录或密码

 

exec sp_addlinkedsrvlogin

           'ai',

           'false'

 go

 

select * from ai...mytable

 

/EXCEL

 

--建立连接服务器

 

EXEC sp_addlinkedserver

            'ai_ex',            --要创建的链接服务器名称

            'ex',     --产品名称        

            'Microsoft.Jet.OLEDB.4.0', --OLE DB 字符

            'd:"testdb"mybook.xls' , --数据源 -- 盘符:"路径"文件名-- ""网络名"共享名"文件名 (网络版本)

            null,

            'Excel 5.0' --OLE DB 提供程序特定的连接字符串

GO

----创建链接服务器上远程登录之间的映射

 

--链接服务器默认设置为用登陆的上下文进行

 

--现在我们修改为连接链接服务器不需使用任何登录或密码

 

exec sp_addlinkedsrvlogin

          'ai_ex',

          'false'

go

--查询数据

 

select * from ai_ex...sheet3$

 

/MS SQL

 

--建立连接服务器

 

EXEC sp_addlinkedserver

           'ai_mssql',        --要创建的链接服务器名称      

           'ms',     --产品名称

           'SQLOLEDB', --OLE DB 字符

           '218.204.111.111,3342' --数据源

GO

--创建链接服务器上远程登录之间的映射

EXEC sp_addlinkedsrvlogin

       'ai_mssql',

       'false',

       NULL,

       'zhangzhe', --远程服务器的登陆用户名

       'fish2231' --远程服务器的登陆密码

go

--查询数据

 

select * from ai_mssql.pubs.dbo.jobs

 

--还有一个更简单的办法

 

--这种方式在链接服务器建立后,它是默认开放RPC的

 

--建立连接服务器

 

EXEC sp_addlinkedserver

         '218.204.111.111,3342', --要创建的链接服务器名称

         'SQL Server' --这里就用数据源作名称

GO

--创建链接服务器上远程登录之间的映射

 

EXEC sp_addlinkedsrvlogin

      '218.204.111.111,3342',

      'false',

      NULL,

      'zhangzhe', --远程服务器的登陆用户名

      'fish2231' --远程服务器的登陆密码

go

--查询数据

select * from [218.204.253.131,3342].pubs.dbo.jobs

go

 

5、手动配置

 

一、打开服务器对象-》链接服务器:(如下图)

二、选择“链接服务器”,右键,“新建链接服务器”,弹出“新建联机服务”窗口:

 

(1)在“常规”选项卡中,输入“链接服务器名称”为“GPS”(可以任意写),,“服务器类型”选择“其他数据源”中的,访问接口为“SQL Native Client”;产品名称为“Ms SQL”;数据源为“222.35.45.123,2433”(IP地址+逗号+端口号)。如下图:

 

(2)在“安全性”选项卡中,选择“使用此安全上下文建立连接”,

 

在“远程登录”输入“GPS_new”(即用户名),在“使用的密码”输入“密码”(即对应的密码)。如下图:



 

(3)在“服务器选项”选项卡中,设置“RPC”和“RPC Out”都为“true”。如下图:



 

三、点击“确定”。即成功的建立“链接服务器”。

 

可以使用sql语句进行测试:

 

语法: select * from [链接服务器名].[远程数据库名].[所有者].[表名]

 

例如: select * from GPS.GPS_database.dbo.Carinfo_FK

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值