【发布时间】:2017-12-21 21:24:13
【问题描述】:
我正在尝试在家庭网络上的另一台计算机上发布我的网站。我已经在那台计算机上设置了 IIS 和 SQL Server 2016 Express。我的开发笔记本电脑上的版本相同。当我运行该站点时,出现以下错误。我认为问题可能是我正在尝试使用 LocalDB。我经常在没有互联网连接的地方旅行。这就是为什么我认为最好在开发时使用 localDB。回到家后,我会发布到我的服务器。
最初 LocalDB 是在我的计算机上的一个远离我的项目的文件夹中创建的。所以我所做的就是将它移动到 app_data 以便在我发布时附加它。
我尝试了什么:
- 重新安装 Microsoft SQL Server 2016(确保已安装 LocalDB)
- 确保数据库实际上位于服务器上的
App_Data文件夹中 - 更改了连接字符串以在
app_data中查找数据库
任何建议都会很棒。
连接字符串:
<connectionStrings
<add name="IgorsSellersToolBoxDB"
connectionString="metadata=res://*/Models.ModelDB.csdl|res://*/Models.ModelDB.ssdl|res://*/Models.ModelDB.msl;provider=System.Data.SqlClient;provider connection string="data source= LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\IgorsSellersToolBoxDB.mdf;integrated security=True;multipleactiveresultsets=True;connect timeout=30;application name=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
错误:
“/WebToolbox”应用程序中的服务器错误。
在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:50 - 发生本地数据库运行时错误。指定的 LocalDB 实例不存在。 )
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Data.SqlClient.SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:50 - 发生本地数据库运行时错误。指定的 LocalDB 实例不存在。)
来源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。`
【问题讨论】:
-
根据堆栈跟踪,您似乎没有足够的权限,或者您的 PC 中没有运行 SQL Server。您可以通过转到,Services-> SQL server-> 右键单击 START 或 RESTART 来明确尝试。
-
不要在生产环境中使用 localdb。将所有数据移动到 SQL Server 并在那里执行。还要在Sql server management studio中找出你的sql server的连接字符串
-
@steve 为什么使用 localdb 不适合生产?如果我将所有数据移动到 SQL Server,我如何在没有 Internet 的位置处理项目。我通常在没有连接的地方从事该项目,然后一旦我到达一个有互联网的地方,我就会发布该网站。这就是 localdb 对我如此有吸引力的原因。
-
@Igorski88 只需在代码准备好生产时复制并更新您喜欢的任何数据。 “LocalDB 是针对程序开发的 SQL Server Express 数据库引擎的轻量级版本”
-
@Steve 我期待这种类型的答案,但我想我希望有一个更简单的方法。那么我是否应该在每次我想发布的时候注释掉到 SQL 服务器的连接字符串并取消注释呢?反之亦然 W/localdb 连接字符串。有没有一种简单的方法可以将 localdb 数据复制到 SQL Server 中?
标签: c# sql-server asp.net-mvc localdb