经典ASP,IIS 5.1,使用Windows身份验证登录到SQL Server时出错

时间:2012-06-18 09:36:29

标签: sql-server-2005 iis asp-classic

我正在尝试在我自己的机器上设置测试环境,我们的公司网站是用经典的asp编写的。我们的想法是使用集成的Windows身份验证连接到数据库。

我正在使用以下连接字符串

Provider=SQLOLEDB.1;Server=localhost;Database=Filbert;Integrated Security=SSPI;

但浏览器以

响应
Microsoft OLE DB Provider for SQL Server (0x80004005)
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.

在SQL日志中我可以看到

Login failed for user 'NT AUTHORITY\SYSTEM'. [CLIENT: <local machine>]
Error: 18456, Severity: 14, State: 16.

状态16错误是

我正在运行Windows XP SP3,IIS 5.1,SQL Server 2005

编辑:我还使用SQL身份验证创建并测试了登录。我可以使用SQL管理工作室使用SQL身份验证登录就好了,但是从ASP中尝试时会遇到相同的错误

2 个答案:

答案 0 :(得分:0)

我建议您在SQL Server中创建一个特定用户,测试与该用户的db连接,然后在您的asp代码中执行以下操作

<%
Provider=SQLOLEDB.1;Password=YourPassword;Persist Security Info=True;User ID=YourUserID;_
       Initial Catalog=YourDB;Data Source=YOUR_LOCAL_SERVER_NAME

 Set commInsert = Server.CreateObject("ADODB.Connection")
 commInsert.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;_
     PersistSecurity Info=False;Initial Catalog=_
     YourDB;_Data Source=YOUR_LOCAL_SERVER_NAME

 'now you can eg do an insert
 strInsertCommand = "INSERT INTO tableName(TextField, NumericField)_
     VALUES('ABCDE', 12345);"
 commInsert.Execute(strInsertCommand) ' Execute the insert command
 commInsert.Close()
 Set commInsert = Nothing
 %>

答案 1 :(得分:0)

我已设法通过将SQL提供程序切换到SQLNCLI

来解决问题
Provider=SQL;Server=localhost;Database=Filbert;Integrated Security=SSPI;