DOBON.NET DOBON.NETプログラミング掲示板過去ログ

SQL Server のデータベース配布

分類:[その他]

2014/07/04(Fri) 10:02:04 編集(投稿者)
2014/07/03(Thu) 10:22:54 編集(投稿者)
2014/07/03(Thu) 09:21:33 編集(投稿者)
2014/07/03(Thu) 09:19:03 編集(投稿者)


SQL Serverについて勉強中なので、初歩的な質問かと思いますがよろしくお願いします。

SQLServerにデータを保持したアプリケーションを作成しようと考えていますが、
そのDBをどうやってユーザーに配布するのかが分からないのでお教え下さい。

自分なりに調べてみたところ、mdfファイルを配布するのが手っ取り早いように思いますが、
配布するDBがこちら側(開発側)が変更し、それをユーザーに使ってもらうというものになります。
そして、変更前のDBも保持し、ユーザーが選択可能にしたいと考えています。

このような場合、mdfファイルの配布は何か問題が考えられるでしょうか?
また、他にユーザーに対して配布する方法は何がありますでしょうか?

想定している環境
開発:Win7、VS2013、C#、.NET Framework4(or 4.5)、SQL Server2012(or Express)
ユーザー:WinVISTA以上、SQL Server2012 Express
なお、現段階での想定であり、これで確定しているわけではありません。

最後に、右も左も分かっていない状態ですので、「もっと○○について教えてくれないと!」
という事がありましたら、捕捉いたします。
■No32406に返信(piyo吉さんの記事)

どうしても SQL Server なのでしょうか?

質問に書いてあるような .mdf ファイルベースで DB を利用するアプリですと、SQL
Server Compact または Access の方が合っていると思われますが。

SQL Server Compact のインストール
http://technet.microsoft.com/ja-jp/library/ms171938(v=sql.110).aspx

SQL Server 2014 Express LocalDB を使うと言う手段もあります。

ただし、もともと開発用なのでいろいろ制約(技術的な制約以外にライセンスも要
検討)があるようです。(技術的に制約があるのは Compact も同じですが)

SQL Server 2012 Express LocalDB
http://msdn.microsoft.com/ja-jp/library/hh510202(v=sql.110).aspx

その他、SQL Server の Express 版にはユーザーインスタンスと言う機能があって、
ファイルベースの DB の利用が可能ですが、残念ながらこれは非推奨となってしま
いました。

ユーザーインスタンス
http://surferonwww.info/BlogEngine/post/2010/09/14/User-Instance-of-SQL-Server-Express.aspx

もう一つ、自分はこの方法は使ったことがないので詳しいことは分かりませんが、
既定のインスタンスに .mdf ファイルをアプリから動的にアタッチする方法もあり
ます。ただし、ユーザーインスタンスと併用した時のように、自動的にはでタッチ
されないと言う問題があるようですので、そのあたりに問題ないか確認してくださ
い。

アプリケーション内でデータベースをアタッチするには?[C#、VB]
http://www.atmarkit.co.jp/fdotnet/dotnettips/711attachdb/attachdb.html
■No32407に返信(WebSurferさんの記事)
ご回答ありがとうございます。

> どうしても SQL Server なのでしょうか?
>
> 質問に書いてあるような .mdf ファイルベースで DB を利用するアプリですと、SQL
> Server Compact または Access の方が合っていると思われますが。
現在Accessで担っている部分をSQL Serverにしたいという過程で、SQL Serverのライセンス(?)があるので、使わねばもったいない!という事でSQL Serverを選択しました。
こだわっている訳でも、理由もありません。
ただし、SQL Serverに関しては情報(本、サイト)が豊富なので、開発もしやすいと踏んでいます。


> SQL Server 2014 Express LocalDB
> SQL Server の Express 版にはユーザーインスタンスと言う機能
これらは、制約がある、非推奨という事なので、使用しない方向にします。


> アプリケーション内でデータベースをアタッチするには?[C#、VB]
> http://www.atmarkit.co.jp/fdotnet/dotnettips/711attachdb/attachdb.html
動的アタッチは真っ先に考え、その結果先の質問のようにmdfファイルの配布に行きついたわけですが、
その場合、ユーザーPC内に(数年後には)非常に多くのmdfファイルが存在してしまい、それはよくないだろうと考えました。

更新されたDBの配布は多い場合、年に4〜5回程行われる時もあります。
そうなると、HDD容量も圧迫するのでは・・・という危惧もあります。

ちなみに、現状のAccessのレコード数が数百万レコードなので、同程度の規模にはなるのでは?という想定でいます。

#DBの設計がまだまだまだまだ・・・ですので、あくまで想定という事です
■No32408に返信(piyo吉さんの記事)

最初の質問に、

> 右も左も分かっていない状態ですので

と書いてあったので、ほぼ白紙状態でこれからいろいろ考えて決めるのだろう
と思ってました。既にかなり所まで検討が進んでいたようで、そういうことは
最初に書いておいていただきたかったですね。

結局何を聞きたかったのか分かりません。冷やかしだったのでしょうか? ま
ともにレスした自分がバカだったということのようですね。
No32409 の WebSurfer様のご投稿に対して、内容が不快であるというご指摘をいただきました(このスレッドの質問者様から頂いた訳ではありません)。私自身拝見させていただき、失礼ながら同様の感想を持ちました。

とはいうものの、個人的には、WebSurfer様が不快な思いをされたという気持ちも少し分かるような気がします。この掲示板のルールでは情報を後から小出しにする行為を禁止していますが、これは私自身そのようなことを何度もされて、とても嫌な思いをしてきたからです(時間をかけて書いた回答を、「それは知っていました」の一言で片づけられてしまと、むなしくなります)。

しかし、逆に質問する立場になってみると、はじめにすべての情報を正確に記述するというのも無理な話です。よって、あまりにひどいという場合を除いては(このケースはそれほどひどくないと思います)、我慢しなければならないのかなと私は思っています。

もし今後不快な思いをされた時は、無視をするか、どうしても我慢できない時は、管理人にご連絡ください。

よろしくお願いいたします。
■No32412に返信(管理人さんの記事)

どこが不愉快だったのか、どこが投稿違反なのか分かりません。教えていただけ
ますか?

私自身が質問者さんの対応を不愉快に感じたのは事実で、レベルとしては「あま
りにひどい」です。なので、指摘させていただきました。言い方がきついと言わ
れればそうかも知れませんが、そのぐらい言わないと伝わらないと思いました。

この掲示板の方針として、この程度は許容範囲だから、質問者さん側の問題には
目をつむれということでしょうか?
■No32413に返信(WebSurferさんの記事)

> どこが不愉快だったのか、どこが投稿違反なのか分かりません。教えていただけ
> ますか?

「ルールが守られていない投稿は相手にせず、無視してください。」というルールに違反しています。

> 私自身が質問者さんの対応を不愉快に感じたのは事実で、レベルとしては「あま
> りにひどい」です。なので、指摘させていただきました。言い方がきついと言わ
> れればそうかも知れませんが、そのぐらい言わないと伝わらないと思いました。
>
> この掲示板の方針として、この程度は許容範囲だから、質問者さん側の問題には
> 目をつむれということでしょうか?

このご質問に対する答えはすべて「書き込みのルールについて」で説明しています。「書き込みのルールについて」をご一読ください。

もし「書き込みのルールについて」をご理解されたうえでこのルールについて疑問、意見等ございましたら、「お気楽掲示板」の方へお願いいたします。
■No32416に返信(管理人さんの記事)

すみませんが納得できないのでここからは撤退します。

DOBON.NET | プログラミング道 | プログラミング掲示板