- PR -

ASP.NETでSQLserverへの接続について

1
投稿者投稿内容
のん
会議室デビュー日: 2006/02/28
投稿数: 9
投稿日時: 2006-10-18 16:17
ASP.NET WEB MATRIXを使用して、ASP.NETでSQLserverへ接続し、データベースのデータをdatagridに表示させるアプリケーションを作成しています。

<%@ Page Language="VB" Debug="true" %>
<%@ import Namespace="System.data.sqlClient" %>
<script runat="server">

Sub Button1_Click(sender As Object, e As EventArgs)
dim cn as new sqlconnection()
cn.connectionstring="data source=sv;initial catalog=db;User ID=sa;Password='pass';Persist Security Info=true;"
cn.open()

dim cmd as new sqlcommand()
cmd.commandtext="SELECT * FROM master"
cmd.connection=cn

dim dr as sqlDataReader=cmd.ExecuteReader()
DataGrid1.Datasource=dr
DataGrid1.Databind()

dr.close
cn.close

End Sub
</script>

これを実行させるとcn.open()のところで
「System.Data.SqlClient.SqlException: SQL Server が存在しないか、アクセスが拒否されました。」
というエラーが出てしまいます。

datagridを用いない簡単なASP.NETであれば(textboxに文字を表示するようなもの)
うまく動きます。
また、ASP.NETではなくASPであれば、datagridは用いていませんが、
データベースからデータを表に表示することはできました。

ASP.NETでのSQLserverへの認証がうまくいっていないようです。
他のサイトを参考に、ASPNET アカウントを作成し、
そのアカウントをデータベースへのアクセス権限を与えても、
結果が変わりません。

環境はIIS5.0、SQLserver2000です。これらは別々のマシンです。
IISとドメインコントローラは同じマシンです。
SQLserverの認証は混合モードです。

どこがおかしいのかわからない状況です。。。
どなたかわかる方いましたら、教えていただけないでしょうか。
よろしくお願い致します。
masa
大ベテラン
会議室デビュー日: 2004/10/28
投稿数: 161
投稿日時: 2006-10-18 18:42
> data source=sv;initial catalog=db;User ID=sa;Password='pass';Persist Security Info=true;

Password='pass' ってクォーテーションはいらないような。
それともあってもうまく動作するんでしょうか。

接続文字列の書き方はいろいろ種類がありますので、
MSDNを見てみるとよいと思います。


ところで、これはサンプルコードですよね?
接続文字列をそのまま埋め込まないほうがよいと思いますよ。
セキュリティの面でも好ましくないですが、
接続先が変わったときにあちこち修正しなくてはいけませんから。
のん
会議室デビュー日: 2006/02/28
投稿数: 9
投稿日時: 2006-10-18 19:31
コードはサンプルコードです。ASPではシングルコーテーションがあっても、接続できました。ASP.NETでは、やはり同じエラーが出てしまいます。
ところでASPNETというアカウントを追加し、そのアカウントに権限を与えるということを他のサイトで見たのですが、これは、自分でActive Directoryに追加するのでしょうか?そのサイトでは、ASPXの入った仮想ディレクトリのプロパティのセキュリティ設定のところで、追加ボタンを押し、「ASPNET」と入力すると追加されると書いてあったのですが、そのとおりにすると「ASPNETが見つかりません」といったエラーが出てしまいます。そこであらかじめActive Directoryにユーザーを追加するところで「ASPNET」といったユーザーを自分で追加してみたのですが、このやり方でいいのでしょうか?
minminnana
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 246
お住まい・勤務地: 盛岡
投稿日時: 2006-10-18 22:32
ソースを拝見いたしますとSQLServer認証をお使いのようですから、その場合ASPNETアカウントは関係してこないように思います。(saアカウントを指定していますよね)

メッセージからすると単純に、サーバーが見つからない、名前解決が出来ない、ファイアウォールにブロックされている、サービスが上がっていないといった類に思えますが如何でしょうか。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-10-18 23:33
引用:
IISとドメインコントローラは同じマシンです。



これが絡んでいるかも。
Local resource に対する ACL で引っかかっている可能性が・・・
のん
会議室デビュー日: 2006/02/28
投稿数: 9
投稿日時: 2006-10-19 00:06
>minminnana様
ASP.NET WEB MATRIXに備えられたWEBサーバを用いて同じコードを試してみたんですが、これではうまくデータをひっぱってくることができました。ということは、IISの設定がおかしいのでしょうか?サービスが上がっていないというのは、どのようなことでしょうか? また、ちょっと気になったことなのですが、このエラーが出る前は、
MDACのバージョンが2.6以降でなければいけないというエラーが出て、
私はバージョン2.8をインストールしたのですが、その辺は問題ありませんでしょうか?

>ちゃぴ様
Local resourceに対するACLで引っかかるとはどのようなことなのでしょうか?
ご面倒でなければ、もう少々教えていただけないでしょうか。
 

せっかく.NETのコードをおぼえてきたにもかかわらず、
それが全く試せないのが非常に悔しい状況です。
なんとかWEBアプリケーションを作成できる環境にしたいと
思いますので、みなさまどうぞよろしくお願いいたします。
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2006-10-19 23:14
引用:

のんさんの書き込み (2006-10-19 00:06) より:

また、ちょっと気になったことなのですが、このエラーが出る前は、
MDACのバージョンが2.6以降でなければいけないというエラーが出て、
私はバージョン2.8をインストールしたのですが、その辺は問題ありませんでしょうか?



問題ありません。

引用:

>ちゃぴ様
Local resourceに対するACLで引っかかるとはどのようなことなのでしょうか?
ご面倒でなければ、もう少々教えていただけないでしょうか。



Sysinternals の Filemon, Regmon で trace を問いましょう。

ACL で拒否されているのであれば、Access Deny が挙がってきます。

[追記]というか、特別な場合を除いて AD で application は動かさないほうがいいですよ。[/追記]

[ メッセージ編集済み 編集者: ちゃっぴ 編集日時 2006-10-19 23:15 ]
1

スキルアップ/キャリアアップ(JOB@IT)