none
SQL Serverのリモート接続設定について RRS feed

  • 質問

  • お世話になります。

    aspnet_regsqlコマンドで起動する「ASP.NET SQL Serverセットアップウィザード」で、
    [SQL Serverデータベースに接続できません]のエラーが発生したため、
    [SQL Server 2005 セキュリティ構成]を起動し、リモート接続を許可するよう設定し
    リブートしましたが、同じエラーが表示されデータベースに接続できません。

    どうすればよいか、アドバイスをお願い致します。

    詳細説明:
    Visual Web Developer 2005 Express Editionを
    Windows Server 2003 R2 Standard Editionへインストールし、
    メニューの[Webサイト]→[ASP.NET構成]のWebサイト管理ツールで
    セキュリティタブを押すと、
    「SQL Server データベースに接続できません。」
    と表示されます。右下に現れた[データストアの選択]ボタンを押すと、
    プロバイダタブが開くので、[すべてのサイト管理データに対して
    1つのプロバイダを選択します。]をクリックすると、
    AspNetSqlProviderが表示されます。 ここで、テストを押すと、
    「データベースへの接続を確立できませんでした。aspnet_regsqlコマンド
    ラインユーティリティを使用してデータベースを作成」するよう指示されたので、
    このコマンドを実行すると、ASP.NET SQL Serverセットアップウィザードが起動し、
    デフォルト(Windows認証、データベース名:aspnetdb)のまま次へボタンを押すと、
    次のエラーとなります。

      System.Web.HttpException: SQL Server データベースに接続できません。
      ---> System.Data.SqlClient.SqlException:
      サーバーへの接続を確立しているときにエラーが発生しました。
      SQL Server 2005 に接続しているときときにこのエラーが発生した場合は、
      SQL Server の既定の設定がリモート接続を許可しないようになっていることが
      エラーの原因である可能性があります。
       (provider: 名前付きパイプ プロバイダ,
      error: 40 - SQL Server への接続を開けませんでした)

    そこで、
    [スタート]→[すべてのプログラム]→[Microsoft SQL Server 2005]
    →[構成ツール]→[SQL Serverセキュリティ構成]を実行し、
    [サービスと接続のセキュリティ構成]をクリックし、
    左側のツリーペインから、リモート接続をクリックし、
    [ローカル接続およびリモート接続]を選択し、
    [TCP/IPおよび名前付きパイプを使用する]を選択し、
    リブートしましたが、現象が変わりません。

    なお、環境としてはIIS6が起動しており、DB接続と伴わないWebアプリケーションが
    ローカルで動作できる状況です。

    どうぞ、よろしくお願いします。


     

    2007年5月28日 7:33

