使用目录函数

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)

重要

SQL Server Native Client (SNAC) 未随附:

  • SQL Server 2022 (16.x) 及更高版本
  • SQL Server Management Studio 19 及更高版本

不建议使用 SQL Server Native Client(SQLNCLI 或 SQLNCLI11)和旧的 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)进行新的应用程序开发。

对于新项目,请使用以下驱动程序之一:

对于作为 SQL Server 数据库引擎组件(版本 2012 到 2019)随附的 SQLNCLI,请参阅此支持生命周期特例

所有数据库都具有一个包含该数据中存储的数据的结构。 此结构的定义以及权限等其他信息存储在目录(作为一组系统表实现)中,也称为数据字典。

SQL Server Native Client ODBC 驱动程序使应用程序能够通过调用 ODBC 目录函数来确定数据库结构。 目录函数返回结果集中的信息,这些函数是使用目录存储过程实现的,用于查询该目录中的系统表。 例如,应用程序可以请求包含系统上所有表的相关信息的结果集或包含特定表中的所有列的相关信息的结果集。 标准 ODBC 目录函数用于从应用程序连接到的 SQL Server 获取目录信息。

SQL Server 支持分布式查询,在单个查询中访问来自多个异类 OLE DB 数据源的数据。 访问远程 OLE DB 数据源的一种方法是将数据源定义为链接服务器。 可以使用sp_addlinkedserver来完成此操作。 定义链接服务器后,使用由四个部分组成的名称可以在 Transact-SQL 语句中引用该服务器上的对象:

linked_server_name.catalog.schema.object_name

SQL Server Native Client ODBC 驱动程序支持两个特定于驱动程序的函数,可帮助从链接服务器获取目录信息:

  • SQLLinkedServers

    返回定义到本地服务器的链接服务器列表。

  • SQLLinkedCatalogs

    返回链接服务器包含的目录的列表。

拥有链接服务器名称和目录名称后,SQL Server Native Client ODBC 驱动程序支持使用由两部分构成的名称linked_server_name从目录中获取信息。以下 ODBC 目录函数上的 CatalogName 目录:

  • SQLColumnPrivileges

  • SQLColumns

  • SQLPrimaryKeys

  • SQLStatistics

  • SQLTablePrivileges

  • SQLTables

由两部分构成的linked_server_name。SQLForeignKeys 上的 FKCatalogNamePKCatalogName 也支持目录

使用 SQLLinkedServers 和 SQLLinkedCatalogs 需要以下文件:

  • sqlncli.h

    包括用于链接服务器目录函数的函数原型和常量定义。 必须在 ODBC 应用程序中包括 sqlncli.h,并且在编译应用程序时必须将其放在 include 路径中。

  • sqlncli11.lib

    必须放在链接器的库路径中,并将其指定为要链接的文件。 sqlncli11.lib 随 SQL Server Native Client ODBC 驱动程序一起分发。

  • sqlncli11.dll

    在执行时必须存在。 sqlncli11.dll随 SQL Server Native Client ODBC 驱动程序一起分发。

另请参阅

SQL Server Native Client (ODBC)
SQLColumnPrivileges
SQLColumns
SQLPrimaryKeys
SQLTablePrivileges
SQLTables
SQLStatistics