遇到下列问题:
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的朝阳网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
线上服务器A,中转服务器B,本地服务器C
数据在A上面,想在B上面操作类似 select * from [A].[database].table这样的SQL,不用去链接服务器,直接把处理结果导入B然后生成报表。
结果报错如下:
消息 7202,级别 11,状态 2,第 1 行
在 sys.servers 中找不到服务器 'A'。请验证指定的服务器名称是否正确。如果需要,请执行存储过程 sp_addlinkedserver 以将服务器添加到 sys.servers。
执行下面操作在B服务器上面创建A服务器连接,
step1:服务器地址(IP),服务器类型,访问借口
step2:用户设置、安全设置。
注意上面的本地登录用户和远程用户名,注意最下面的使用此安全上下文建立连接。输入用户名密码。服务器选项设为默认可以。
OK 再次执行select * from [A].[database].table 数据展现正常,问题解决。
EXEC sp_addlinkedserver
@server='Province', --被访问的服务器别名
@srvproduct='ORACLE', --SqlServer默认不需要写
@provider='MSDAORA', --不同的库都是不一样的,OLE DB字符
@datasrc='192.168.88.88/ORCL'--要访问的服务器
GO
EXEC sp_addlinkedsrvlogin
@rmtsrvname='Province', --被访问的服务器别名
@useself='false', --固定这么写
@locallogin='sa', --本地操作应户名
@rmtuser='kobe', --被访问的服务器用户名
@rmtpassword='kobe123'--被访问的服务器用密码
GO
--参数解释:
sp_addlinkedserver:创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。
sp_addlinkedsrvlogin:创建或更新本地 Microsoft® SQL Server™ 实例上的登录与链接服务器上远程登录之间的映射。
现在测试一下,用帐号sa本地登录SqlServer,新建一个查询,输入
SELECT * FROM OPENQUERY(Province, 'select * from t_base_school')
比如:
SELECT organization_id,organization_name FROM OPENQUERY(Province, 'select * from t_base_organizationtree')
没问题的话,就能查询到数据了。
一些常用操作:
--查询操作
SELECT * FROM OPENQUERY(Province, 'select * from t_base_duty')
--删除操作
DELETE FROM OPENQUERY(Province, 'select * from t_base_duty')
--插入操作
INSERT INTO OPENQUERY (province,'SELECT * FROM t_base_role') (role_id,role_name,bureautype_id,is_system,b_use,field_order,b_del,identity_id) VALUES (10,'科比',7,1,0,1,0,2)
--更新操作
UPDATE OPENQUERY (province,'SELECT * FROM t_base_role') SET role_name='科比' WHERE role_id=10
注:技巧(OPENQUERY(Province, 'select * from t_base_duty') 看做是一张表)
首先你说的外部数据库是指的跨服务器还是在同一个服务器上;
如果在同一台服务上的两个库的话,直接使用库名.表名直接访问,如果是在不同服务器上的话,需要建立服务器连接:
exec
sp_addlinkedserver
--链接服务名称
@server
=
'UPDateLink',
--产品名称
@srvproduct
=
'',
--访问接口
@provider
=
'SQLOLEDB',
--数据源
@datasrc
=
'200.200.200.251'
declare
@LocalUser
varchar(20),@ServerUser
varchar(20),@SeverPSW
varchar(20)
Set
@LocalUser
=
'sa'
Set
@ServerUser
=
'root'
Set
@SeverPSW
=
'617114'
exec
sp_addlinkedsrvlogin
UPDateLink,False,@LocalUser,@ServerUser,@SeverPSW
无论使用那种数据库,都有和其他数据库进行通讯或者数据文件进行数据交换的需求。
在应用程序中进行信息交换和信息共享的时候,可以通过数据文件交换或者数据库间的数据互访。今天为大家分享如何使用SQLSERVER链接服务器访问数据库,实现数据共享。
链接服务器是SQLServer数据库自定义的虚拟服务器,它定义了访问OLEDB数据所需要的全部信息。
方法/步骤
步骤1:打开企业管理器,如下。
步骤2:选择数据库,安全性,点击新建链接服务器。
步骤3:选择链接服务器属性,常规,输入名称:TEST,选择ORACLE数据库提供程序,输入名称、数据源。
步骤4:进行安全性设置。本地登录,选择SQLServer数据库登录用户,远程登录用户和密码,输入远程连接数据库的用户和密码,选择用此安全上下文进行,输入远程登录用户和密码。
步骤5:点击TEST链接服务器下的表,我们可以访问ORACLE数据库的表了。
注意:产品名称要和所链接的服务器相对应,使用ORACLE数据库就要输入ORACLE,使用SQLServer就输入SQLServer。
END
注意事项
本地登录需要输入本地SQLServer的用户和密码。
SQLServer链接服务器可以通过配置读取到ORACLE数据库数据。
1、打开sql
server
management
studio;
2、连接到sql
server
2008;
3、打开“服务器对象”-“链接服务器”;
4、右键“新建链接服务器”弹出对话框;
5、常规里在“链接服务器”输入2000所在的实例名。一般是机器名;
6、安全性里添加一个登录,用于登录到2000。是不是没设置这里?