mssql跨DBserver访问的利器-linkserver

  最近公司有跨DBserver访问Table的需求,感受linkserver仍是比较好用的,分享一下体会。

首先linked server 能够把不一样的数据服务器的数据整合在一块儿,这样你能够在一台服务器上访问全部其余服务器的数据,而且能够在表的级别上进行相互的JOIN,函数和存储过程均可以访问其余的服务器,这简直太强大了。

不过网上的问题和答案多不少,好多东西须要靠摸索,这也符合微软的一向风格,帮助文档说的模棱两可,没有具体实例,错误提示信息不明确,非要本身苦心钻研才行,好多人都中途放弃了。 

假设你有一台ms sql 2005 的服务器,首先说说如何链接Oracle (10g,8i都经过了),首先须要在这台服务器上安装oracle的客户端软件,这样才能够经过oracle的 tnsnames.ora 配置文件里面的 tnsnames 访问其余的oracle服务器。你还须要有oracle 的用户名和口令,这个事固然的了。

创建链接服务器:

EXEC sp_addlinkedserver   'linkedservername', 'Oracle', 'OraOLEDB.Oracle', 'oracleservername'

linkedservername 是链接服务器的名字,随便起名
oracleservername 是Oracle服务器的 tns 名字


输入用户信息:

EXEC sp_addlinkedsrvlogin 'linkedservername', 'FALSE', NULL, 'username', 'password'


具体使用语法以下
SELECT TOP 10 * FROM linkedservername..schemaname.tablename

注意,链接服务器的名字和schema name之间是两个点,schema name 和 table name 区分大小写!SQL语句的语法是ms sql 语法,而不是oracle的语法。

========================================================================================

接下来再看看如何链接其余的ms sql 服务器。
链接微软自家的服务器更加容易,导航到: 

server name --> Server Objects --> Linked Servers 

点击右键选择 new linked server

General 页面:
Linked Server: 输入 你的另一台ms sql server的服务器名字,机器名或者域名
server type 选择 sql server

Security 页面:这一步比较复杂!
你若是使用的是 NT账号设置这个,只有你用这个账号登录你这台服务器,这个链接才有效,若是你不是用相同的账号登录,就没办法访问,我以为这个限制比较多,不建议采用。具体设置方法是:

Local Login: nt user name
impersonate: YES

Be made using this security context: check
remote login: nt user name
with password: nt user password

你可使用ms sql认证的用户名来创建链接,这个比较实用,还省事
不用管上面的那个 local server login to remote server login mappings 部分,直接跳到下边输入
Be made using this security context: check
remote login: sql user name
with password: sql user passwordsql

相关文章
相关标签/搜索