Web アプリケーション開発の初心者です。私は独自に多くのスクリプト (ほとんどの VBscript) を作成し、多くの Web 開発を行ってきましたが、私が構築した ASP Classic ページのアクセス許可にこだわっています。私が Web サーバーの外部で構築およびテストしたツールは、ループ内のサーバー リストから SQL サーバーをプルし、ado 接続を作成/開き、SQL クエリを実行し、get string を使用して結果を解析し、クエリが正常に完了しました。何らかの理由で、これを Web サーバーにデプロイすると、Web サーバーのマシン アカウント 'Domain\ServerName$' を使用してページを実行しようとします。これにより、このクエリを実行しようとしている SQL サーバーに対する権限がマシン アカウントにないため、クエリが失敗します。
簡単に言うと、ASP ページで特定の資格情報を使用するように強制するにはどうすればよいですか? IIS の AppPoolPin だと思っていましたが、クエリしようとしている SQL サーバーへの特権を持つ PIN にそのアカウントを設定したので、そうではないようです。変更はありません。私の ASP ページはまだです。マシン アカウント 'Domain\ServerName$' を使用します。
これは私のコードです(セキュリティ上の理由から少し削除されています)
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<%
strFilePath = "\\server\path\to\list\"
Set Fso = CreateObject("Scripting.FileSystemObject")
Set InputFile = fso.OpenTextFile(strFilePath & "SQLServerList.txt" , 1)
Do While Not (InputFile.atEndOfStream)
On Error Resume Next
ServName = InputFile.ReadLine
Set myConn = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
DB_CONNECT_STRING = "Provider=SQLOLEDB.1;Data Source=" & ServName & ";Initial Catalog=Master;Integrated Security=SSPI"
myConn.Open DB_CONNECT_STRING
objRecordSet.Open "select @@VERSION", myConn
Rows = objRecordSet.GetString(,,"</td><td>","</td></tr><tr><td>"," ")
If (InStr(Rows,"Microsoft"))=1 Then %>
<table border="1" width="100%">
<tr>
<td><%Response.Write ServName%></td>
<td><%Response.Write "Online"%></td>
</tr>
</table>
<%Else%>
<table border="1" width="100%">
<tr>
<td><%Response.Write ServName%></td>
<td><%Response.Write "Failed"%></td>
</tr>
</table>
<%
End If
Rows = ""
Set objRecordSet = Nothing
myConn.Close
Set myConn = Nothing
Loop
%>
</body>
</html>
だから私はどんな提案にもオープンです。接続文字列にログインとパスワードを明示的に含めずに、このページに資格情報を使用させる方法を知りたいです。そんなことは絶対にできない。
助けてくれてありがとう。長い投稿で申し訳ありません。ここに投稿する前に、これを解決しようとしてしばらく見回しました。