すべての返信

  • DB と開発機は別ですよね?

     

    では、単に Windows 認証が通っていないだけじゃないんですか?

    2007年5月28日 15:08
  • DBと開発機は同一マシンです。

    VWDのソリューションエクスプローラで、
    App_Dataフォルダの下にASPNETDB.MDFファイルが
    通常は自動的に作成されると思いますが、
    DB接続エラーのため作成されていません。

    一方、データベースエクスプローラでは、
    アプリケーションで使用するテーブルが表示され、
    テーブルデータの表示も行うことができます。

    なお、SQL Server Management Studio Expressを
    インストールし、Windows認証で接続すると
    アプリケーションで使用するテーブルが
    きちんと表示されます。

    したがって、Webサイト管理ツールの[プロバイダ]タブの
    AspNetSqlProviderの[テスト]で、
    DB接続エラーとなることが原因と考えていますが、
    aspnet_regsqlコマンドで解決しないため
    質問させていただいております。

    よろしくお願いします。

    2007年5月29日 0:21
  • えっと、すみません、今は「何が」問題なのでしょうか?

     

    > データベースエクスプローラでは、アプリケーションで使用するテーブルが表示され、テーブルデータの表示も行うことができます。

     

    データはできているのですよね?

    であれば、web.configに適切な接続文字列を書きさえすればアプリケーションは動くと思います。

    App_Dataフォルダ内にASPNETDB.MDFを作成するのは、むしろ開発時の一時的な動作確認のため、と

    考えたほうがよいものだと思うので、これはなくてもかまわないでしょう。

     

    それともaspnet_regsqlでどうしても行いたい作業があって、それがうまくできないから問題なのでしょうか?

    2007年5月29日 2:19
  • ご回答ありがとうございます。

    Webサイト管理ツールの[セキュリティ]タブで、
    フォーム認証のためのユーザ作成を行いたいのですが、
    前記のDB接続エラーが発生します。

    この点が問題です。

    アプリケーション内部で使用するテーブルは、
    SQL Server Management Studio Expressの
    クエリにより作成したものなので、
    データベースエクスプローラでテーブル内容を
    見ることができるのですが、
    VWDで作成したログインページのユーザは、
    Webサイト管理ツールで作成するものだと
    思っています。

    なぜなら、[セキュリティ]タブの[ユーザ]や[ロール]により
    ログインユーザを管理できるためです。

    (1)web.configでは、アプリで使用するDBに接続するための
      接続文字列が記述されていますが、ASPNETDB.MDFに対する
      接続文字列は記述していません。
      このDBは自動作成されると考えているためです。

    (2)ASPNETDB.MDFは一時的な動作確認のためと考えると
      恒久的にはユーザ情報はどこに格納されるのでしょうか。

    (3)aspnet_regsqlについては、どうしても行いたい作業がある訳ではなく、
      DB接続エラーを解消する手段として実行するように、
      Webサイト管理ツールの[プロバイダ]タブ画面に指示が出たため
      実行したものです。

    話の焦点は、DB接続エラーの解消方法にあると思いますが
    原因がわからないため、余計なことまで記載してしまったかもしれません。

    よろしくお願いします。

    2007年5月29日 4:47
  • 個人的な意見ですが、Webサイト管理ツールも開発時に利用するための一時的なツールだと思っています。

    これを使おうとすると、whitenightさんがやっているようにサーバにVWDという開発ツールをインストールする、といった作業が必要になっちゃいますし。

     

    サーバ上ではASPNETDB.MDFは自動で生成させるのではなく、aspnet_regsqlの機能を使って自分で作成したほうがよいと考えています。

    そしてそこへの適切な接続文字列を記述して使うべきでしょう。

     

    サーバ上でのユーザ管理は現時点では自作する必要があると思っています。

    http://dotnetfan.org/blogs/dotnetfanblog/archive/2006/07/18/759.aspx

    こんなサンプルがあります。

     

    #IIS7になると、このユーザの管理ツールがIISの管理ツールに含まれるんですけどね。

     

    ちなみに、ASPNETDB.MDFは現時点では存在せず、一からつくろうとしているのでしょうか?

    すでに存在しているのであれば、接続文字列をきちんと書けばWebサイト管理ツールで接続できるようにも思います。

    まぁ、自分でこのような環境を作ったことがないので、確認したわけじゃないですが。

    2007年5月30日 3:08
  •  

    再度ご回答いただき、大変ありがとうございます。

     

    もっと簡単に解決できると思っていたのですが、
    サーバにVWDをインストールして運用すること自体が
    やや特殊な使い方であり、ユーザ管理は自作する必要がある
    ということがわかりました。

     

    ASPNETDB.MDFは現時点で存在しないので、
    一から作ろうとしています。

    aspnet_regsqlを実行すると、前記接続エラーが出るため
    作成手順について、アドバイスいただければ幸いです。

     

    かつて、別のWindowsXPマシンにVWDをインストールした際には
    ASPNETDB.MDFが自動的に作成されましたので、
    今回もちょっとした設定で作成できるようになるはずだと
    確信しているのですが、それがどこなのかがわかりません。

     

    今回は、Windows Server 2003へのインストールですので、
    セキュリティやIISの設定をXP以上に細かく指定することが
    必要なのかもしれません。

    2007年5月30日 5:04