【发布时间】:2016-07-11 17:09:58
【问题描述】:
我正在尝试以编程方式创建一个新数据库(.mdf 文件)并最终在数据库中创建表。我不确定要使用什么连接字符串,我看到下面代码中的那个在多个站点上抛出了几次。执行时出现错误:
An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
Additional information: CREATE DATABASE permission denied in database 'master'.
下面是我为创建数据库而运行的代码:
string filename = "C:\\AnalysisResultsDatabase.mdf";
string databaseName = Path.GetFileNameWithoutExtension(filename);
using (var connection = new SqlConnection("Server=localhost;Integrated security=SSPI;database=master"))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = String.Format("CREATE DATABASE {0} ON PRIMARY (NAME={0}, FILENAME='{1}')", databaseName, filename);
command.ExecuteNonQuery();
command.CommandText = String.Format("EXEC sp_detach_db '{0}', 'true'", databaseName);
command.ExecuteNonQuery();
}
}
【问题讨论】:
-
您的域帐户是否具有创建数据库所需的权限?您似乎遇到了权限被拒绝错误。
-
this q/a 有帮助吗?
-
任何时候使用字符串格式化来构建 SQL 查询,都要非常注意 SQL 注入。我不确定是否有 CREATE DATABASE 的选项,但对 SELECT/UPDATE/INSERT/DELETE 使用参数化查询。 security.stackexchange.com/questions/128412/…
-
@JDB 我之前尝试过,大部分代码都是从那里来的。该连接字符串似乎根本不起作用,甚至无法打开连接。
-
@CamBruce 我认为它没有必要的权限,由于缺少权限,我也无法添加新登录。
标签: c# sql database connection-string