【问题标题】:Developing with SQL Server Express and having problems with deployment to (full) SQL Server使用 SQL Server Express 进行开发并在部署到(完整)SQL Server 时遇到问题
【发布时间】:2016-04-25 19:07:55
【问题描述】:

我一直在使用 SQL Server Express 在本地开发一个简单的 ASP.NET MVC 网站。现在我需要通过 FTP 将网站部署到我的托管服务提供商(没有 WebDeploy 或类似的东西)。

当我上传必要的目录和文件(bin、内容、字体、脚本、视图、GLobal.asax、Web.config)时,我收到以下错误:

[Win32Exception (0x80004005): 系统找不到指定的文件]

[SqlException (0x80131904): 网络相关或实例特定 建立与 SQL Server 的连接时出错。这 服务器未找到或无法访问。验证实例 名称正确且 SQL Server 配置为允许远程 连接。 (提供者:SQL 网络接口,错误:52 - 无法 找到本地数据库运行时安装。验证 SQL Server Express 已正确安装并且本地数据库运行时 功能已启用。)]

服务器上有一个完整的 SQL Server 2014,而不是 Express Edition,我知道它应该将我引导到某个地方,但我完全迷失了,在 SO 或其他地方都找不到任何帮助.请注意,有几个相关的问题,但似乎都没有解决这个问题。

我已经在配置文件中编辑了连接字符串,并使用 Management Studio 访问了数据库。我无法检查网站和数据库服务器之间的连接(这是一个普通的虚拟主机,而不是 VPS),但我认为它应该可以工作,因为它是一家大型托管公司,而且过去两天我一直在收到这个错误.

我之前已经将相同的项目部署到 Azure,没有任何问题(主要是因为该部署或多或少是单击鼠标)。

【问题讨论】:

  • 您的配置文件中可能对 SQL Server Express 有一些参考......
  • 您提到您编辑了连接字符串,但您是否更新了提供者名称?
  • @logixologist 我已经在整个项目中搜索了任何出现的“Express”,但似乎并非如此。有没有更好的检查方法?
  • @Nikki9696 Microsoft 表示这两种情况(Express 和 Full)是相同的(providerName="System.Data.SqlClient")。我在这里错过了什么吗?
  • 只是为了笑,在你的项目中搜索“localdb”,看看它是否试图在任何地方创建它,可能是会话或登录或其他东西(这个错误消息是我习惯于看到的 LocalDB不止sql express)

标签: asp.net sql-server


【解决方案1】:

@logixologist 和@Nikki9696 基于 cmets 的配置我已经设法解决了所有问题,非常感谢你们。我将把所有必要的步骤总结到这个答案中,以防其他人也发现它们有帮助。

编辑连接字符串条目

<add
     name="ApplicationDbContext"
     connectionString="Server=__server__;Database=__db__;User ID=__user__;Password=__password__;"
     providerName="System.Data.SqlClient"
/>

我什至把名字都弄错了——它一定是项目中使用的数据库上下文的名称。在我的例子中,它是派生自 DbContext 的类的名称:

public class ApplicationDbContext : DbContext
{
 ...

接下来,我在整个项目中搜索了 localdb 一词,并在 Web.config 中一个名为 defaultConnectionFactory 的块中再次找到了它,位于 connectionStrings 上方几行:

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    ...

我找到了一个blog on MSDN,它描述了需要编辑的内容。我只省略了integratedSecurity 参数,所以我的新defaultConnectionFactory 块如下所示:

<entityFramework>
    <defaultConnectionFactory type=“System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework“>
      <parameters>
        <parameter value=“Data Source=.; Integrated Security=True; MultipleActiveResultSets=True“ />
      </parameters>
    </defaultConnectionFactory>
  ...

注意:直接从博客复制 xml 时,您需要使用正确的括号而不是那里的括号(否则您会像我一样得到莫名其妙的错误 500)。

就是这样,部署的站点现在可以毫无问题地连接到 SQL Server。

(这是我真正讨厌 ASP.NET 的东西 - 通过快速有效地开发节省的所有时间都浪费在试图弄清楚如何部署该死的东西上,因为一个人无法获得一个像样的和 在一个地方完成一条信息。)

【讨论】:

    猜你喜欢
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多