简单的函数来创建SQL数据库失败:最新错误?

我有一个简单的C#函数,它应该创建一个名为Database2.mdf的新Microsoft SQL数据库。

我的问题:该功能无法创建数据库&我不确定为什么? 我从MSDN复制了演示如何创建数据库的代码,但我不确定我的SqlConnection字符串或我的SQLCommand字符串是否正确?

发生的错误是:

{“与SQL Server建立连接时发生了网络相关或特定于实例的错误,找不到服务器或无法访问服务器,请确认实例名称正确,并且SQL Server已配置为允许远程连接。 :命名管道提供程序,错误:40 - 无法打开到SQL Server的连接)“}

我的代码:

    public static string DEF_DB_NAME = "Database2";
    private bool create()
    {
        Console.WriteLine("populating data");
        bool res = false;
        SqlConnection myConn = new SqlConnection("Server=localhost;Integrated security=SSPI;database=master");
        string str = "CREATE DATABASE "+DEF_DB_NAME+" ON PRIMARY " +
            "(NAME = .SQLEXPRESS, " +
            "FILENAME = " + DEF_DB_NAME + ".mdf', " +
            "SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
            "LOG ON (NAME = " + DEF_DB_NAME + "_Log, " +
            "FILENAME = " + DEF_DB_NAME + "Log.ldf', " +
            "SIZE = 1MB, " +
            "MAXSIZE = 5MB, " +
            "FILEGROWTH = 10%)";

        SqlCommand myCommand = new SqlCommand(str, myConn);
        myConn.Open();  // ERROR OCCURS HERE
        myCommand.ExecuteNonQuery();
        insertDefData(myConn);
        myConn.Close();
        res = true;

        return res;
    }

你的问题不在于命令失败,数据库没有被创建。 您没有连接到数据库来首先运行命令。 连接字符串有可能是错误的,可能是服务器名称(或服务器本身)。

根据您的创建数据库脚本,服务器的名称似乎是。 SQLEXPRESS相应地调整您的连接字符串:

SqlConnection myConn = new SqlConnection(@"Server=.SQLEXPRESS ;Integrated security=SSPI;database=master");

在这里查看额外的细节,但这些是要检查的事情:

  • 你的服务器实例是默认的吗? 如果不是,那么它被命名并且conn字符串中的服务器名称应该如下所示: .SQLEXPRESS
  • 您的服务器是否配置为允许远程连接? (阅读错误信息)
  • 可选连接字符串尝试:
  • Server=.;Database=master;Trusted_Connection=True;
  • Server=(local);Database=master;Trusted_Connection=True;
  • Server=127.0.0.1;Database=master;Trusted_Connection=True;
  • 和...是你的SQL Server运行?
  • 还解析出错误:

  • 建立到SQL Server的连接时发生网络相关或实例特定的错误。
  • 服务器未找到或无法访问。
  • 验证实例名称是否正确,并将SQL Server配置为允许远程连接。
  • (提供程序:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)“}
  • 不要认为一个命令不起作用。 该错误明确表示这是一个连接问题,而不是SQL语法或其他某些此类问题。


    你的CREATE DATABASE语句应该是:

            string str = "CREATE DATABASE " + DEF_DB_NAME + " ON PRIMARY " +
                "(NAME = N'" + DEF_DB_NAME + "_Dat', " +
                "FILENAME = 'C:somepath" + DEF_DB_NAME + ".mdf', " +
                "SIZE = 10MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
                "LOG ON (NAME = N'" + DEF_DB_NAME + "_Log', " +
                "FILENAME = 'C:somepath" + DEF_DB_NAME + "Log.ldf', " +
                "SIZE = 1MB, " +
                "MAXSIZE = 5MB, " +
                "FILEGROWTH = 10%)";
    

    经测试,工作100%。 (你在几个地方缺少引号)

    您可能需要根据模型数据库的大小增加数据文件的初始大小。 (我必须在PC上增加大于3MB的指定大小)

    数据库文件的默认路径是C:Microsoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATA [如果这是一个生产数据库,日志和数据文件应该位于不同的(和适当的RAID级别)驱动器上...]

    链接地址: http://www.djcxy.com/p/60285.html

    上一篇: Simple function to create SQL Database Fails: whats wrong?

    下一篇: SqlDataReader C#, SQL Server 2005, VS 2008