2

我们有一个 .NET3.5 Windows 窗体应用程序,它调用同一服务器上的 ASP.NET SOAP Web 服务。然后,此 Web 服务将数据保存到 SQL Server Express 2005 数据库中,同样位于同一服务器上。

该应用程序已在内部以及我们的许多客户中部署,并且已按预期运行超过 18 个月。然而本周,在我们主要客户的站点上,该应用程序已开始在其部署的 10 台服务器中的 4 台上生成错误消息。所有 Web 服务方法都使用相同的连接字符串,但只有一种 Web 方法受到影响。

连接字符串具有以下格式:

Data Source=MYSERVER\SQLEXPRESS;Initial Catalog=MyDatabase;
Persist Security Info=True;User ID=MyUser;Password=MyPassword

当应用程序调用一个特定的 Web 服务方法时,它会产生错误:

找不到用户“MyDatabase”,因为它不存在或您没有权限。

没有对应用程序进行任何更改来导致此问题,但是客户的 IT 人员可能对这些服务器进行了更改。MyUser已被授予存储过程的权限,并且能够连接到所有其他 Web 服务接口。

让我感到困惑的主要事情是错误消息说不存在的用户是连接字符串MyDatabase中的Initial Catalog名称。

我已经在现场与客户一起验证了应用程序仍然设置正确,并且所有其他 Web 服务接口都正确连接到数据库。

任何可能的原因或我可以检查的其他事情的任何建议都将不胜感激。

4

1 回答 1

1

我强烈建议不要删除 dbo。那是模式名称。简单地删除它意味着数据库使用默认模式,这可能是 dbo 反正。所以它什么也做不了。但是,如果在调用过程时不使用模式名称,您可能会遇到命名冲突。例如,如果您在 DB 中的两个不同模式中有一个同名的过程,并且您尝试在没有模式名称的情况下调用它,则 DB 将不知道该调用哪个,从而导致异常。

于 2012-11-16T11:43:07.190 回答