【问题标题】:Connection string ASP.NET LocalDB连接字符串 ASP.NET LocalDB
【发布时间】:2018-06-26 20:33:14
【问题描述】:

我目前有一个问题,我无法在我的服务器上连接数据库,但在本地运行时它工作正常。我在控制器中使用这个连接字符串:

@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename='|DataDirectory|\Test.mdf';";

控制器代码:

namespace PathTest.Controllers
{
    public class HomeController : Controller
    {
        string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename='|DataDirectory|\Test.mdf';";

        public ActionResult Index()
        {
            DataTable daTbl = new DataTable();

            using(SqlConnection sqlCon = new SqlConnection(connectionString))
            {
                sqlCon.Open();

                SqlDataAdapter sqlDa = new SqlDataAdapter("SELECT * FROM Numbers", sqlCon);
                sqlDa.Fill(daTbl);

            }

            return View(daTbl);
        }
    }
}

在服务器上运行时出错:

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息: System.Data.SqlClient.SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:50 - 发生本地数据库运行时错误。指定的 LocalDB 实例名称无效。)

任何帮助将不胜感激

【问题讨论】:

  • 在您安装库之前,LocalDB 不存在,即使在此之后,您也需要向 IIS 工作进程授予使用该数据库文件的权限。
  • 为什么不将数据库加载到服务器并连接到它,而不是总是像这样附加它?我认为您应该找到一些在 mvc 应用程序中使用数据库的更好示例。

标签: c# sql sql-server asp.net-mvc connection-string


【解决方案1】:

首先,我相信您不想在生产服务器上运行 localdb。如果尚未部署,您应该在服务器上部署 SQL Server 实例,因此连接字符串应该是:

"Server=[Server IP/Name];Database=MSSQLLocalDB;User Id=[Some User Created];Password=[Password of User Created];"

如果我错了,并且你想要服务器上的 localdb,你需要检查 SQL Server Express 服务是否正在运行。

如果存在,请检查数据库文件是否存在,如果不存在,您可以使用工具sqllocaldb为express实例创建本地数据库。

最后,您可以通过 .config 文件使用配置管理器保留两个连接字符串(您可以在调试配置文件中使用本地数据库,在发布配置文件中使用服务器数据库)。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多