首页 > 解决方案 > SQL Server Express 2016 用户在 SSMS 中工作,但不能通过内部 IP 从应用程序中工作

问题描述

我在一个实例上使用带有 SQL Server Express 2016 数据库的 Google Compute 实例,在另一个实例上使用应用程序。数据库设置为使用 SQL Server 或 Windows 身份验证。

应用程序使用内部 IP 地址连接到数据库。只要 SQL Server 用户是 一切都很好sa,但是当我将其更改为我设置的另一个用户时,它不会连接并给出此错误:

执行命令定义时发生错误。有关详细信息,请参阅内部异常。

我查看了应用程序日志,它给出了更长的错误但没有帮助(至少对我而言)。但是一旦我将连接字符串改回sa,一切都很好。

我可以使用新登录名通过 SSMS 访问数据库,所以我知道它是合法的,至少在本地是这样。我已经多次重新启动数据库服务器。显然,我缺少一些东西;只是不知道它是什么。

要点:这是日志:错误 [2020-06-29 22:39:35,828] [XXXXXXXXXXXX.Controllers.UserController.Authenticate] 无法使用消息登录 - 执行命令定义时发生错误。有关详细信息,请参阅内部异常。堆栈跟踪:在 System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand,CommandBehavior 行为)在 System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext 上下文,ObjectParameterCollection parameterValues) 在 System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func 1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) at System.Data.Entity.Core.Objects.ObjectQuery1.<>c__DisplayClass7.b__5() 在 System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func 1 operation) at System.Data.Entity.Core.Objects.ObjectQuery1.GetResults (可以为空1 forMergeOption) at System.Data.Entity.Core.Objects.ObjectQuery1.<System.Collections.Generic.IEnumerable.GetEnumerator>b__0() at System.Data.Entity.Internal.LazyEnumerator 1.MoveNext() at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable1 source) at XXXXXXXXXXXX.Controllers.UserController.AuthenticateUser(String userName, String password) at XXXXXXXXXXXX.Controllers.UserController .Authenticate(String userName, String password, String returnUrl) XXXXXXXXXXXX.Controllers.UserController.Authenticate(System.String userName, System.String password, System.String returnUrl)

你是对的,这是一个权限问题。如果我更改用户并授予它系统管理员权限,它会很好用;但是我希望拨出此 SQL 登录的权限。这不可能/不可取吗?

谢谢,莎莉

标签: sql-server

解决方案


推荐阅读