ADSI のソートバッファが 1000 [Windows/ASP/VBScript]
http://blog.so-net.ne.jp/nakagami/2005-05-23
の users.vbs だと、無事、ユーザー一覧が取ってこれるのに
SELECT 文の最後に ORDER BY name とか付けると、無事ソートできるのはいいんだけど、
最初の 1000 個しかとってこれない。
最初は、自分の間違いかと思ったが、同じ目にあっている人発見。
http://codebetter.com/blogs/brendan.tompkins/archive/2003/12/19/4746.aspx#29624
ちきしょー。なんでそんな制限が必要なんだよぉ。
上の blog エントリのコメント欄にいくつか解決策があるが、
・SQLServer にデータを置くのはできれば避けたい
・UNION を使っている例は、なんだか意味が良く分からないけど、手元で動かせない
というわけで、結局
・ORDER BY 句を使わないで全行をファイルに出力して SORT コマンドでソート
という戦略をとることにした。
探し方が悪いのかもしれないけど、VBScript で AD のユーザー管理をしている人って
思いのほか少ない予感(特に、日本で)
全件取得後にRecordSet.Sortでソートしたら上手く行く気がするなあ、
というのをtrackback送ろうとしたら失敗したので、コメントさせていただきます。
http://www.zoili.net/442 に書いてみました。自分では試してないのがなんともですが。
by hine (2005-07-21 01:54)
私のところでは、
「現在のプロバイダは並べ替え、またはフィルタリングに必要なインターフェイスをサポートしていません。」
とエラーが出ますね。(Windows2000)
hine さんのところでは、出来てるみたいなので、
インストールされている ADSI の DB プロバイダのバージョンによっては
うまくいくのかもしれませんね。
by nakagami (2005-07-21 10:53)
あ、今見たら Recordset の取得の仕方が hine さんと違いました。
ちょっと書き方を変えると、Sort できるのかもしれません。
とりあえず、私は sort コマンドに渡す方法で今回は満足しました。
by nakagami (2005-07-21 11:08)
満足されたようですし、今更のコメントですが、
次の記事に解決方法が載っていました。
http://www.microsoft.com/japan/technet/community/columns/scripts/sg0405.mspx
objCommand.Properties("Page Size") = 1000 ←これがポイントのようです。
ググってこちらにたどり着き、大変、助かりましたのでお役に立てば。
by cozigo (2006-02-21 20:13)