2

DBCOLUMN_COLLATINGSEQUENCE私たちの C++ アプリケーションは、OLEDB API を使用して( 、などを使用して) SQL Server から照合関連の列メタデータを取得できますがDBCOLUMN_TDSCOLLATION、アプリケーションはクロスプラットフォームでなければならないため、ODBC を使用する必要があります。行セットのメタデータを読み取るためにODBC API を使用SQLColAttributeしていますが、この API には照合名を返すことができる識別子がありません。

SQL_CA_SS_COLUMN_COLLATION(で定義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 に答える