16

データベースを必要とするMSVisualC#2010Expressを使用してアプリケーションを作成しています。

このアプリケーションでSQLデータベースを作成/使用するには2つの方法があるように思われることを学びました。

1つ目は、C#内から、ソリューションエクスプローラーでアプリケーションを右クリックし、[追加]->[新しいアイテム]->[ローカルデータベース]をクリックして、「ローカルデータベース」を作成できる場所のようです。次に、データベースエクスプローラーに表示され、使用できます。

もう1つの方法は、SQL Server Management Studioを使用してデータベースを作成し、C#コード内からデータベースへの接続(SQLConnection ... yada yada yada)を開いて使用する方法です。

これを行うためにどちらかの方法を選択することの間にどのような技術的な理由があるのか​​理解するのに苦労しています...

誰かが違いと、一方の方法ともう一方の方法を選択するためにどのような基準が使用されるかを説明できますか?(またはWebサイトの参照を指す...)

ありがとう!

-アディーナ

追加情報...今のところ、これは本当に趣味のプロジェクトです。いくつかのことがうまくいきました。

  1. 私は唯一の開発者であり、単一のマシンで作業しています
  2. このアプリケーションは、スタンドアロンで実行されることを目的としています。ブラウザやWeb上では決して実行されません。それが宇宙の方向性ではないことは知っていますが、前述のように、これは趣味のプロジェクトであり、他のいくつかの問題を解決するために完了する必要があります。
  3. 複数のアプリケーションがこのデータベースで動作する必要性や意図はないと思います。
4

3 に答える 3

13

実際には、3 つのオプションがあります。説明しなかったオプションは、SSMS を使用してデータベースを作成し、ファイルへの接続設定して、 SSMS によって作成された MDB ファイルを選択するオプションです (おそらく、最初に SSMS を使用してデータベースをマウント解除して取得する必要があります)。 SQL Express を使用してファイル ロックを解放します)。ファイルへのこの接続を作成すると、その場所に接続するか、プロジェクトに追加するかを尋ねるプロンプトが表示されます。

ローカル データベースは、作成方法に応じて 2 つの形式を取ることができます。詳細については、「方法: プロジェクト内のローカル データ ファイルを管理する」を参照してください。

クライアントサーバー、SQL Express

SSMS を使用してデータベースをセットアップし、SQL Express 経由で接続する場合、プロジェクトの一部であるローカル データベースはありません。サーバーがたまたまワークステーションに対してローカルであるデータベースがあります。

ローカル データベース、SQL Express

SSMS を使用してデータベースをセットアップし、データベースをマウント解除してファイルをプロジェクトに追加すると、SQL Express のプライベート インスタンスを使用するローカル データベースが作成されます。

ローカル データベース、コンパクト エディション

Visual Studio のメニューを使用して新しいデータベースを作成すると、ローカルの Compact Edition データベースが作成されます。

SQL エクスプレス

Visual Studio がデバッグを開始すると、SQL Server Express のプライベートな名前付きインスタンスが開始され、アプリケーションはネットワーク プロトコルではなく共有メモリを使用してこれと通信します。

ただし、サービスとして実行される SQL Express のインスタンスをインストールすることを妨げるものは何もありません。同じデータベース ファイル (またはそのコピー) をマウントして、ネットワークで使用できるようにすることができます。SQL Standard または SQL Enterprise のインスタンスにマウントすることもできます。

では、なぜローカル インスタンスをいじくり回すのでしょうか。開発者は他の開発者を混乱させることなくスキーマを変更できるため、複数の開発者チームにとって利点があります。これにより、(ネットワークではなく) デスクトップ ソフトウェアの開発が可能になりますが、今日ではその機能に対する需要は減少しています。

開発環境にあるハードウェアの量にもよりますが、個人的にはローカル データベースは使用しません。SQL Server はメモリの豚であり、完全に別のボックスで実行することをお勧めします。

注意事項

  • TSQL は、コンパクト エディションとマイクロ エディションを除いて、MSSQL のすべてのエディションで完全に同一です。
  • 環境的には、SQL Express はデータベースのサイズを 4G に制限していますが、R2 では最大 8G になったと思います。これは開発にとって重要ではありませんが、テスターに​​影響を与える可能性があります。
  • 一部の SQL Server Reporting Services 機能は、安価なエディションでは利用できません。

SQL Server コンパクト エディション

これに関する情報はかなり薄いです。Microsoft のバージョン比較では、コンパクト エディションまたはマイクロ エディションは考慮されていません。コンパクト エディションの Web ページの一部の宣伝文句では、完全な TSQL 互換性が主張されています。SDF はオールインワン ファイルです。個別のログ ファイルはありません。SDF からクライアント サーバーへのパスは、SQL Express の場合ほど直接的ではありませんが、このトピックに関する記事が msdn にあるため、サポートされているオプションのようです。

レプリケーション ツールはコンパクト エディションで利用できるため、時々接続するシステム (別名ブリーフケース モデル) でローカル データベース キャッシュとして使用できます。ブリーフケース モデルでは、より慎重なシステム全体の設計が必要ですが、それには多くの利点があります。つまり、単一ユーザーのスタンドアロン システムのすべてのパフォーマンスとシンプルさと、クライアント サーバー システムのほとんどの利点を備えています。

結論

あなたの目的のために、コンパクトエディションオプションを使用します。他のソリューションのオーバーヘッドと複雑さは、あなたが持っていない、または持っていない問題を解決することに向けられています。これらは、正式なリリース サイクルを伴う、ネットワーク化された大規模な環境でのチーム開発の問題を解決することを目的としています。

あなたはそれをシンプルに保つことができる幸運な立場にあります。とにかく、Visual Studio のツールは優れています。

于 2011-06-30T01:05:12.433 に答える
0

ローカルデータベースは、SQLServerの縮小バージョンであるExpressCompactEdition CE)を使用します。技術的な制限はいくつかありますが、最も重要なのは、ローカルデータベースは、アプリケーションが実行されているインスタンスでのみ使用できることです。一方、データベースサーバーには、他のアプリケーションまたは同じアプリケーションの他のインスタンスからアクセスできます。事実上、すべて同じデータを見る複数のユーザーによって共有されます。

于 2011-06-30T00:48:09.307 に答える
0

何が起こっているのかをより詳細に把握するには、CREATE DATABASEステートメントの設定とその他の機能を調べます。正確にはわかりませんが、1 つのアプリケーションが異なるデフォルト設定を使用している可能性があります。「モデル」データベースがこれにどのように関与するかについては、記事をさらに読んでください。

于 2011-06-30T01:06:07.160 に答える