2012-04-15 4 views
0

データベースを使用する単純なC#アプリケーションを開発しようとしています。私は現在MS Server 2008を使用していますが、異なるコンピュータでアプリケーションを実行するとMS Serverがインストールされているため、移植性の問題が見つかりました。また、私のデータベースはストアドプロシージャを利用しています。ストアドプロシージャでローカルデータベースを使用するC#アプリケーション

この問題を解決するために使用できる他のデータベースタイプ(ストアドプロシージャを使用する必要があります)はありますか?

MS Server 2008を使用する場合は、すべてのPCにインストールされていると仮定して、アクセス可能にするにはどうすれば.mdfファイルをコピーできますか? (?つまり、アプリケーションの負荷にインストール)

UPDATE

this websiteから、私は次の接続文字列が見つかりました:

ローカルのSQL Server Expressのインスタンスに接続上のデータベースファイルを添付...

Server=.\SQLExpress;AttachDbFilename=c:\asd\qwe\mydbfile.mdf;Database=dbname; Trusted_Connection=Yes; 

これは、私のフォルダから.mdfファイルをコピーすることを前提としています。 したがって、私はあなたが、データベースをデタッチ上書きコピーや転送先データベース上のMDFファイルを添付することができます...

Server=.\SQLExpress;AttachDbFilename=...... database path.... ;Database=TrieDB.mdf; Trusted_Connection=Yes; 

Directory lookup for the file "... database path... " failed with the operating system error 5(Access is denied.). 
Cannot attach the file '... database path...' as database 'TrieDB.mdf' 
+0

すべてのワークステーションにSQL Serverをインストールするのではなく、アプリケーションを集中SQL Serverに接続するのはなぜですか? –

+0

なぜローカルデータベースのストアドプロシージャが必要ですか?ちょっと好奇心 - これは好意的なデザインのようには聞こえません。 – tsells

+0

また、ストアドプロシージャをアプリケーションに使用する方法がどれほど重要なのか(本当に重要なのか)を知っています。さらに、このマルチユーザソフトウェアまたはアプリインスタンスごとに1人のユーザですか? – Murph

答えて

0

をなし、成功するのではなく、次の接続文字列を使用しています。

+0

私はこれをどのように実装することができますあなたの返信メイト..とアイデアありがとう?接続文字列とは何か? – user1317277

1

ほとんどの「認定」データベースエンジンでは、実際にエンジンをインストールする必要があります。
ほとんどの "認定"データベースエンジンでは、ストアドプロシージャを使用できます。

多くのマシンに.mdfファイルを格納するには、単純にコピーしてからSQL管理スタジオを使用してエンジンにファイルを添付しますが、アプリケーションを配布する場合は理想的なソリューションではありません多くの場所で、理想的な解決策は、インストールパッケージを作成し、それがインストールから自動的に実行されていることを修正し、アンインストール時に元に戻すことです。

私見:あなたは、DE-centeralized溶液でストアドプロシージャを主張 - ...それは間違ったパスの匂いを持っているしかし、あなたは提供しない限り、私は確認することはできません - これはかなり珍しい戦術であることがわかりますいくつかのより多くの情報。

+0

アプリケーションの目的は、文書がデータベース内で索引付けされ、必要なときに検索される接尾辞トライです。パフォーマンスを向上させ、インデックスを作成する(または検索する)各文字の接続を無制限に作成するのを避けるため、ストアドプロシージャを使用して接続数を減らす(つまりパフォーマンスを向上させる)ようにしました。 – user1317277

+0

多くのデータベースが必要な理由はわかりますが、ストアドプロシージャが必要な理由はわかりません。 STPを呼び出す接続を開いたり、何かを行う動的に作成されたSQLスクリプトを実行したりすると、問題はないと思います。どちらの場合も、同じ量の接続を使用します。 STPを使用しないことの利点はおそらくあなたには分かりますので、私はそれをスキップします。エンティティフレームワークは、実際にSQLの必要性をコードに伝えることによって、あなたの人生をより簡単にすることができます。 –

1

あなたが説明しているようなことをするには、実際には2つの一般的なデザインがあります。アプリケーション(および/または複数のアプリケーション)のすべてのコピーがアクセスする中央データベース、またはデータベースに完全なインストールパッケージを作成する(通常は単一のアプリケーションによってのみアクセスされます)。

個人的には、集中データベースソリューションを使用したくない、または使用できない場合は、ストアドプロシージャに関する考え方を変更し、SQL Server Compactを調べることをお勧めします。私はthis articleに、SQL Server Compactにsprocsがない理由について議論しました。あなたが本当に必要と判断したとしても、役に立つと思います。

あなたのアプリケーションでデータベースをインストールする必要がある場合は、Visual Studio内でWiXを調べることができるsetup packageを作成することができます。

+0

あなたの返信や提案にお礼してくれてありがとうございました。元々私はMS SQL CEを使用していましたが、sprocsを使用していないと言われていましたが最大スピードが必要なためMS SQL Serverにsprocsを選びました。 /解決策が見つからない場合は、セットアップパッケージメソッドを代わりに使用します。お寄せいただきありがとうございます。 – user1317277

+0

@ user1317277、私はあなたがsprocsよりも完全にインストールされたrdbmsからより多くのパフォーマンスの向上を見ていると思っています...しかしどちらの方法でも、ユーザの視点からセットアップが必要なものすべてを手に入れる最も簡単な方法は、インストールパッケージ。私はあなたがそれから離れようとしているとは思わない。 – chezy525

関連する問題