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) を最後にもってくることです。
理由は知りません。ピンときてやってみたら何とかなったという、理解しようとしてはいけないアレです。