我正在尝试以编程方式检查数据库是否存在。这就是我检查的方式。
我传递给它的连接字符串是:
“ Server =。\ SQLEXPRESS; Database = org-LocalDBONE-f2d73714-3373-4324-9b0a-c5234baf89be; Trusted_Connection = False; MultipleActiveResultSets = true;用户 Id = UserOne; Password = P @@ 123455P“
private static async Task<bool> VerifyDatabase(string ConnectionString, string DatabaseName)
{
using(var connection = new SqlConnection(ConnectionString))
{
using (var command = new SqlCommand("SELECT db_id(@databaseName", connection))
{
command.Parameters.Add(new SqlParameter("databaseName", DatabaseName));
connection.Open();
return (await command.ExecuteScalarAsync() != DBNull.Value);
}
}
}
我现在面临的问题是,当我遍历这段代码时,会出现以下错误:
Message =“无法打开数据库 \“ org-LocalDBONE-f2d73714-3373-4324-9b0a-c5234baf89be \” 登录。登录失败。\ r \ n用户登录失败 “ MicrosoftAccount \ jonathan.kj@gmail.com”。
如何使用连接字符串中的帐户代替此Microsoft帐户?
还可以使用代码而不是进入SQL Management Studio并手动创建数据库来为数据库创建用户吗?
编辑:按照dvitel的建议,我添加了Integrated Security = false,它现在使用我的用户名。但是,我现在收到此错误:
Message =“发生一个或多个错误。(无法打开数据库 请求的“ org-LocalDBONE-f2d73714-3373-4324-9b0a-c5234baf89be” 登录名。登录失败。\ r \ n用户'UserOne'的登录失败。)“
这很奇怪,因为我已经使用此登录名来手动执行向该服务器的迁移。
答案 0 :(得分:1)
如果要检查数据库是否存在,则不应在连接字符串中提及不存在的数据库。无论如何,所有这些检查都是针对主数据库进行的,因此请更改连接字符串以指向主数据库。
例如:
Server=.\SQLEXPRESS;Database=master;MultipleActiveResultSets=true;User Id=UserOne;...