2010-06-18 264 views
0

我正在开发一个连接到SQL 2000数据库的Web应用程序。一切工作完全在我的数据库(这实际上是SQL 2008),但当我尝试将其迁移到另一台服务器(实际上运行SQL 2000)时,我得到一些奇怪的错误。登录用户失败?

我得到登录失败,该Web应用程序使用的用户名,所以我做了我的正常故障排除步骤...

我重置密码,它应该是什么,确信用户被映射到它正试图连接到的数据库。我通过企业管理器使用用户名和密码连接到数据库,并能够运行查询。我重置了SQL服务器。

除了可能在我的应用程序中出现某个地方出于某种原因更改密码的原因之外,我完全没有想法。无论如何,看看SQL服务器看到什么密码?我只是想缩小搜索范围。

无论是或有人有任何其他的建议,我可以如何解决这个问题?

编辑:此外,网络应用程序可以与数据库交谈,它击中数据库以获取登录凭据,并且它可以登录没有问题。当我尝试从数据库获取更多信息时,该错误即将出现在应用程序中,例如报告或导出位置的参数。

在此先感谢!

+0

只是为了澄清:这是一个Web应用程序?它是从不同于实际数据库的服务器上运行的? – vimist 2010-06-18 20:25:52

+0

@首先它运行在与数据库相同的机器上,它运行在Tomcat 6.0服务器上。 – Shaded 2010-06-18 20:27:19

+0

查看下面更新的答案。 – vimist 2010-06-18 20:33:20

回答

1

首先,问题不在于用户登录失败。从您的描述中,登录成功。但是,您声明您以后在尝试访问某些对象时遇到异常。这听起来像是登录与之关联的数据库用户以及它试图访问的对象的授权/权限问题。您是否尝试过使用企业管理器连接到数据库,并使用该站点使用的相同凭据并将相同的查询作为Web应用程序执行?

+0

我还没有尝试过应用程序正在运行的EXACT查询,但我已使用该登录进行连接,并且能够查询最有可能引用的整个表格。我试图追查现在的确切查询,我会尝试。 – Shaded 2010-06-18 20:35:06

+0

这个webapp使用Hibernate来处理它的查询,并且hibernate告诉我它从哪个表中获取错误。我通过SQL管理器重新创建了查询,并且运行良好。还有其他建议吗?我真的很茫然。 – Shaded 2010-06-18 20:44:23

+0

@Shaded - 使用SQL事件探查器,您可以捕获大多数针对数据库尝试的查询。这会给你准确的查询问题的数据库和有关用户的信息(虽然不是密码)。 – Thomas 2010-06-18 20:59:53

1

可能你的SQL服务器没有设置为允许远程连接?

编辑:或者您的防火墙没有打开正确的端口?

EDIT2:

如果你的Web脚本是在同一台服务器的SQL服务器上,我能想到的唯一的事情是,您所指定的密码不正确,如果你引用的旧服务器按名称(即使它是本地主机),并且你没有更新它。如果Web脚本位于不同的服务器上,请检查您的防火墙端口并确保将sql server设置为允许远程连接。

EDIT3:

Appologies,我没有看到你更新前我张贴的最后的编辑(EDIT 2)。托马斯是对的,给一个去。

+0

嘎!我忘了其中一个最重要的细节...检查上面的编辑! – Shaded 2010-06-18 20:22:03

+0

该应用程序使用127.0.0.1连接到数据库,因为它始终是数据库本地的。我无法验证密码是否正确,因为我无法检查通过代码的TONS跟踪哪些密码正在发送到数据库。我希望有一个更简单的方法来在SQL端拦截它。 – Shaded 2010-06-18 20:36:44

0

不知道你怎么做你的迁移,但你可能想确保你的SQL用户没有得到孤儿:

从 - http://www.fileformat.info/tip/microsoft/sql_orphan_user.htm

首先,确保这就是问题所在。这将列出孤立用户:

EXEC sp_change_users_login 'Report' 

如果你已经有这个用户登录ID和密码,这样做解决它:如果你想创建一个新的登录ID和密码

EXEC sp_change_users_login 'Auto_Fix', 'user' 

对于此用户,请通过执行以下操作来解决问题:

EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password' 
0

我发现问题了!

这实际上是我在应用程序中留下的一些徘徊的查询。我开始填充一些不同的查询,并且查询从未被删除,只要我将这些错误停止弹出即可。

仍然奇怪的是,这不会影响我的机器上的应用程序,但在其他机器上会导致各种各样的havok。

谢谢大家的帮助和建议,它真的帮助缩小了问题的范围。托马斯得到了接受的答案,因为他的建议让我指出了正确的方向。