|
■No88747 (ぽんすけ さん) に返信 > とっちゃん様■No88747 (ぽんすけ さん) に返信 > 以下、初回起動時の処理になります。 > ※TestDb.mdf、TestDb.ldfは%ProgramData% に配置しております。
ProgramData の直下ではなく 会社名や、アプリ名など、ユニークになるであろうサブフォルダに格納することをお勧めします。
昨今の状況では、会社名\バージョン依存アプリ名、会社名\バージョン非依存アプリ名、会社名だけ、アプリ名だけ などまちまちなので、どういう形が望ましいというものはあまりないようです。 自分のマシンでの使われ方などを参考に考えてください。
AppDataと同じ使い方でも問題はないと思います。
>//コマンドラインを指定("/c"は実行後閉じるために必要) >p.StartInfo.Arguments = @"/c sqllocaldb create TEST"; > これを行っているということは、TestDb.mdf/ldf の情報とは別のものを使っているということになると思います。 mdf/ldf は事前に作ったDB(要するにテーブルと中身)を使う方法です。
また、その場でDBを作るなら共有インスタンス(マシン内の複数ユーザーで使うインスタンス)にする必要があると思います。
>//接続して、ログイン、パスワード追加 >string ConnectionStr = @"Data Source=(localdb)\TEST;Integrated Security=true;Trusted_Connection=yes;Connection Timeout=60;Pooling=True;Database=master";
とりあえず、一番最初の接続文字列を引っ張っていますが。。。
ファイル参照させるなら 「AttachDbFileName=ファイルパス」 でパス指定する必要があるはずです。
前に、LocalDBを使ったら?とあったスレッドでもいろいろ情報出ていたと思います。
SQL Server は、自分で使わないのでこれ以上の詳しいことはよくわかりませんので、このスレッドでの回答はあまり望めないと思います。
それと、もう一つ考えておかなければならないものがあります。
以下の状況でDBをどうするのか?を考える必要があります。 1. アプリをアンインストールしてインストールしなおした場合 2. アプリをアップデートした場合
1の時にDBは消えたほうがいいのか消えたら困るのか? 同様に2の時はどうなのか?
今の状況で正しく動いたとすれば最低でも1の時は必ず消えていることになります。 (アンインストールで消しているため)。
そして、1の状況で正しく消えるという場合、ほぼ間違いなく2の状況でも消えます。
これは、アップデートの仕組みに基づいているのですが、インストールしてアンインストールまたは アンインストールしてインストールという処理を1回のアップデートインストール時にまとめて行うからです。
どういうパターンの場合でもアンインストールという処理が行われるため アンインストール時にDBを消すという処理が行われた場合、 結果として、アップデート時にもそのDBはなくなってしまうことになります。
|