代码之家  ›  专栏  ›  技术社区  ›  Remi Despres-Smyth

IIS7应用程序使用错误的SQL Server 2008 Express数据库

  •  1
  • Remi Despres-Smyth  · 技术社区  · 15 年前

    我被难住了。我在虚拟专用服务器上有一个客户机站点-Windows Web Server 2008 SP2、iis7、SQL Server 2008 Express。

    我正在尝试设置第二个Web应用程序,以允许他在更新上线前查看更新。我在iis7中创建了Web应用程序,并向SQL Server添加了第二个数据库。第二个数据库本质上是生产数据库的副本,在数据库名称前面加上“dev”,在几个表中加上一些新字段。

    我的生产现场运转良好。但是,测试站点返回时带有一个sqlException:“列名'version'无效”。“这是一个新字段-这使我相信我的开发站点引用的是生产数据库,而不是开发数据库。但是,连接字符串确实指向不同的数据库(尽管两个数据库的登录名相同):

    • 生产站点:“server=\sqlexpress;database=mydbname;user id=myusername;password=myuserpassword;”
    • dev站点:“server=\sqlexpress;database=devmydbname;user id=myusername;password=myuserpassword;”

    似乎这应该是我所缺少的东西。一位同事建议我为第二个IIS应用程序创建另一个应用程序池,但似乎没有帮助。

    更新,在进一步测试之后:

    我将dev站点的连接字符串更改为

    "Server=.\SQLExpress;Database=DEVmyDbName;User ID=devuser;Password=myNewDifferentPassword;"
    

    并在数据库上创建了一个新的SQL Server登录名,并且只授予它访问dev数据库的权限。我还将dev数据库设置为帐户的默认数据库。我从生产登录中删除了对dev数据库的访问。当我尝试登录到该站点时,会出现以下错误:

    • 服务器主体“devuser”无法在当前安全上下文下访问数据库“mydbname”。

    因此,我可以肯定地知道两件事:

    1. 因为它使用新的用户名登录,我知道应用程序使用的是我提供的连接字符串;
    2. 出于某种原因,登录后,它似乎忽略了指定的数据库,并尝试使用生产数据库。

    我不认为这会有什么不同,但我会提到我正在使用NHibernate进行数据库访问。

    仍然蹒跚而行。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Remi Despres-Smyth    15 年前

    结果表明,NHiberonate是有意义的。设置的nhibernate配置选项之一是“默认模式”——当我删除它时,应用程序开始连接到正确的数据库。

    似乎默认的“架构”属性正在覆盖连接字符串中指定的任何数据库。

    推荐文章