适用于:SQL Server
Azure SQL 托管实例
通过链接服务器,SQL Server 数据库引擎和 Azure SQL 托管实例可从远程数据源中读取数据,并针对 SQL Server 实例之外的 OLE DB 数据源等远程数据库服务器执行命令。 通常,配置链接服务器是为了支持数据库引擎在其他 SQL Server 实例或诸如 Oracle 等其他数据库产品上执行包含表的 Transact-SQL 语句。 许多类型的 OLE DB 数据源都可配置为链接服务器,包括第三方数据库提供程序和 Azure Cosmos DB。
通过链接服务器,能够实现可在其他数据库中提取和更新数据的分布式数据库。 对于需要实现数据库分片的场景,链接服务器是很好的解决方案,让你无需创建自定义应用程序代码或从远程数据源直接加载。 链接服务器具有以下优点:
- 能够访问 SQL Server 之外的数据。
- 能够对企业内的异类数据源发出分布式查询、更新、命令和事务。
- 能够以相似的方式确定不同的数据源。
你可以使用 SQL Server Management Studio 或使用 sp_addlinkedserver 语句配置链接服务器。 OLE DB 访问接口的类型和所需的参数的数量大不相同。 例如,一些提供程序要求你使用 sp_addlinkedsrvlogin 为连接提供一个安全性上下文。 某些 OLE DB 提供程序允许 SQL Server 更新 OLE DB 源上的数据。 其他访问接口可能仅提供只读数据访问权限。 有关每个 OLE DB 访问接口的信息,请查看该 OLE DB 访问接口的文档。
链接服务器定义指定了下列对象:
- OLE DB 访问接口
- OLE DB 数据源
“OLE DB 访问接口” 是管理特定数据源并与其交互的 DLL。 “OLE DB 数据源” 标识可通过 OLE DB 访问的特定数据库。 虽然通过链接服务器定义查询的数据源通常是数据库,但 OLE DB 访问接口对各种文件和文件格式仍可用。 这些文件和文件格式包括文本文件、电子表格数据和全文内容搜索的结果。
从 SQL Server 2019 (15.x) 开始,Microsoft OLE DB Driver for SQL Server (PROGID: MSOLEDBSQL) 是默认的 OLE DB 提供程序。 在早期版本中,SQL Server Native Client (PROGID: SQLNCLI11) 是默认的 OLE DB 提供程序。
只有在使用 32 位 Microsoft.JET.OLEDB.4.0 OLE DB 提供程序时,Microsoft 才支持连接到 Microsoft Access 和 Excel 源的链接服务器。
下图显示了链接服务器配置的基础。
通常,链接服务器用于处理分布式查询。 当客户端应用程序通过链接服务器执行分布式查询时,SQL Server 将分析命令并向 OLE DB 发送请求。 行集请求的形式可以是对该访问接口执行查询或从该访问接口打开基表。
有一组选项可以控制 SQL Server 如何加载和使用注册表中指定的 OLE DB 提供程序。
设置链接服务器时,请通过 SQL Server 注册连接信息和数据源信息。 完成注册后,可以用单个逻辑名称来引用该数据源。
可以使用存储过程和目录视图来管理链接服务器定义:
- 通过运行 创建链接服务器定义。
- 通过对 系统目录视图运行查询,查看有关在 SQL Server 的特定实例中定义的链接服务器的信息。
- 通过运行 删除链接服务器定义。 还可以使用此存储过程删除远程服务器。
还可以使用 SQL Server Management Studio 定义链接服务器。 在对象资源管理器中,右键单击“服务器对象”,选择“新建”,再选择“链接服务器”。 通过右键单击链接服务器名称并选择“删除”,可以删除链接服务器定义。
对链接服务器执行分布式查询时,请对每个要查询的数据源指定由四个部分组成的完全限定的表名。 这个四部分名称格式应为 linked_server_name.catalog.schema.object_name。
Azure SQL 托管实例链接服务器支持使用 Microsoft Entra ID(以前称为 Azure Active Directory)进行 SQL 身份验证和身份验证。
若要使用 Azure SQL 托管实例上的 SQL 代理作业通过链接服务器查询远程服务器,请使用 sp_addlinkedsrvlogin 创建从本地服务器上的登录到远程服务器上登录的映射。 当 SQL 代理作业通过链接服务器连接到远程服务器时,会在远程登录的上下文中执行 T-SQL 查询。 有关详细信息,请参阅使用 Azure SQL 托管实例的 SQL 代理作业。
两种受支持的 Microsoft Entra 身份验证模式为:托管标识和直通。 托管标识身份验证可用于允许本地登录名查询远程链接服务器。 直通身份验证允许可使用本地实例进行身份验证的主体通过链接服务器访问远程实例。
若要在 Azure SQL 托管实例中对链接服务器使用 Microsoft Entra 直通身份验证,需要满足以下先决条件:
- 将同一主体添加为远程服务器上的登录。
- 这两个实例都是 SQL 信任组的成员。
以下限制适用于 Azure SQL 托管实例上链接服务器的 Microsoft Entra 身份验证:
- 不同 Microsoft Entra 租户中的 SQL 托管实例不支持 Microsoft Entra 身份验证。
- 仅 OLE DB 驱动程序版本 18.2.1 及更高版本才支持链接服务器的 Microsoft Entra 身份验证。
目前,MSOLEDBSQL19 阻止创建没有加密和可信证书的链接服务器(自签名证书还不够)。 如果需要链接服务器,请使用现有受支持的 MSOLEDBSQL 版本。
- 创建链接服务器(SQL Server 数据库引擎)
- sys.servers (Transact-SQL)
- sp_linkedservers (Transact-SQL)
- sp_addlinkedserver (Transact-SQL)
- sp_addlinkedsrvlogin (Transact-SQL)
- sp_dropserver (Transact-SQL)
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/46279.html