2

我们的 C++ 应用程序能够使用 OLEDB API(使用 , 等)从 SQL Server 获取排序规则相关的列元数据DBCOLUMN_COLLATINGSEQUENCEDBCOLUMN_TDSCOLLATION但我需要使用 ODBC,因为我们的应用程序必须是跨平台的。我们使用 ODBC APISQLColAttribute来读取行集元数据,但是这个 API 没有任何可以返回排序规则名称的标识符。

我尝试使用SQL_CA_SS_COLUMN_COLLATION(defined in sqlncli.h) 作为标识符,但SQLColAttribute只返回“排序规则名称”作为排序规则。

我还尝试使用SQLGetStmtAttr后跟SQLGetDescField,使用相同的标识符,然后我得到了“排序规则名称”。

我已经搜索了所有 MSDN 的答案,但没有找到任何答案。我可以从中获取排序规则名称INFORMATION_SCHEMA.COLUMNS,但这不适用于查询返回的计算列。

我正在寻找一种干净的方法来使用 ODBC 从结果集元数据中获取整理信息。有任何想法吗?

4

1 回答 1

0

此查询将返回当前数据库中存在的每一列的 collat​​ion_name。

SELECT o.name AS ObjectName, c.name AS ColumnName, c.collation_name 
FROM sys.columns c
    INNER JOIN sys.objects o ON c.object_id = o.object_id
    INNER JOIN sys.types ty ON c.system_type_id = ty.system_type_id
WHERE o.is_ms_shipped = 0
    AND ty.collation_name IS NOT NULL
    AND ty.name <> 'sysname';
于 2013-04-03T01:25:47.227 回答