我有一个简单的C#函数,它应该创建一个名为Database2.mdf的新Microsoft SQL数据库。
我的问题:该功能无法创建数据库&我不确定为什么?我从MSDN复制了代码,演示了如何创建数据库,但我不确定我的SqlConnection字符串或我的SQLCommand字符串是否正确?
发生的错误是:
{“发生与网络相关或特定于实例的错误 建立与SQL Server的连接。找不到服务器或 无法访问。验证实例名称是否正确 SQL Server配置为允许远程连接。 (提供者:命名 管道提供程序,错误:40 - 无法打开与SQL的连接 服务器)“}
我的代码:
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;
}
答案 0 :(得分:1)
您的问题不是命令失败而且没有创建数据库。 您没有将连接到数据库以便首先运行该命令。您的连接字符串可能有问题,可能还有服务器名称(或服务器本身)。
根据您的create db脚本,服务器的名称似乎是。\ SQLEXPRESS相应地调整您的连接字符串:
SqlConnection myConn = new SqlConnection(@"Server=.\SQLEXPRESS ;Integrated security=SSPI;database=master");
检查here for extra details,但这些是要检查的内容:
.\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语法或其他一些此类问题。
答案 1 :(得分:1)
您的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%工作。 (你在几个地方缺少引号)
您可能需要根据模型数据库的大小增加数据文件的初始大小。 (我必须在我的电脑上增加指定尺寸> 3MB)
数据库文件的默认路径为C:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\
[如果这是一个生产数据库,则日志和数据文件应位于不同的(和适当的RAID级别)驱动器上...]