Classic ASP + SQL Server 2012 verchar(MAX) probrem, no text displayed ?!

varchar(MAX) や nvarchar(MAX) 便利ですね。

今回は、varchar(8000) の列を varchar(MAX)に変更したことで、Classic ASP のWEBシステムで、データが表示されない、、困った、、という事件。

一般的には、WEBサーバーに、SQL Server Native Client をインストールし、SQLサーバーへの接続ドライバの指定を変更すれば解決します。

SQL Server Native Clientのインストール
https://www.microsoft.com/ja-jp/download/details.aspx?id=43339

JPN\x86\sqlncli.msi をインストールし接続文字列を変更。

Driver={SQL Server}; ⇒ PROVIDER=SQLNCLI11;  または、SQLNCLI11.1;

と変更。

例: ”PROVIDER=SQLNCLI11;USER ID=xxx;PASSWORD=xxx;INITIAL CATALOG=xxxxxxx;Server=xxxxxxx;DataTypeCompatibility=80″

で、めでたしめでたしのところが、別のページで。。。。

 

現在の_Recordset_はブックマークをサポートしてません。プロバイダーか、選択されたカーソルタイプの限界の可能性があります。 

直せばいいのだがテストの範囲も広範囲過ぎて。。

そこで… 解決策

ドライバは古いままで、何とかします。

例: tableA
col1 int
col2 varchar(MAX)
col3 datetime

の場合。

改修前: SELECT * FROM tableA

改修後: SELECT col1, col3, col2 FROM tableA

ポイントは、varchar(MAX) を最後にもってくることです。

理由は知りません。ピンときてやってみたら何とかなったという、理解しようとしてはいけないアレです。