none
无法打开登录所请求的数据库 "MSPetShop4"。登录失败 RRS feed

  • 问题

  • 我已经在这里问了好几个关于PETSHOP的问题了。主要是我现在用VS2008进行调试,一切正常。但在自己建的IIS里总是有问题,现在问题如下,希望能解决好,谢谢大家。大家不要觉得是代码错了,因为我在VS2008的测试环境下,一切正常。
     

    “/”应用程序中的服务器错误。

    无法打开登录所请求的数据库 "MSPetShop4"。登录失败。
    用户 'IIS APPPOOL\onlinePetShop' 登录失败。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Data.SqlClient.SqlException: 无法打开登录所请求的数据库 "MSPetShop4"。登录失败。
    用户 'IIS APPPOOL\onlinePetShop' 登录失败。

    源错误:

    行 216:
    
    行 217:            if (conn.State != ConnectionState.Open)
    
    行 218:                conn.Open();
    
    行 219:
    
    行 220:            cmd.Connection = conn;

    源文件: D:\WebBak\SYSPetShop\DBUtility\SQLHelper.cs    行: 218
    2009年5月26日 13:04

答案

  • 不是说的很清楚了吗?无法打开数据库

    1,是否创建了MSPetShop4数据库?
    2,是否在数据库里创建了登录用户?或者使用现有的用户?
    3,连接字符串你修改了吗?
    连接字符串的写法有多种,参见
    www.connectionstrings.com

    要指明你的数据库连接的用户名。密码等


    【孟子E章】
    • 已标记为答案 JcryWang 2009年5月26日 14:39
    2009年5月26日 13:20
    版主
  • 因为vs里执行是以当前登录帐户身份运行的,integrated security实际上是以你的登录帐号访问的数据库,
    iis里则是匿名账户。权限比你当前机器登录帐户小的多。

    你需要使用SQL Server 2005 management Studio打开你的数据库,重设onlinePetShop账户的密码,然后改写连接字符串写法,连接字符串写法都在上面那个网址里

    或者看看
    PetShop4的文档,看看数据库的连接方法或者onlinePetShop账户的密码。

    【孟子E章】
    • 已标记为答案 JcryWang 2009年5月26日 15:48
    2009年5月26日 14:32
    版主

全部回复

  • 不是说的很清楚了吗?无法打开数据库

    1,是否创建了MSPetShop4数据库?
    2,是否在数据库里创建了登录用户?或者使用现有的用户?
    3,连接字符串你修改了吗?
    连接字符串的写法有多种,参见
    www.connectionstrings.com

    要指明你的数据库连接的用户名。密码等


    【孟子E章】
    • 已标记为答案 JcryWang 2009年5月26日 14:39
    2009年5月26日 13:20
    版主
  • 我想向您咨询一下,为什么我在VS2008里按F5,都可以正常运行?
    1、数据库在SQL2005,是创建 好的,有的
    2、<connectionStrings>
      <add name="SQLProfileConnString" connectionString="server=JCRY-PC\sqlexpress;database=MSPetShop4Profile;integrated security=SSPI;min pool size=4;max pool size=4;" providerName="System.Data.SqlClient" />
      <add name="SQLMembershipConnString" connectionString="server=JCRY-PC\sqlexpress;database=MSPetShop4Services;integrated security=SSPI;min pool size=4;max pool size=4;" providerName="System.Data.SqlClient" />
      <add name="SQLConnString1" connectionString="server=JCRY-PC\sqlexpress;database=MSPetShop4;integrated security=SSPI;min pool size=4;max pool size=4;" providerName="System.Data.SqlClient" />
      <add name="SQLConnString2" connectionString="server=JCRY-PC\sqlexpress;database=MSPetShop4;integrated security=SSPI;max pool size=4;min pool size=4;" providerName="System.Data.SqlClient" />
      <add name="SQLConnString3" connectionString="server=JCRY-PC\sqlexpress;database=MSPetShop4Orders;integrated security=SSPI;min pool size=4;max pool size=4;" providerName="System.Data.SqlClient" />
     </connectionStrings>
     <appSettings>
    我真的不知道,用户是哪一个,出错页里的apppool从何而来??为什么在VS2008里测试时,没有用户的问题?数据库都是同一数据库。
    3、连接字符串是不是上面的代码,你看看哪里有错??改什么?如何改?为什么在测试里不需要?
    还有微软的PetShop是一个公开的学习代码,没有说明要改什么啊?
    谢谢你。
    2009年5月26日 14:13
  • 因为vs里执行是以当前登录帐户身份运行的,integrated security实际上是以你的登录帐号访问的数据库,
    iis里则是匿名账户。权限比你当前机器登录帐户小的多。

    你需要使用SQL Server 2005 management Studio打开你的数据库,重设onlinePetShop账户的密码,然后改写连接字符串写法,连接字符串写法都在上面那个网址里

    或者看看
    PetShop4的文档,看看数据库的连接方法或者onlinePetShop账户的密码。

    【孟子E章】
    • 已标记为答案 JcryWang 2009年5月26日 15:48
    2009年5月26日 14:32
    版主
  • 终于搞定了,我在SQL2005里“安全性”,“登陆名”里新建了一个windows身份验证“IIS APPPOOL\onlinePetShop”,然后“服务器角色里”分配给“sysadmin”,至此,一切问题解决。
    但我还是不明白,为什么在VS2008里F5调试是正确的,在这里面服务器需要的用户名不同吗??

    这个IIS apppool的用户是从何而来的???应在代码的哪个地方可以找到??

    还有,我服务器角色里不分给sysadmin权限,还是不行,这个权限对于网站的安全有影响吗,正常的话,应给什么权限??

    谢谢大家。
    2009年5月26日 14:39
  • IIS apppool的用户是iis7的匿名身份
    为什么在VS2008里F5调试是正确的?上面已经解答
    【孟子E章】
    2009年5月26日 14:43
    版主
  • 谢谢您 的耐 心解答,我明白了,谢谢:)

    2009年5月26日 15:50