繁体   English   中英

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

[英]IIS7 application using wrong SQL Server 2008 Express database

我很沮丧 我在虚拟专用服务器上有一个客户端站点-Windows Web Server 2008 SP2,IIS7,SQL Server 2008 Express。

我正在尝试设置第二个Web应用程序,以允许他在更新发布之前对其进行审核。 我已经在IIS7中创建了Web应用程序,并且向SQL Server添加了第二个数据库。 第二个数据库本质上是生产数据库的副本,在数据库名称的前面加上“ DEV”,并在一些表中添加了一些新字段。

我的生产站点工作正常。 但是,测试站点返回一个SqlException:“无效的列名'版本'。” 这是新领域之一-使我相信我的开发人员站点是指生产数据库,而不是开发人员数据库。 但是,连接字符串确实指向不同的数据库(尽管两者的登录名都相同):

  • 生产站点:“ Server =。\\ SQLExpress;数据库= myDbName;用户ID = myUserName;密码= myUserPassword;”
  • 开发站点:“ Server =。\\ SQLExpress;数据库= DEVmyDbName;用户ID = myUserName;密码= myUserPassword;”

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

UPDATE,经过进一步测试:

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

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

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

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

结果,我肯定知道两件事:

  1. 由于它使用新的用户名登录,因此我知道该应用程序使用的是我正在提供的连接字符串。
  2. 由于某种原因,一旦登录,它似乎将忽略指定的数据库,而是尝试使用生产数据库。

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

仍然难住。

事实证明,NHibernate具有重要意义。 设置的NHibernate配置选项之一是“ default_schema”-当我删除它时,该应用程序开始连接到正确的数据库。

似乎default_schema属性将覆盖连接字符串中指定的任何数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM