简单的函数来创建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");
在这里查看额外的细节,但这些是要检查的事情:
.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语法或其他某些此类问题。
你的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级别)驱动器上...]
上一篇: Simple function to create SQL Database Fails: whats wrong?