2014年1月29日水曜日

VB SQLServerCompact3.5SP1 制限事項

あまり情報のない SQL Server Compact 3.5 SP1 ですが、ご本家  SQL Server との違い、制限事項をメモしておきます。
どうも、SQLServer で検索しても、思う様に動かない時の為の、個人的な備忘録です。
気付いたら、追加して行きますね。


以下、順不同で、かつ、網羅していませんが、個人的なメモですので、ご勘弁下さい。


先ず、Compact の名前からも分かる様に、機能限定版です。
T-SQL言語のサブセットを実装していますが、エンジンはご本家 SQL Server とは異なっています。
一応の事は出来ますが、制限がある訳です。


大きな違いは、ファイルベールで、データベースそのものを管理する機能は、ほぼ、無い 事です。
細かい面倒は、システム設計者が アプリやソフト等で独自に書いてやらねばなりません。
アプリケーションに組み込まれて使う前提なので、ユーティリティの類はあまりありません。


データベースの削除やコピーは OS のファイルシステムで行う
対話的な操作は OS の Explorer で、
アプリケーションからは System.IO.File クラスを使って、 という形になりますね。


列名変更等のデータベース構造の訂正は上手く行かない
   具体的には、事後の、列名変更が駄目、列の移動・挿入も駄目
   列は、一旦作成すると、順番と名称が固定されてしまい、以降は追加のみが可能。
   列名を変えたければ、列の最後に変更列名で新規作成し、データをコピー その後に元列を削除。
   列の移動・挿入では、それ以降の全ての列を削除し、新規に再構築。 或いは、諦め。
充分にデータベース構造を検討してから、作成する方がいいです。
取り敢えず作って動かして見ながら修正して行く方法では、嵌り易いです。
いっその事、新規に、作り直した方が早い場合すらありました。
     データを取得( Fill )する SQL 文で、順番や名称を変え、
     データベース上は、名称の不一致や順序の混乱に目を瞑る、といった 妥協も必要かも です。
            (要、相互の対照の記録を何処かに残す。 例:ソースコード中)
     これを解消するには、先述の大幅な変更(データベース作り直し)を乗り越えねばなりません。


サブクエリ (副問い合わせ) は一部サポートされません
Select ... ( Select ... ) From ...  等のサブクエリが使えません。  select_list そして expression の中では駄目
Select ... Where Exist ( Select ... ) From ... の様に、Where 句中 Exist 句の中のサブクエリはOKです。


別テーブルへの書き出しがサポートされません
Select ... INTO ... は駄目です。  INTO 句はありません。



0 件のコメント:

コメントを投稿