Share via


WMI ODBC Adapter Limitations

This section discusses some of the restrictions you may encounter when using the WMI ODBC adapter with other applications.

The following is a list of applications that you might use with the WMI ODBC adapter:

  • Microsoft Access
  • 16-Bit Client Applications
  • WMI ODBC Adapter Queries and SQL Reserved Words

Note  For more information about support or requirements for installation on a specific operating system, see Operating System Availability of WMI Components.

Microsoft Access

The Access client application uses the ODBC 1.0 SQL_C_LONG and SQL_C_SHORT data types to access 32-bit and 16-bit integers. These data types fetch and display integers as signed integers. As a result, some large unsigned integers in WMI can be displayed as negative numbers in Access.

When linking tables, Access always assumes the same table qualifier for all its invocations. Access caches and uses the table qualifier defined in the first table link. The SQLDriverConnect function is called only once and the connection information is used for all subsequent invocations. Because the WMI ODBC adapter maps the table qualifier to the WMI namespace, all table links are limited to the same WMI namespace. Access makes nonqualified SQLExecDirect calls to the adapter. This is also true for passthrough queries.

16-Bit Client Applications

The WMI ODBC adapter does not work with 16-bit client applications. Use the adapter only with 32-bit client applications.

WMI ODBC Adapter Queries and SQL Reserved Words

SQL passthrough queries from Access, Microsoft Query, and Visual Basic all fail if property names are SQL-reserved words. For example, INDEX is a reserved word in SQL. If a property named Index is explicitly named in a SELECT clause or is referenced in a WHERE clause, the query fails.

The following WMI CIM classes contain properties named Index:

Microsoft Query expands "SELECT *" into an explicit list of all columns, including Index, which causes an ODBC failure on these classes.

The following example shows you how to work around this problem in Access by placing the property in quotation marks.

SELECT "Index" FROM win32_DiskDrive WHERE "Index" = 0