【发布时间】: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.