55

データベースを必要とする MS Visual C# Express を使用して構築したいアプリケーション (必要になった場合は、Standard にアップグレードするつもりです)。

私は SQL Server Compact に夢中でした。私のアプリケーションを自分のコンピューターにインストールしようとしている人々に、SQL Server 全体などをインストールしてもらいたくないからです。エンドユーザーがインストールできるように、これをできるだけ簡単にしたいと考えています。

そのため、テーブルの列でできることには制限があるように見えるまで、私はすべて興奮していました。新しいデータベースを作成し、テーブルを作成しました。列を作成しようとすると、「テキスト」データ型がないように見えます.255文字に制限されているように見える「ntext」と呼ばれるものだけです。「int」は4つまでに制限されているようです(11が欲しかった)。また、「auto_increment」機能はないようです。

これらは私が一緒に暮らさなければならない本当の制限ですか?(または、「標準」ではなく「高速」を使用しているためですか)。これらが実際の制限である場合、私の要件を満たす他のデータベース オプションは何ですか? (大物ユーザーのための簡単なインストール - 私のエンドユーザーはコンピューターの平均的なユーザーであり、複雑な場合はアプリケーションに不満を感じると思います)

-アディーナ

PS: データベース データをエンド ユーザーに対して暗号化することも望んでいます。彼らがデータベーステーブルに直接アクセスできるようにしたくありません。

PPS。http://www.microsoft.com/Sqlserver/2005/en/us/compact.aspxを読み ましたが、これらの特定の制限に関する議論は見られませんでした

4

9 に答える 9

33

暗号化についてはよくわかりませんが、おそらく次のリンクが役立つでしょう:
http://msdn.microsoft.com/en-us/library/ms171955.aspx

それ以外については、
「Text」と「auto_increment」は Access を思い起こさせます。SQL Server Compact は、SQL Server のサーバーエディションとのアップグレード互換性があると想定されています。つまり、コンパクト データベースで使用されるクエリとテーブルは、変更せずに完全なデータベースに転送する必要があります。そのことを念頭に置いて、最初にAccess 名ではなくSQL Server の型と名前varchar(max)を確認する必要があります。この場合は、、、bigintおよびidentity列です。

残念ながら、Compact Edition にはまだ varchar(max) 型がないため、これは varchar(max) に関して失敗することに気付くでしょう。うまくいけば、彼らはすぐにそれを修正します。ただし、あなたが見ていた ntext 型は 255 バイトをはるかに超えてサポートしています。実際には 2 30バイトであり、これは 5 億文字を超えます。

最後に、bigint はストレージに 8 バイトを使用します。あなたは 11 を求めました。しかし、ここでストレージ サイズが使用可能な 10 進数の桁数を示していることに混乱する可能性があると思います。これは絶対に当てはまりません。8 バイトのストレージでは、最大 2 64までの値を使用でき、11 桁をはるかに超える数に対応します。それほど多くのアイテムがある場合は、サーバー クラスのデータベースが必要になるでしょう。本当に数字で考えたい場合は、numericタイプも提供されています。

于 2009-01-02T18:06:06.303 に答える
16

次の 2 つの要因に対応する必要がありました。

  1. 私は Sql Compact を頻繁に使用していますが、それが機能するのは素晴らしいことです。つまり、単一のファイル データ ストアを備えた、単一ユーザーの組み込みデータベースです。それはすべての SQL の良さとトランザクションを備えています。それは私にとって十分に並列処理を扱います。このページの否定論者のうち、この製品を定期的に使用している人はほとんどいないことに注意してください。サーバーで使用しないでください。それはその目的ではありません。私の顧客の多くは、ファイルが「データベース」であることさえ知りません。これは単なる実装上の問題です。
  2. ユーザーからのデータを暗号化する必要があります。おそらく、プログラムからのみ表示できるようにするためです。これは単に起こりません。プログラムがデータを復号化できる場合は、キーをどこかに保存する必要があり、十分に熱心な攻撃者がそれを見つけます。

情報の価値に見合うだけの価値がないほど、キーを十分に隠すことができる場合があります。Windows には、便利なマシンとユーザーのローカル暗号化ルーチンが用意されています。しかし、コンピュータ上に隠したデータをユーザーが決して見つけられないという強い要件が設計にある場合 (ただし、プログラムは見つけます) は再設計する必要があります。その保証は単純に達成できません。

