MVC SqlServer 数据库登录失败
Posted
技术标签:
【中文标题】MVC SqlServer 数据库登录失败【英文标题】:MVC SqlServer Database login fail 【发布时间】:2018-06-01 02:02:14 【问题描述】:我目前在使用 Microsoft Visual Studio 2015 的 MVC 平台上,每当我尝试连接到数据库时都会发生这种情况
PM> Scaffold-DbContext "Server=(localdb)\MSSQLLocalDB;Database=DB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
System.Data.SqlClient.SqlException:无法打开登录请求的数据库“DB”。登录失败。 用户“PC”登录失败。 在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity 标识,SqlConnectionString connectionOptions,对象 providerInfo,布尔重定向用户实例,SqlConnectionString userConnectionOptions,SessionData reconnectSessionData,布尔 applyTransientFaultHandling) 在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions 选项,DbConnectionPoolKey poolKey,对象 poolGroupProviderInfo,DbConnectionPool 池,DbConnection owningConnection,DbConnectionOptions userOptions) 在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool 池,DbConnection owningObject,DbConnectionOptions 选项,DbConnectionPoolKey poolKey,DbConnectionOptions 用户选项) 在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection) 在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection) 在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,布尔allowCreate,布尔onlyOneCheckConnection,DbConnectionOptions userOptions,DbConnectionInternal& 连接) 在 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
1 重试,DbConnectionOptions userOptions,DbConnectionInternal oldConnection,DbConnectionInternal& 连接) 在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection externalConnection,DbConnectionFactory connectionFactory,TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource
1 重试) 在 System.Data.SqlClient.SqlConnection.Open() 在 Microsoft.EntityFrameworkCore.Scaffolding.Internal.SqlServerDatabaseModelFactory.Create(String connectionString, TableSelectionSet tableSelectionSet) 在 Microsoft.EntityFrameworkCore.Scaffolding.RelationalScaffoldingModelFactory.Create(String connectionString, TableSelectionSet tableSelectionSet) 在 Microsoft.EntityFrameworkCore.Scaffolding.Internal.SqlServerScaffoldingModelFactory.Create(String connectionString, TableSelectionSet tableSelectionSet) 在 Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator.GetMetadataModel(ReverseEngineeringConfiguration 配置) 在 Microsoft.EntityFrameworkCore.Scaffolding.Internal.ReverseEngineeringGenerator.GenerateAsync(ReverseEngineeringConfiguration 配置,CancellationToken cancelToken) 在 Microsoft.EntityFrameworkCore.Design.Internal.DatabaseOperations.ScaffoldContextAsync(字符串提供程序,字符串 connectionString,字符串 outputDir,字符串 dbContextClassName,IEnumerable1 schemas, IEnumerable
1 表,布尔值 useDataAnnotations,布尔值覆盖文件,CancellationToken 取消令牌) 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.d__22.MoveNext() 在 System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable1 source, Int32& length) at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable
1 源) 在 System.Linq.Enumerable.ToArray[TSource](IEnumerable1 source) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass4_0
1.b__0() 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作动作) ClientConnectionId:39d773a8-7fba-451b-b86b-d48b481cfe9a 错误号:4060,状态:1,类:11 无法打开登录请求的数据库“FacilityDB1”。登录失败。 用户“PC”登录失败。**
任何帮助表示赞赏。
【问题讨论】:
您是否通过 IIS 或 IIS Express 运行您的应用程序,尝试将其托管在 ISS 和运行您的应用程序的应用程序池中,将应用程序标识更改为您想要的用户“我想它是 PC根据您的问题”。还要确保您从 SQL Server 本身授予数据库中此用户的访问权限,如果您希望我写更多的 desc 作为答案,我可以为您做到这一点,请告诉我 【参考方案1】:您的问题可能是因为您可能没有名为 PC
的用户或未在数据库中为您的用户 PC
分配访问权限
1) 确保将用户添加到您的 SQL Server 数据库并授予它对您数据库的用户访问权限。
2) 同样在IIS
中以同一用户“PC in your case”运行您的应用程序,并确保输入正确的密码。您可以从“应用程序池”中更改它选择您的应用程序当前正在运行的池,然后从“应用程序标识”中将您的用户更改为与您之前创建的用户相同(步骤 1)“PC
在您的情况下”
如果它不起作用,请发表评论,我很乐意更新我的答案
【讨论】:
感谢您的帮助,但该用户最初被授予访问我的数据库的权限,至于第二个选项,您能详细说明一下吗?对不起,我刚开始不久,所以我真的不知道很多事情。编辑:我的其他数据库使用相同的 localdb 工作正常,除了这个以上是关于MVC SqlServer 数据库登录失败的主要内容,如果未能解决你的问题,请参考以下文章