设置
MVC 3 EF 4.1 Code First - Windows 7 Pro 64 Dev机器,主机独立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
所以我将身份更改为NETWORK SERVICE,甚至尝试了LOCAL SERVICE,两者都给出了相同的登录失败错误。
我尝试关注this帖子,他们说添加名为“IIS APPPOOL \ MyApplicationName”的SQL用户。 SQL不会让我这样做,因为它有无效的字符......去图。
为什么它在从我的开发机器访问数据库的网络上完美运行,但是当我发布到托管sql和网站的SAME机器时,我得到权限被拒绝或登录失败错误?我在网上搜索并尝试了不同的东西。
编辑:这是我的连接字符串:
<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数据库(破坏我发布的应用程序)的连接字符串。
答案 0 :(得分:1)
听起来好像你的连接字符串是Integrated Security = true所以你是以你指定的用户身份连接到SQL,而不是你正在使用的认为的SQL用户?
但要注意,它仍在尝试创建一个数据库:你需要交换IDatabaseInitializer - 我想它会寻找一个名为与实体相同的数据库,要小心!