【问题标题】:MVC 3 - After publishing to server - CREATE DATABASE permission denied in database 'master'MVC 3 - 发布到服务器后 - 数据库“主”中的 CREATE DATABASE 权限被拒绝
【发布时间】: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=&quot;Data Source=|DataDirectory|\AntripWeb.sdf&quot;" 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=&quot;Data Source=.\sqlexpress;Initial Catalog=Antrip;User Id=myuser;Password=mypassword;&quot;" providerName="System.Data.EntityClient" />-->

注意:注释掉的连接字符串是使用 sql 2008 数据库的连接字符串(这会破坏我发布的应用程序)。

【问题讨论】:

    标签: sql-server-2008 asp.net-mvc-3 entity-framework-4 ef-code-first


    【解决方案1】:

    听起来好像您的连接字符串具有 Integrated Security=true 以便您以您指定的用户而不是您认为正在使用的 SQL 用户身份连接到 SQL? p>

    但请注意,它仍在尝试创建数据库:您需要交换 IDatabaseInitializer - 我猜它会寻找与实体名称相同的数据库要小心!

    【讨论】:

      猜你喜欢
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 2023-03-05
      相关资源
      最近更新 更多