none
Visual studio2010 C# DB 複数ユーザー RRS feed

  • 質問

  • C#にてサーバー上のDBを複数ユーザーで更新できるアプリケーションを作成しようとしております。

    下記回答いただければ幸いです。

    ①DBは何を選択するのがベターか(サーバー上にSQLサーバー等のインストールは考えておりません)

    ②MDBのファイルをサーバー上に置いた場合、サーバーにACCESSをインストールしていなくても使用可能か。

    ③複数ユーザーのための排他制御のコードは「lockステートメント」等を使用すれば可能か。

      ※サンプルコード等あれば助かります。

    宜しくお願い致します。

    2016年4月26日 2:30

回答

  • こんにちは。

    trapemiyaさんが仰っているように選定基準をもう少し提示して他の案も募集したほうが良いと思います。

    サーバーアプリケーションをインストールしないのであればファイル共有の形しかないでしょうから、MDBとかが案になると思います。
    サーバーへのAccessインストールは不要です。
    SQLServerのデータベースファイルは複数のSQLServerExpressから同時にアタッチ出来るのでしょうか?試したことがないです。

    lockステートメントはトランザクション制御を行うものではなく1つのプロセス内の複数スレッド間でロックを行うためのものですので用途が異なります。
    MDBは排他モードがありますので排他制御に使えるかもしれません。

    • 回答の候補に設定 星 睦美 2016年5月10日 4:56
    • 回答としてマーク 星 睦美 2016年5月31日 1:46
    2016年4月26日 2:57
    モデレータ
  • SQL Serverをインストールすると、1つのSQL Severができます。これを1つのインスタンスと言います。インスタンスはインスタンス名を変えて複数インストールすることができます。例えば、SQL Server 2008 R2と、SQL ServerのExpress版はインスタンス名を変えて共存できます。つまり、追加でSQL ServerのExpress版等をインストールすることができます。

    また、1つのSQL Serverには複数のデータベースを作成することができます。例えば、現在お使いのSQL Server 2008 R2に何かしらのデータベースがあり、それを現在稼働しているソフトが使っているのであれば、それとは別にこれから開発するソフト専用のデータベースを作成することができます。このように、1つのSQL Serverに複数のソフト専用のデータベースを作成することができます。

    もし、上記のことが解決できるのであれば、排他等、SQL Serverを用いた方が一般的に圧倒的に楽ですので、SQL Serverについてもう少し深く、調査、検討することをお勧めします。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/


    • 編集済み trapemiyaModerator 2016年4月26日 3:05 言い回しを変更
    • 回答の候補に設定 星 睦美 2016年5月10日 4:55
    • 回答としてマーク 星 睦美 2016年5月31日 1:46
    2016年4月26日 3:00
    モデレータ
  • サーバーにデータを置き、複数ユーザーからの更新することを考えるなら、競合の問題と、自分が編集中のデータが他のユーザーに上書きされないようトランザクションについて考慮すべきです。

    データベースさわったこと無い新人向けトランザクション入門

    #あえて易しそうな解説選んでみました

    データベースは何もSQL Server だけではありません。MySQLPostgreSQL というオープンソースでかつ堅牢なシステムを構築できるデータベースもあります。私はここ数年、VB/C# & MySQL のプロジェクトに携わってますが、MySQL用のデータプロバイダも Nuget で簡単に手に入るし、ライブラリの使い方も ADO.NET に準拠してるので、コーディングも苦になりません。

    むしろ、データを、どこに、どのような形で格納するのか、

    またデータを如何に矛盾なく整合性の取れた形で保持するのか

    さらに格納されたデータを如何に高速に抽出するか

    日々悩む毎日ですw




    本フォーラムは、ユーザー(開発者)同士で情報交換を行うためのコミュニティです。初めて利用される方は、以下のアナウンスをご覧ください。 https://social.msdn.microsoft.com/Forums/ja-JP/ca9ecfb7-4407-4fcb-b8bd-207d68257e68?

    • 回答の候補に設定 星 睦美 2016年5月10日 4:56
    • 回答としてマーク 星 睦美 2016年5月31日 1:46
    2016年4月26日 14:40
    モデレータ

