gpt4 book ai didi

c# - 在 C# 代码中创建 SQL Express 2008 数据库,但在尝试与系统管理员连接时登录失败

转载 作者:行者123 更新时间:2023-11-30 21:21:19 26 4
gpt4 key购买 nike

我有一段代码在运行时创建一个 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() 语句失败,抛出以下异常:

Cannot open database "TestData" requested by the login. The login failed. Login failed for user 'MYDOMAIN\myusername'.

我对这个错误感到非常困惑,因为我尝试连接的帐户具有系统管理员权限,这应该允许我连接任何数据库(请注意,我首先使用到 master 数据库的连接来创建数据库).

最佳答案

是否有理由在创建时指定 User Instance=True 而在尝试连接时却没有?

当您在与用户实例连接后创建它时,它将创建数据库文件但不会将其附加到您的实际实例。您要么不必在第一个连接字符串中指定 User Instance=True,要么将其添加到第二个并指定要使用的数据库文件。

关于c# - 在 C# 代码中创建 SQL Express 2008 数据库,但在尝试与系统管理员连接时登录失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2826911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com