于 2010-09-11T05:05:03.223 に答える
5

ntext非常に大きなテキストデータをサポートします(MSDNを参照してください。これはCompact 4.0の場合ですが、言及しているデータ型の3.5にも同じことが当てはまります)。

intは数値データ型であるため、のサイズ4は4バイト/ 32ビットのストレージ(–2,147,483,648から2,147,483,647)を意味します。11バイトのデータを1つの列に格納する場合はvarbinary、サイズが11のタイプを使用します。

SQL Serverの世界で列を自動的にインクリメントするには、IDENTITYキーワードを使用します。これにより、行にデータを挿入するときにSQL Serverによって列の値が自動的に決定され、他の行との衝突が防止されます。

SQL Compactで作成するときにパスワードを設定したり、データベースを暗号化して、ユーザーがアプリケーションに直接アクセスできないようにすることもできます。MSDNのデータベースの保護を参照してください。

上記のすべての項目は、SQL Serverの使用方法を理解している限り、実際には制限ではありません。

そうは言っても、SQLCompactにはいくつかの制限があります。

  • サポートなしNVARCHAR(MAX)
    • NTEXTこれには問題なく動作します
  • VIEWsまたはPROCEDUREsの サポートなし
    • これが私が主な制限と見なしているものです
于 2011-05-20T14:45:32.850 に答える
5

SQL CE は私にとってパズルです。本当に別の SQL データベース プラットフォームが必要だったのでしょうか? そして、MS からのモバイル プラットフォームを対象とした過去数年間で 3 回目です。SQL Server とのテクノロジの共有はほとんどありません。私が知る限り、ゼロからの新しいテクノロジです。

私はそれを試してみましたが、SQLite と Codebase の両方でより成功しました。

編集:これは(多くの)違いのリストです。

于 2009-01-02T17:55:23.283 に答える
3

私はいくつかの機会にさまざまな SQL Server Compact エディションを使用しましたが、サーバー データベースとの同期に適したモバイル プラットフォーム上のデータ キャプチャ リポジトリとしてのみ使用しました。

ただし、それ以上のことを行う必要があり、アプリケーションのプライマリ データベースとして機能する必要がある場合は、SQLLite がおそらくより良い選択肢であることをお勧めします。SQLLite は完全に安定しており、広くサポートされており、あらゆる場所で使用されています (iPhone で使用されています)。例)しかし、驚くほど有能です(仮想現実シミュレータOpenSimはデフォルトのデータベースとしてそれを使用しています)、他にもたくさんあります(Microsoftを含む)。

于 2009-01-02T18:19:05.327 に答える
2

また、 SQLCEの代わりにVistaDBを使用してチャイムを鳴らす必要があります。

VistaDBは暗号化(Blowfish)をサポートし、TEXTおよびNTEXT(FTSインデックスを含む)もサポートします。

はい、上記の投稿は正しいです。SQLServerの種類を確認して、実際に一致させる必要があります。VistaDBもSQL Serverの種類を使用します(実際には、SQL CEよりも多くの機能をサポートしています。XMLが欠落しているだけです)。

VistaDBとSQLCEのその他の比較を確認するには、比較ページにアクセスしてください。詳細については、VistaDBの利点に関するSOスレッドも参照してください。

(完全な開示-私はVistaDBの所有者であるため、偏見があるかもしれません)

于 2009-05-16T05:32:27.790 に答える
2

この投稿 ( http://www.nelsonpires.com/web-development/microsoft-webmatrix-the-dawn-of-a-new-era/ ) によると、データベース ファイルを使用するため、1 つのプロセスしか実行できないと書かれています。読み取り/書き込みごとにアクセスするため、ファイルへの排他的アクセスが必要になります。また、接続は 256 に制限されており、ファイル全体をメモリにロードする必要があります。そのため、サイトが大きくなると、SQL サーバー コンパクトはサイトに適していない可能性があります。

于 2011-01-24T01:16:53.840 に答える
1

制約があります... Joel は詳細に対処したようです。SQL CE は、実際にはモバイル開発に適しています。「組み込み」データベース ソリューションのほとんどには、同様の制約があります。チェックアウト

于 2009-01-02T17:49:53.810 に答える