すべての返信

  • 確認です。無料で使用できるSQL ServerのExpress版がありますが、それはご存じで検討された結果のご質問でしょうか?
    これから開発されるのであり、サーバーに何かしらのデータベースを配置して運用するのであれば、SQL ServerのExpress版の代わりにMDBを採用する理由は基本的に無いと思うからです。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2016年4月26日 2:40
    モデレータ
  • 使用を予定しているサーバーには既にSQLサーバー2008R2が存在しており、他のソフトで利用しております。

    設定すれば使用できるのかわかりませんが、初心者なもので構成の仕方がわかりません。

    そのため、MDBであればファイルを配置するだけで済むのでは

    ないかと考えました。


    2016年4月26日 2:51
  • こんにちは。

    trapemiyaさんが仰っているように選定基準をもう少し提示して他の案も募集したほうが良いと思います。

    サーバーアプリケーションをインストールしないのであればファイル共有の形しかないでしょうから、MDBとかが案になると思います。
    サーバーへのAccessインストールは不要です。
    SQLServerのデータベースファイルは複数のSQLServerExpressから同時にアタッチ出来るのでしょうか?試したことがないです。

    lockステートメントはトランザクション制御を行うものではなく1つのプロセス内の複数スレッド間でロックを行うためのものですので用途が異なります。
    MDBは排他モードがありますので排他制御に使えるかもしれません。

    • 回答の候補に設定 星 睦美 2016年5月10日 4:56
    • 回答としてマーク 星 睦美 2016年5月31日 1:46
    2016年4月26日 2:57
    モデレータ
  • SQL Serverをインストールすると、1つのSQL Severができます。これを1つのインスタンスと言います。インスタンスはインスタンス名を変えて複数インストールすることができます。例えば、SQL Server 2008 R2と、SQL ServerのExpress版はインスタンス名を変えて共存できます。つまり、追加でSQL ServerのExpress版等をインストールすることができます。

    また、1つのSQL Serverには複数のデータベースを作成することができます。例えば、現在お使いのSQL Server 2008 R2に何かしらのデータベースがあり、それを現在稼働しているソフトが使っているのであれば、それとは別にこれから開発するソフト専用のデータベースを作成することができます。このように、1つのSQL Serverに複数のソフト専用のデータベースを作成することができます。

    もし、上記のことが解決できるのであれば、排他等、SQL Serverを用いた方が一般的に圧倒的に楽ですので、SQL Serverについてもう少し深く、調査、検討することをお勧めします。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/


    • 編集済み trapemiyaModerator 2016年4月26日 3:05 言い回しを変更
    • 回答の候補に設定 星 睦美 2016年5月10日 4:55
    • 回答としてマーク 星 睦美 2016年5月31日 1:46
    2016年4月26日 3:00
    モデレータ
  • サーバーにデータを置き、複数ユーザーからの更新することを考えるなら、競合の問題と、自分が編集中のデータが他のユーザーに上書きされないようトランザクションについて考慮すべきです。

    データベースさわったこと無い新人向けトランザクション入門

    #あえて易しそうな解説選んでみました

    データベースは何もSQL Server だけではありません。MySQLPostgreSQL というオープンソースでかつ堅牢なシステムを構築できるデータベースもあります。私はここ数年、VB/C# & MySQL のプロジェクトに携わってますが、MySQL用のデータプロバイダも Nuget で簡単に手に入るし、ライブラリの使い方も ADO.NET に準拠してるので、コーディングも苦になりません。

    むしろ、データを、どこに、どのような形で格納するのか、

    またデータを如何に矛盾なく整合性の取れた形で保持するのか

    さらに格納されたデータを如何に高速に抽出するか

    日々悩む毎日ですw




    本フォーラムは、ユーザー(開発者)同士で情報交換を行うためのコミュニティです。初めて利用される方は、以下のアナウンスをご覧ください。 https://social.msdn.microsoft.com/Forums/ja-JP/ca9ecfb7-4407-4fcb-b8bd-207d68257e68?

    • 回答の候補に設定 星 睦美 2016年5月10日 4:56
    • 回答としてマーク 星 睦美 2016年5月31日 1:46
    2016年4月26日 14:40
    モデレータ