tnsnames.ora 配置)。EXEC master.dbo.sp_addlinkedserver
@server = N'TESTLINK', -- 链接服务器名称
@srvproduct = N'Oracle', -- 产品名
@provider = N'MSDAORA', -- OLE DB Provider for Oracle
@datasrc = N'TEST'; -- tnsnames.ora 中的网络服务名
GO
# E:\Oracle\product\10.2.0\client_1\NETWORK\ADMIN\tnsnames.ora
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.210)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname = N'TESTLINK',
@locallogin = NULL, -- 所有本地登录均使用此远程凭据
@useself = N'False',
@rmtuser = N'test', -- Oracle 用户名
@rmtpassword = N'test123'; -- Oracle 密码
GO
-- 四段式命名:链接服务器..Oracle Schema.表名
SELECT * FROM TESTLINK..TEST.TEST_MAIN;
-- 结果示例
ID VALUE
--- -----
1 ONE
2 TWO
3 THREE
现象:查询报错「无法初始化数据源对象」。原因:Oracle Client 安装目录权限不足,SQL Server 服务账户无法读取 DLL。
E:\Oracle\product\10.2.0\client_1)→「属性」→「安全」。
Oracle Client 目录权限设置示意
提示:生产环境建议创建专用低权限域账户运行 SQL Server 服务,并仅授予该账户 Oracle Client 目录的读取/执行权限,避免使用 Everyone。