使用目录函数

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

重要

已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中删除SQL Server Native Client(通常缩写为 SNAC)。 不建议在新应用程序开发工作中使用 SQL Server Native Client(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。 请在此后切换为使用新版 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新版的 Microsoft OLE DB Driver for SQL Server。 对于作为 SQL Server 数据库引擎组件附带的 SQLNCLI (版本 2012 到 2019) ,请参阅此支持生命周期异常

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

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_nameSQLForeignKeys 上的 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