0

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

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

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

アップデート

このウェブサイトから、私は次の接続文字列を見つけました:

ローカルSQLServerExpressインスタンスへの接続時にデータベースファイルを添付します...

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

これにより、.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'
4

3 に答える 3

1

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

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

私見:あなたは非中心化されたソリューションでストアドプロシージャを主張します-これはかなりまれな戦術であることに注意してください-間違ったパスの匂いがします..しかし、さらに情報を提供しない限り、私にはわかりません。

于 2012-04-15T14:50:17.050 に答える
1

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

個人的には、集中型データベース ソリューションを使用したくない、または使用できない場合は、ストアド プロシージャに関する考え方を変えて、SQL Server Compactを検討することをお勧めします。SQL Server Compact に sproc がない理由について説明しているこの記事を見つけました。これは、本当に必要であると判断した場合でも役立つと思います。

とはいえ、アプリでデータベースをインストールする必要がある場合は、Visual Studio 内でセットアップ パッケージを作成できます。また、 WiXの使用を検討することもできます。

于 2012-04-15T15:33:20.660 に答える
0

データベースをデタッチし、宛先データベースに mdf ファイルをコピーして添付できます。

于 2012-04-15T14:34:37.797 に答える