【问题标题】:Connection from C # code with SQL Server 2014 Express does not work , can not open the connection从 C# 代码与 SQL Server 2014 Express 的连接不起作用,无法打开连接
【发布时间】:2016-07-10 10:32:29
【问题描述】:

我正在使用 C# 在 WPF 中创建一个客户端,我需要将它安装在客户端(平板电脑表面)上。也就是说,我安装了 SQL Server 2014 Express 版本,只是为了获取实例,我从这里下载了:

https://www.microsoft.com/en-US/download/details.aspx?id=42299

我明白了:

Express 64BIT\SQLEXPR_x64_ENU.exe

我安装了一切,当然我没有SQL Server接口的管理,但我无法创建数据库,这是我的错误:

发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。 (提供者:命名 Pipes Provider,错误:40 - 无法打开与 SQL Server 的连接

这是我的连接字符串(从常量文件中获取):

Server=SQLEXPRESS;Database=master;Integrated security=true;

这是我的代码:

 public void CreateDatabase(String PID)
        {
            String connection = Constants.localServerConnectionSQL.LocalServerConnectionSQLName;
            SqlConnection Connection = new SqlConnection();
            Connection = new SqlConnection(connection);
            Connection.Open();

            string Path = Environment.GetEnvironmentVariable("LocalAppData") + @"\CDA\UserDatabase\" + PID.ToString();
            log.Info("DBCreationScripts: Path DB: " + Path.ToString());

            String str = "CREATE DATABASE [" + PID + "] ON PRIMARY " +
           "(NAME = MyDatabase_Data, " +
           "FILENAME = '" + Path + ".mdf', " +
           "SIZE = 5MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
           "LOG ON (NAME = [" + PID + "Log_Log], " +
           "FILENAME = '"+Path+"Log.ldf', " +
           "SIZE = 1MB, " +
           "MAXSIZE = 5MB, " +
           "FILEGROWTH = 10%)";

            log.Info("DBCreationScripts: Comando di creazione DB: " + str);


            try
            {
                SqlCommand myCommand = new SqlCommand(str, Connection);
                log.Info("DBCreationScripts: Lancio il comando di creazione database");
                myCommand.ExecuteNonQuery();
            }
            catch (System.Exception ex)
            {
                log.Info("DBCreationScripts: Eccezione nel comando di creazione database -  Message: " + ex.Message);
                throw ex;
            }
        }

问题是打开连接失败,实例是SQLEXPRESS,但是不明白同事为什么没有。 E ' 我可以配置错误吗?

SQL 服务都处于活动状态。

提示?

【问题讨论】:

  • 数据源=[DBInstance];初始目录=[Database];User Id=[User];Password=[Password];MultipleActiveResultSets=True
  • 您不是在尝试连接到 SQLEXPRESS 实例,而是在尝试连接到名为 SQLEXPRESS 的机器。修复您的连接字符串并使用正确的实例名称,例如.\SQLEXPRESSlocalhost\SQLEXPRESSthat.other.name\SQLEXPRESS不要使用字符串连接来创建 SQL 脚本,除非你想要 Bobby Tables(又名 SQL 注入攻击)
  • @MarcoBong 使用 Data Source 而不是 Server 将无济于事。该错误与语法无关,Server isData Source 的有效同义词
  • @PanagiotisKanavos 您的评论就是解决方案,如果您回答我的问题,我就正确了...谢谢!

标签: c# sql-server wpf sql-server-express


【解决方案1】:

引用 SQL Server 实例的正确方法是Server Address\Instance Name,例如MyServer\SQLExpress.\SQLEXPRESS127.0.0.1\SQLEXPRESS

没有反斜杠,文本被解释为机器名称。带有Server=SQLEXPRESS 的连接字符串将尝试连接到名为SQLEXPRESS 的服务器。

【讨论】:

    猜你喜欢
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多