SQL Server 2008与ASP.NET应用程序login问题:无法打开明确指定的数据库

我正在Windows Server 2008上运行SQL Server 2008 Express Edition,并使用必须访问服务器的ASP.NET应用程序。 ASP.NET应用程序与在NetworkService帐户上运行的应用程序池关联。 该帐户又在所需的数据库中具有SQL Server上的login和用户logging。 当我尝试运行ASP.NET网站时,我得到一个空白页面,并在错误日志中查看时,我似乎得到这个信息事件logging:

用户“NT AUTHORITY \ NETWORK SERVICE”login失败。 原因:无法打开明确指定的数据库。 [客户端:myLocalMachine]

连接string具有Trusted_Connection=True ; 并指定了所需的数据库。

当我明确指定用户名和密码时,即使同一个un / pw组合通过SQL Server Management Studio工作,我也会得到另一个login错误,指出密码不正确。 NETWORK SERVICE帐户似乎具有数据库所需的所有权限。 此外,我做了一个testingASP.NET网站项目,从该数据库中的表中做一个简单的select,并使用相同的configuration文件我没有得到错误,它似乎工作。

这是否与信任级别有关,因为原始的ASP.NET Web应用程序引用了包括开源库在内的各种DLL。 此外,应用程序似乎不能写入事件日志本身,抛出安全exception,即使configuration文件中的所有内容(包括machine.config)都声明应用程序是完全信任的。

我会testing一个明确的帐户,我在本地计算机上设置并作为匿名用户放入IIS应用程序。 这样,你可以从SSMS或VStesting它,并确保你可以连接到服务器和数据库没有问题。

一旦这个工作,或者如果不是的话,你可以debuggingASP方面哪里可能会失败。 SQL方面很简单,虽然我还没有尝试networking服务帐户。 应该没有理由不起作用,但我还没有看到任何人使用它。

就在我头顶,web.config文件可能是一个信任级别的问题? 另外,SQL Server是Windowsauthentication模式还是混合authentication模式? SQL Server是否configuration了TCP / IP? 我认为在SQL Server 2008中,TCP / IP被禁用,默认情况下使用共享内存或命名pipe道。

如果数据库实例与Web应用程序位于不同的服务器上,则需要为DOMAIN \ WEBSERVER $添加一个SQLlogin名,然后将其授予访问正确的数据库。

对于SQL Server上的安全性问题,是将“默认数据库”设置为适当的数据库还是仍然列为默认的“主”数据库?o

我追查这个错误一个小时或更多。 我尝试了很多东西,包括Sql Serverconfiguration,添加networking服务用户等等。

您需要确保连接string中指定的数据库与已授予用户权限的数据库匹配。

然而,最后我遇到的问题是,我的连接string中的数据库出现了一个错字,而且我被转换了,这在我使用的解决scheme中很难find。

所以我的build议是:find另一个应用程序,允许您testing连接string,并testing连接string

没有答案,但可能是一种解决方法,当我从Web应用程序连接到SQL Server时,我总是使用未集成的SQL身份validation。 我也使用不同的SQLlogin来读取数据和写入数据,即当页面必须写入数据我使用一个帐户与写入访问和所有其他页面我使用只读访问帐户。 这对我来说似乎更安全了,而且因为我可以使用不同的login名为不同的应用程序,我可以跟踪什么应用程序正在使用数据库。

JR