【发布时间】:2011-08-12 04:46:39
【问题描述】:
设置
MVC 3 EF 4.1 Code First - Windows 7 Pro 64 开发机器,独立的 Win 7 Pro 主机。
我从一个 SQLCE4.0 数据库开始,一切正常(数据库初始化程序创建表、填充等...)。
一旦一切如我所愿,我就编写了我的 SqlCe 数据库脚本,创建了一个真正的 SQL 2008 数据库,打开了正确的端口并启用了 TCP 连接。
问题
如果我将连接字符串更改为指向我的 Intranet 服务器\实例名称,并使用我专门为此应用程序创建的用户,它可以在我的开发机器上完美运行。
如果我将应用程序发布到服务器(Web 服务器和 sql 服务器相同),并尝试登录网站(也就是访问数据库),那么我得到:
数据库“master”中的 CREATE DATABASE 权限被拒绝。
我注释掉了 DBInitializer 设置,因此在 db 命中时不应创建任何内容。桌子已经在那里了。
如果我做 Database.SetInitializer(null);然后我得到一个不同的登录错误:
我不记得确切,但它是 LOGIN FAILED FOR IIS APPPOOL\ApplicationPoolIdentity
的影响所以我将身份更改为网络服务,甚至尝试了本地服务,都给出了相同的登录失败错误。
我尝试关注this 帖子,他说添加一个名为“IIS APPPOOL\MyApplicationName”的 SQL 用户。 SQL 不会让我这样做,因为它有无效的字符......去看看。
为什么它在从我的开发机器访问数据库的网络上完美运行,但是当我发布到托管 sql 和站点的同一台机器时,我得到权限被拒绝或登录失败错误? 我已经在网上搜索并尝试了不同的方法。
编辑:这是我的连接字符串:
<add name="AntripContext" connectionString="Data Source=|DataDirectory|AntripWeb.sdf" providerName="System.Data.SqlServerCe.4.0" />
<!--<add name="AntripSQL" connectionString="Data Source=.\sqlexpress;Initial Catalog=Antrip;User Id=myuser;Password=mypassword;" providerName="System.Data.SqlClient" />-->
<add name="AntripWebEntities" connectionString="metadata=res://*/DAL.AntripEntities.csdl|res://*/DAL.AntripEntities.ssdl|res://*/DAL.AntripEntities.msl;provider=System.Data.SqlServerCe.4.0;provider connection string="Data Source=|DataDirectory|\AntripWeb.sdf"" providerName="System.Data.EntityClient" />
<!--<add name="AntripWebEntities" connectionString="metadata=res://*/DAL.AntripEntities.csdl|res://*/DAL.AntripEntities.ssdl|res://*/DAL.AntripEntities.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\sqlexpress;Initial Catalog=Antrip;User Id=myuser;Password=mypassword;"" providerName="System.Data.EntityClient" />-->
注意:注释掉的连接字符串是使用 sql 2008 数据库的连接字符串(这会破坏我发布的应用程序)。
【问题讨论】:
标签: sql-server-2008 asp.net-mvc-3 entity-framework-4 ef-code-first