.NET Core 2.2检查数据库是否存在

时间:2019-09-12 04:25:25

标签: c# asp.net asp.net-mvc asp.net-core

我正在尝试以编程方式检查数据库是否存在。这就是我检查的方式。

我传递给它的连接字符串是:

  

“ 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'的登录失败。)“

这很奇怪,因为我已经使用此登录名来手动执行向该服务器的迁移。

1 个答案:

答案 0 :(得分:1)

如果要检查数据库是否存在,则不应在连接字符串中提及不存在的数据库。无论如何,所有这些检查都是针对主数据库进行的,因此请更改连接字符串以指向主数据库。

例如:

Server=.\SQLEXPRESS;Database=master;MultipleActiveResultSets=true;User Id=UserOne;...