none
ClickOnce 用インストーラに SQL Server 2005 Express Edition は必要ですか? RRS feed

  • 質問

  • mdf ファイルを扱うアプリケーションを ClickOnce で配布する際、
    SQL Server 2005 Express Edition は必須コンポーネントとして必要ですか?

     


    Visual C# 2008 Express Edition で ClickOnce 配布形式のアプリケーション
    を組んでみました。そのアプリケーションは Express Edition 上で作成した
    mdf ファイルを内部で使っています。


    インストーラを作ってみると、必須コンポーネントとして「SQL Server 2005
    Express Edition」にチェックが入っていました。Visual C# 2005 Express
    Edition からは mdf ファイルをローカルで呼び出せるようになっていると記憶
    しています。


    したがって、作成したアプリケーションも SQL Server 2005 Express Edition
    を要することなく mdf ファイルに入出力できると思っていたのですが、同イン
    ストーラでインストールしたものは、起動後、


    Code Snippet
    ************** 例外テキスト **************
    System.InvalidOperationException: ConnectionString プロパティは初期化されていません。
       場所 System.Data.SqlClient.SqlConnection.PermissionDemand()
       .....

     

    とエラーが出てしまいました。

     

    もしかして、開発環境下の Visual C# Expression Edition では mdf ファイル
    を SQL Server 無しにローカルファイルとして読み書き可能だが、アプリケー
    ションとしては SQL Server 2005 Express Edition が (結局) 必要なのですか?


    SQL Server なんて介さずに、アプリケーション自体が mdf ファイルを直接読
    み書きしてくれると思っていたのですが。

    2008年2月4日 14:12

回答

  •  custar さんからの引用

    もしかして、開発環境下の Visual C# Expression Edition では mdf ファイル
    を SQL Server 無しにローカルファイルとして読み書き可能だが、アプリケー
    ションとしては SQL Server 2005 Express Edition が (結局) 必要なのですか?

     

    開発環境でもアプリケーションとして配布した場合でも、 SQL Server 2005 Express Editionが必要です。ユーザーインスタンスという仕組みのおかげで、自動的にアタッチ、デタッチされます。

    一方、SQL Server Compact Editonは従来のMDB感覚で使用できます。ただし、ストアドプロシージャが使えないなどの制約があります。

    2008年2月4日 15:25
    モデレータ

すべての返信

  •  custar さんからの引用

    もしかして、開発環境下の Visual C# Expression Edition では mdf ファイル
    を SQL Server 無しにローカルファイルとして読み書き可能だが、アプリケー
    ションとしては SQL Server 2005 Express Edition が (結局) 必要なのですか?

     

    開発環境でもアプリケーションとして配布した場合でも、 SQL Server 2005 Express Editionが必要です。ユーザーインスタンスという仕組みのおかげで、自動的にアタッチ、デタッチされます。

    一方、SQL Server Compact Editonは従来のMDB感覚で使用できます。ただし、ストアドプロシージャが使えないなどの制約があります。

    2008年2月4日 15:25
    モデレータ
  •  trapemiya さんからの引用

    開発環境でもアプリケーションとして配布した場合でも、 SQL Server 2005 Express Editionが必要です。

     

    知りたかった情報なので、涙が出るほど助かります。
    trapemiya さん、毎度ありがとうございます。


    ところで、以下を読んでいて「なんて迷惑なことを」と腹が立ってしまいました。

     

    - Express Edition で ClickOnce を使用する際の注意点

    Code Snippet

    - 必須コンポーネントのセットアップファイル本体が Express Edition 単体で
      はインストールされていない


    - Visual Studio 2005 の各 Edition のセットアップでは必要なファイルは全
      てインストールされるのですが、Express Edition のセットアップからは
      品のダウンロードサイズを減らすため
    にセットアップファイルだけが除かれ
      ていてインストールされない

     

    ダウンロードする手間より、情報を探す手間の方がどれだけ大変か。これは
    2008 でも変わらずのようで、なんで期待通り動かないのか、彷徨 (さまよ) い
    ましたよ。

     

     trapemiya さんからの引用

    ユーザーインスタンスという仕組みのおかげで、自動的にアタッチ、デタッチされます。

     

    アタッチ、デタッチが SQL Server 不要ということですね。了解。


     trapemiya さんからの引用

    一方、SQL Server Compact Editonは従来のMDB感覚で使用できます。

     

    「従来」というのを知らないので、どういう感覚なのでしょう?

    2008年2月4日 15:47
  •  custar さんからの引用

    アタッチ、デタッチが SQL Server 不要ということですね。了解。

     

    ちょっとすれ違っているかもしれません。自分は以下の説明がわかりやすかったです。

     

    [コラム]SQL Server 2005 Express Editionのユーザー・インスタンス
    http://www.atmarkit.co.jp/fdotnet/vs2005db/vs2005db_04/vs2005db_04_03.html

     

     custar さんからの引用

    「従来」というのを知らないので、どういう感覚なのでしょう?

     

    すみません。mdbはアプリケーションと同じプロセスで動くので、アプリケーションと共にただ配布するだけでよいのです。csvファイルを配布するのと同じようなことです。これと同じことができるのがSQL Server Compact Editionです。
    一方、SQL Server 2005 Expressも、.mdfをアプリケーションと共に配布するだけでOKですが、配布先のコンピュータでSQL Server 2005 Expressが動いている必要があります。

    2008年2月4日 16:03
    モデレータ
  •  trapemiya さんからの引用

    ちょっとすれ違っているかもしれません。自分は以下の説明がわかりやすかったです。


    [コラム]SQL Server 2005 Express Editionのユーザー・インスタンス
    http://www.atmarkit.co.jp/fdotnet/vs2005db/vs2005db_04/vs2005db_04_03.html


    ユーザー・インスタンスによるアタッチ・デタッチですね。


     trapemiya さんからの引用

    mdbはアプリケーションと同じプロセスで動くので、アプリケーションと共にた
    だ配布するだけでよいのです。csvファイルを配布するのと同じようなことです。
    これと同じことができるのが SQL Server Compact Edition です。


    一方、SQL Server 2005 Expressも、.mdfをアプリケーションと共に配布するだ
    けでOKですが、配布先のコンピュータでSQL Server 2005 Expressが動いてい
    る必要があります。


    なるほど。試しに compact edition も検討してみます。


    - Choosing Between SQL Server Compact 3.5 and SQL Server 2005 Express Edition

     

     

    試しに sql server express edition も「アプリケーションと同じ場所から必
    須コンポーネントをダウンロードするする」にしてみようとしてますが、他の
    ファイルと違って上手く取り込んでくれません。日本語版 (sqlexpr32_jpn.exe) を

    sqlexpr32.exe にリネームしておいても、英語版をそのまま置いても、どちらも駄目でした。


    何がいけないのやら。

     

    Code Snippet

    C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\SqlExpress\sqlexpr32.exe


    必須コンポーネントのインストール場所が、'コンポーネントの開発元の Web
    サイト' に設定されていません。項目 'SQL Server 2005 Express Edition
    SP2 (x86)' のファイル 'SqlExpress\sqlexpr32.exe' がディスクに見つかりま
    せん。詳細については、ヘルプを参照してください。

     

    2008年2月4日 16:40