我有一段代码在运行时创建 SQL Server Express 2008,然后尝试连接到它以在 Transact-SQL 中执行数据库初始化脚本。创建数据库的代码如下:
private void CreateDatabase()
{
using (var connection = new SqlConnection(
"Data Source=.\\sqlexpress;Initial Catalog=master;" +
"Integrated Security=true;User Instance=True;"))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText =
"CREATE DATABASE " + m_databaseFilename +
" ON PRIMARY (NAME=" + m_databaseFilename +
", FILENAME='" + this.m_basePath + m_databaseFilename + ".mdf')";
command.ExecuteNonQuery();
}
}
}
数据库创建成功。之后,我尝试使用以下代码连接到数据库以运行初始化脚本:
private void ExecuteQueryFromFile(string filename)
{
string queryContent = File.ReadAllText(m_filePath + filename);
this.m_connectionString = string.Format(
@"Server=.\SQLExpress; Integrated Security=true;Initial Catalog={0};", m_databaseFilename);
using (var connection = new SqlConnection(m_connectionString))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = queryContent;
command.CommandTimeout = 0;
command.ExecuteNonQuery();
}
}
}
但是,connection.Open() 语句失败,抛出以下异常:
无法打开登录请求的数据库“TestData”。登录失败。用户“MYDOMAIN\myusername”登录失败。
我对这个错误完全感到困惑,因为我尝试连接的帐户具有系统管理员权限,这应该允许我连接任何数据库(请注意,我首先使用与主数据库的连接来创建数据库)。