无法连接数据库,错误80040e21。无法调试

时间:2010-08-08 22:33:04

标签: sql-server-2005 asp-classic

我有一个试图连接数据库的简单文件 -

<%
Set RSDiscounts = Server.CreateObject("ADODB.Recordset")
RSDiscounts.ActiveConnection = "Data Source=serverName;Initial Catalog=dbName.dbo;Integrated Security=True"
%>

当我运行它时,我得到了 -

 error '80040e21'
 /filename.asp, line 3

搜索错误代码没有帮助。我最好的猜测是在连接字符串中指定了一些不应该存在的东西。但我使用Visual Studio来创建字符串,并且可以很好地连接到数据库。

有什么方法可以弄清楚什么是错的?这似乎是不可能调试的。

3 个答案:

答案 0 :(得分:2)

我认为问题在于您的连接字符串 - 您在那里使用的字符串是ADO.Net,但我不相信它会与ADODB一起使用。

尝试这样的连接字符串:

Driver={SQL Native Client};Server=myServerName\theInstanceName;Database=myDataBase; Trusted_Connection=Yes

或者这是我的一个旧项目与ADODB(来自asp经典)的连接字符串

Provider=SQLOLEDB.1;Initial Catalog=databaseName;Data Source=serverName;Trusted Connection=Yes

这可能不是100%正确,但你可以在优秀的ConnectionStrings.com找到你想要的所有连接字符串的更多细节。

答案 1 :(得分:0)

我在图书馆写道:

function SqlServerConnectionString( byval psDataSource, byval psCatalog, byval psUid, byval psPw)
'______________________________________________________________________________
'
'   'Sql Server Connection String'
'______________________________________________________________________________

   dim x
   x = "Provider=MSDASQL.1;Persist Security Info=False;User ID=" & psUid & ";Data Source=" & psDataSource &  ";Initial Catalog=" & psCatalog
   if psPw <> "" then
      x = x & ";pwd=" & psPw
   end if
   SqlServerConnectionString = x

end function

我有类似Firebird,Odbc和Access的例程。

答案 2 :(得分:0)

问题是您正在尝试使用运行脚本的用户连接到数据库。如果这在IIS中运行,它将类似于USR _。

2个替代方案。

  1. 授予此用户访问数据库的权限(我不会这样做)。
  2. 创建SQL用户并通过此连接。

    PROVIDER = SQLOLEDB;数据源= serverName;初始目录= dbName.dbo; USER ID = WebUser; PASSWORD = WebUserPassword;