如何在Azure SQL托管实例中创建链接服务器连接IBM AS400 i系列
从Azure SQL托管实例获取IBM i(AS400)数据的实现方案
方法一:通过链接服务器直接访问
前置条件
- 确保Azure SQL托管实例所在VNet与IBM i网络通过VPN网关或ExpressRoute建立私有连接,验证IBM i的446端口(默认数据库端口)可访问。
- 确认操作账号拥有Azure SQL托管实例的
ALTER ANY LINKED SERVER权限。
配置链接服务器
使用T-SQL存储过程创建链接服务器,支持ODBC或OLE DB两种驱动方式:
-- 使用ODBC驱动创建链接服务器 EXEC sp_addlinkedserver @server = 'IBMILINK', -- 自定义链接服务器名称 @srvproduct = 'IBM i Access ODBC Driver', @provider = 'MSDASQL', @datasrc = 'YourIBMiDSN'; -- 对应配置好的ODBC数据源名称 -- 添加IBM i登录映射 EXEC sp_addlinkedsrvlogin @rmtsrvname = 'IBMILINK', @useself = 'FALSE', @rmtuser = 'IBMi_Username', -- IBM i账号 @rmtpassword = 'IBMi_Password'; -- IBM i密码
若使用IBM OLE DB Provider,将@provider改为IBMDASQL,@srvproduct设为IBM i即可。
查询数据
创建完成后,通过四部分名称或OPENQUERY执行查询:
-- 四部分名称查询 SELECT * FROM [IBMILINK].[TargetLibrary].[TargetTable]; -- 使用OPENQUERY(适合复杂SQL) SELECT * FROM OPENQUERY(IBMILINK, 'SELECT * FROM TargetLibrary.TargetTable');
方法二:通过Azure Data Factory同步数据到托管实例
如果直接链接服务器存在网络或驱动限制,可通过ADF中转同步:
- 配置源数据集:创建IBM i (AS400) 类型数据集,填写IBM i的服务器地址、端口、用户名、密码及目标库名称。
- 配置目标数据集:创建Azure SQL托管实例类型数据集,填写托管实例的连接信息及目标表名。
- 创建复制管道:添加复制活动,将源数据集的数据同步到托管实例的目标表,可设置定时调度实现增量或全量同步,之后直接查询托管实例本地表即可。
核心连接参数说明
- IBM i侧:
- 服务器地址:IBM i的IP地址或主机名
- 端口:默认446(若修改过需对应调整)
- 认证信息:拥有目标库、表读取权限的IBM i账号和密码
- 目标库(Library):存储待访问表的IBM i逻辑库名称
- Azure SQL托管实例侧:
- 链接服务器权限:需使用具备
ALTER ANY LINKED SERVER权限的账号执行配置 - 网络要求:必须通过私有连接打通网络,不建议公网直接访问IBM i
- 链接服务器权限:需使用具备
内容的提问来源于stack exchange,提问作者Asutosh Nayak
相关产品推荐
相关产品推荐

