0
私はOLEDBにわたりテーブルTBL1( somenameののデータ型はnvarchar(64) )OLEDB比較問題のデータ型はnvarchar(のSQLServer 2005)
を持っている私は、パラメータとして3文字のユニコードを結合 SELECT 1 FROM Tbl1 WHERE SomeName = ?
を選択しようとしています原因:DB_E_ERRORSINCOMMAND(0x80040E14L)
「データNVARCHARタイプとNTEXTがオペレーターに同じで互換性のない」私は既に入力バインディング以下試みた:
1) ...
currentBind.wType = DBTYPE_VARIANT;
currentBind.cbMaxLen = 20
// where data points to valid VT_BSTR allocated by SysAllocString
...
2) ...
currentBind.wType = DBTYPE_WSTR;
currentBind.cbMaxLen = 20
// where data points to valid VT_BSTR allocated by SysAllocString
...
いずれにしても、SQLServerはこのパラメータをntextとして扱います。 提案がありますか?前もって感謝します。
はい、役立ちます。 SQLプロファイラには、 @ p1 int set @p1 = 21 exec sp_prepexec @ p1出力、N '@ P1 bigint、@ P2 ntext、@ P3 bigint'、N ' – Dewfy
それから、ntextとして扱われます(@ p2を参照)。可能であればプロバイダを更新するか(それがその仕事をよりうまくやってくれることを期待して)、「迅速かつ汚れたハック」に固執してください。 – AlexS
残念ながら、プロバイダは "偉大かつ強力な" MSSQL Server 2005のネイティブドライバです。 – Dewfy