【问题标题】:SQL Server 2019 Developer Error: 18456, Severity: 14, State: 149SQL Server 2019 开发人员错误:18456,严重性:14,状态:149
【发布时间】:2021-01-31 22:18:13
【问题描述】:

我希望我的普通(公共角色)user123(SQL Auth,不是 PAD,不是 sysadmin)登录到 SQL Server 2019(开发人员版)。

  • 我有 SQL Server 和 Windows 身份验证模式。
  • 我在 SQL Server 网络配置中启用了协议 (TCP/IP、本地机器、命名管道)。
  • 连接到 DB 的应用程序是用 Visual Studio cpp 编写的,带有 SQLDriverConnect() 函数。

我仍然收到此错误:

用户“user123”登录失败。原因:基于登录的服务器访问验证因基础结构错误而失败。登录缺少连接端点权限。 [客户:127.0.0.1]
错误:18456,严重性:14,状态:149。

当我给 user123 系统管理员角色时,他会连接。但我不希望他成为系统管理员。事实上,我希望两个单独的应用程序以标准公共用户身份使用 user123 凭据连接到数据库。但实际上连一个应用都连接不上。

有一个权限列表: List of DB permissions

非常感谢任何帮助和建议。

找到的解决方案: SQLDriverConnect() 函数中的端口应为 1433(默认 SQL 实例)而不是 1434(DAC 连接),具有特定数据库上公共角色的适当权限(连接、选择、插入等)。

【问题讨论】:

  • 那张图片什么也没告诉我们,但我没有看到“CONNECT SQL”权限。
  • user123 是 Windows Auth 还是 SQL Auth 登录名?
  • @Charlieface SQL 身份验证
  • @Larnu 您是指 SERVER 或 ENDPOINT 的“CONNECT SQL”吗?对于 user123 或公共? user123 有“CONNECT ANY DB”——它是某种不同类型/级别的访问吗?
  • 可能dup.

标签: sql-server visual-studio


【解决方案1】:

从错误消息和屏幕截图来看,我怀疑您可能正在连接到 DAC 而不是主 SQL 实例。

请在应用程序中重新检查您的连接字符串 - 或使用 SSSMS 进行测试

【讨论】:

  • user123 成功通过 SSMS 连接到 DB。 cpp中的连接字符串:SQLDriverConnect(SQLConnectionHandle, NULL, (SQLCHAR*)"DRIVER={SQL Server}; SERVER=localhost, 1434; DATABASE=routingDB; UID=user123; PWD=pass123;", SQL_NTS, retConString, 1024, NULL, SQL_DRIVER_NOPROMPT)
  • 好的,我认为您的建议让我走上了正轨——我使用了用于 DAC 连接的端口 1434。切换到 1433 似乎可以解决问题,但它需要特定数据库的额外权限(公共的连接、选择、插入等)。
  • 正确 - 1434 是 DAC,需要系统管理员成员身份。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 2017-05-14
相关资源
最近更新 更多