Cannot open database requested by the login

756
03 декабря 2017, 10:33

Изучаю ASP.Net Core MVC по книге Адама Фримена.

Пробую запускать этот пример, но получаю ошибку следующего содержания:

Cannot open database "SportsStore" requested by the login. The login failed. Login failed for user 'DESKTOP-TS09MR6\AdminX'.

ConnectionString выглядит так Server=(localdb)\\MSSQLLocalDB;Database=SportsStore;Trusted_Connection=True;MultipleActiveResultSets=true

В чем может быть проблема?

StackTrace:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Data.SqlClient.SqlException: Cannot open database "SportsStore" requested by the login. The login failed.
Login failed for user 'DESKTOP-TS09MR6\AdminX'.
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
   at System.Data.SqlClient.SqlConnection.Open()
   at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open()
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable.Enumerator.MoveNext()
   at Microsoft.EntityFrameworkCore.Query.QueryMethodProvider.GetResult[TResult](IEnumerable`1 valueBuffers)
   at lambda_method(Closure , QueryContext )
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass20_0`1.b__0(QueryContext qc)
   at System.Linq.Queryable.Any[TSource](IQueryable`1 source)
   at SportsStore.Models.SeedData.EnsurePopulated(IApplicationBuilder app) in F:\Рабочий стол\pro-asp.net-core-mvc-master\Source Code 1-31\08 - SportsStore\SportsStore\src\SportsStore\Models\SeedData.cs:line 12
   at SportsStore.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) in F:\Рабочий стол\pro-asp.net-core-mvc-master\Source Code 1-31\08 - SportsStore\SportsStore\src\SportsStore\Startup.cs:line 43
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.AspNetCore.Hosting.Internal.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
Answer 1

Проблема явно описана в сообщении об ошибке: SQL Server не смог подключить пользователя DESKTOP-TS09MR6\AdminX к базе SportsStore потому что такой базы на сервере нет. Или она есть, но у пользователя DESKTOP-TS09MR6\AdminX нет прав на доступ к ней (маловероятно для локального админа и localdb).

Подключитесь к серверу через Visual Studio или SSMS и создайте базу с таким именем.

Answer 2

Проблема разрешилась.

Перенес код инициализации БД в метод Main, как указано здесь.

public static void Main(string[] args)
{
    var host = BuildWebHost(args);
    using (var scope = host.Services.CreateScope())
    {
        var services = scope.ServiceProvider;
        try
        {
            var context = host.Services.GetRequiredService<ApplicationDbContext>();
            SeedData.EnsurePopulated(context);
        }
        catch (Exception ex)
        {
            var logger = services.GetRequiredService<ILogger<Program>>();
            logger.LogError(ex, "An error occurred seeding the DB.");
        }
    }
    host.Run();
}

После этого команды Add-Migration Initial и Update-Database в консоли менеджера пакетов отработали нормально. БД создалась и ошибка пропала.

READ ALSO
Освобождение ресурсов

Освобождение ресурсов

У меня есть кнопки, которым я по щелчку меняю фон, у каждой кнопки свой фон, есть кнопки с одинаковыми фонамиЯ загрузила в ресурсы все изображения,...

219
Как сделать поиск по слову по listbox?

Как сделать поиск по слову по listbox?

Как сделать поиск по listbox, по слову или части слова? Например: в textbox1 пишем слово "man" и нажимаем на кнопку "Search" и нужно, чтоб нашло слово или...

316
Неподвижные объекты

Неподвижные объекты

Есть 2 объекта левый без Rigidbody а правый с Rigidbody(is Kinematic= false) через левый можно проходить насквозь а правый можно отодвигатьКак сделать так чтобы...

259
.Net Core приложение с embedded базой данных

.Net Core приложение с embedded базой данных

Как-то вот не разобрался, можно ли добавить в проект, допустим - консольного приложения, базу данных и задеплоить это всё хозяйство одним dll? Если...

237