我被难住了。我在虚拟专用服务器上有一个客户机站点-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”。
因此,我可以肯定地知道两件事:
-
因为它使用新的用户名登录,我知道应用程序使用的是我提供的连接字符串;
-
出于某种原因,登录后,它似乎忽略了指定的数据库,并尝试使用生产数据库。
我不认为这会有什么不同,但我会提到我正在使用NHibernate进行数据库访问。
仍然蹒跚而行。