首页 数据库 Login failed for user '<token-identified principal>'. (Microsoft SQL Server, Error: 18456) 报错解决方法

Login failed for user '<token-identified principal>'. (Microsoft SQL Server, Error: 18456) 报错解决方法

登录SQL Server数据库时报错:

TITLE: Connect to Server

------------------------------

Cannot connect to <Server address>.

------------------------------

ADDITIONAL INFORMATION:

Login failed for user '<token-identified principal>'. (Microsoft SQL Server, Error: 18456)

For help, click: https://docs.microsoft.com/sql/relational-databases/errors-events/mssqlserver-18456-database-engine-error

------------------------------

BUTTONS: OK

------------------------------

通常是由于使用 Azure Active Directory (AAD) 身份验证时,登录用户未在目标数据库中正确配置所导致的。

错误原因分析

此错误通常与以下因素有关:

AAD 用户未在数据库中创建:即使您是 Azure SQL Server 的 AAD 管理员,如果未在特定数据库中创建对应的用户,仍会导致登录失败。 默认连接到 master 数据库:使用 SSMS 连接时,默认连接的是 master 数据库。如果您的 AAD 用户未在 master 数据库中存在,也会出现此错误。 AAD 组成员未正确映射:如果您是通过 AAD 组授予访问权限,确保该组已在数据库中正确创建,并分配了相应的角色。 令牌过期或无效:使用 AAD 身份验证时,令牌的有效性也可能导致此错误。

解决步骤

1. 在数据库中创建 AAD 用户

使用具有足够权限的账户连接到目标数据库,执行以下 T-SQL 命令:

CREATE USER [your_user@domain.com] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [your_user@domain.com];
ALTER ROLE db_datawriter ADD MEMBER [your_user@domain.com];

这将为 AAD 用户创建数据库用户,并授予读取和写入权限。

2. 指定连接的默认数据库

在 SSMS 的“连接到服务器”对话框中,点击“选项”,在“连接属性”选项卡中,将“连接到数据库”设置为目标数据库的名称,而非默认的 master 数据库。

3. 确保 AAD 组已正确配置

如果你是通过 AAD 组授予访问权限,确保该组已在数据库中创建,并分配了相应的角色。例如:

CREATE USER [AAD_Group_Name] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [AAD_Group_Name];

请注意,某些情况下,单独为组成员创建用户可能更为可靠。

4. 检查令牌有效性

确保使用的 AAD 令牌未过期,并且在连接时使用了正确的身份验证方法。

其他建议

使用最新版本的 SSMS:确保使用的是最新版本的 SQL Server Management Studio,以获得对 AAD 身份验证的最佳支持。 查看详细错误信息:在 SSMS 中,查看“错误详细信息”以获取更多关于错误的上下文信息。 参考官方文档:配置 Azure SQL 数据库的 Azure Active Directory 身份验证

站星网

登录SQL Server数据库时报错: TITLE: Connect to Server ------------------------------ Cannot connect ..

为您推荐

一则复杂 SQL 改写后有感

抱歉很久没写技术博客。自从LLM爆发之后,写概念堆叠的所谓“博客”已经没有意义了,那么我会思考我的博客还有什么作用。得出的结论是:具体业务的讨论仍然是有价值的所以之后会随缘更新一些强业务相关的博客为什么..

微软 SQL Server 2025 全新特性解析 | AI 加持、向量搜索、T‑SQL 革新

AI 原生嵌入:Copilot & 向量功能Copilot 集成 SSMS 21:在 SQL Server Management Studio 中添加 AI 助手,支持自然语言生成和优化 T‑SQL 查询。向量数据类型与索引:新增原生向量字段(支持单精度浮点),并提供..

SQL Server 创建表报错:'OPTIMIZE_FOR_SEQUENTIAL_KEY' is not a recognized CREATE TABLE option.

这个错误 'OPTIMIZE_FOR_SEQUENTIAL_KEY' is not a recognized CREATE TABLE option. 表示你的目标 SQL Server 版本过旧,不支持这个选项。OPTIMIZE_FOR_SEQUENTIAL_KEY 是 SQL Server 2019(及 Azure SQL) 引入的..

SQL Server 中存储 GUID:选择 uniqueidentifier 还是 nvarchar?最佳实践解析

在 SQL Server 中存储 GUID 时,选择 uniqueidentifier 还是 nvarchar?本文深入分析两者的差异,探讨性能、存储和索引的影响,提供最佳实践建议,帮助你优化数据库设计。1. uniqueidentifier 与 nvarchar 的基本区..

数据库SQL优化大总结之 百万级数据库优化方案

1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from..

为什么说 LINQ 要胜过 SQL

如果你还没有沉溺于 LINQ,就会想这有啥大惊小怪的。SQL 并没有坏掉,为什么还要对它进行修补呢? 为什么我们还需要另外一种查询语言呢?流行的说法是 LINQ 同C#(或者 VB)集成在了一起,故而消除了编程语言和数据库..

SQL Server EF使用Sequence全局自增ID

在使用 Entity Framework (EF) 时,如果需要在 SQL Server 中实现一个 全局自增 ID,可以通过以下方法来实现。全局自增 ID 的需求通常是为了在多表之间实现唯一性递增 ID。实现方式 1:使用 SQL Server 的 SequenceS..

SQL Server用UUID做主键性能问题和解决方案

在 SQL Server 中使用 UUID(全称:Universally Unique Identifier) 作为主键确实可能带来一些性能问题,特别是在大型数据库和高写入负载的场景下。以下是一些关键的性能挑战及其原因:1. 无序插入导致索引碎片化UU..

js使用IntersectionObserver实现锚点在当前页面视口时导读高亮

在 JavaScript 中可以通过监听页面滚动事件,检查每个锚点的位置,并根据当前滚动位置高亮相应的导航项,从而实现页面内锚点链接的导读高亮效果。交叉观察器 API(Intersection Observer API)提供了一种异步检测目..

修改VisualSVN Server地址为ip地址,修改svn服务端地址为ip或者域名地址的方法

svn服务端搭建成功之后,地址太长很麻烦,想搞一个服务器专门做svn服务端,修改svn地址为ip地址无奈网上教程不靠谱,于是自己研究了下1.修改VisualSVN 的地址2修改地址并保存很多人不成功就在这里,点击确认之后复制..

数据库SQL Server2014和SQL Server2019的区别和如何选择?

SQL Server 2014和SQL Server 2019是微软公司发布的两个版本的数据库管理系统,它们在性能、安全性以及可扩展性等方面各有特点。在选择这两个数据库版本时,需要根据系统需求、预算状况以及技术团队的熟悉程度等因素..

Blazor ServerPrerendered模式OnInitialized{Async}执行两次

创建Blazor应用,刷新页面调试时发现OnInitialized会执行两次。 这里需要注意,进入这个站点的第一个页面的OnInitialized会被执行两次,例如我在浏览器输入URL进去了A页面,那么A页面的OnInitialized会执行两次。然..

在 Windows Server Server/Windows 11 上安装 VirtIO 驱动程序

在这篇文章中,我们将在 Windows 11 或 Windows Server 2022 上安装 VirtIO 驱动程序。此过程适用于旧版本的 Windows 桌面或具有桌面体验的 Windows 服务器。适用于 KVM 的 VirtIO 驱动程序支持在主机系统上使用虚拟..

SqlServer临时表和游标循环遍历数据表方法实例

最近有个需求,有包含用户Id的表Users,包含通话记录的表MobileCalls,现在要查询表Users中某些用户联系过的通话次数最多的5个人的手机号结果集。所以考虑了一下要使用临时表和游标。用游标遍历表Users,根据表Users..

Sql Server清空表并重置主键序号

Sql Server清空表并重置主键序号有两种方法清除表数据并重置主键TRUNCATETable[Tablename]删除所有表数据DELETEFROM[Tablename]重置主键序列dbcccheckident([Tablename],reseed,0)以Sql Server2014为例,比如当前有2..

SQLServer数据库基础面试题

当面试与SQL Server数据库相关的职位时,通常会涉及到一些基本的SQL Server数据库知识。以下是一些可能会在面试中遇到的SQL Server数据库面试题及其答案:1. 什么是SQL Server?答案: SQL Server是由Microsoft开发..

SQLServer 锁表查询命令

在 SQL Server 中,你可以使用以下命令来查询当前会话中的锁信息:SELECTrequest_session_id AS SessionID,resource_type AS LockType,resource_database_id AS DatabaseID,resource_associated_entity_id AS Object..

SQLServer nolock查询防止锁表

在 SQL Server 中,可以使用 NOLOCK 提示来执行一个不会阻塞其他查询的“脏读”查询。这意味着你可以在其他事务正在修改数据的同时读取数据,但需要注意可能会读取到未提交的数据或者被其他事务修改的数据..

SqlServer分页查询示例

在 SQL Server 中进行分页查询,你可以使用 OFFSET 和 FETCH 子句。这两个子句可以在 ORDER BY 子句之后使用,以限制查询结果的行数和起始位置。以下是一个示例的分页查询:SELECT * FROM your_tableORDER BY your_c..

SQLServer修改服务端口号

最近查看服务器日志发现了很多数据库登陆失败的记录。可能是之前为了方便本地连接数据库在防火墙打开了1433端口,现在有人尝试暴力破解,于是想把默认端口改了。SQLServer 默认端口号为 1433,但很多时候为了安全起..

发表回复

返回顶部

微信分享

微信分享二维码

扫描二维码分享到微信或朋友圈

链接已复制
星辰影视-2025热门免费影视短剧平台熊猫影视-2025热门免费影视短剧平台番茄影视-2025热门免费影视短剧平台星光电影-2025热门免费影视短剧平台蜂鸟影院-2025热门免费影视短剧平台熊猫影视 - 全网高清免费影片聚合平台萝卜影院-2025热门电影电视剧免费在线播放-全站无广告高速播放下载樱花影院-2025热门免费影视短剧平台琪琪影视-2025热门免费影视短剧平台火影电影网-2025热门免费影视短剧平台悟空电影-2025热门免费影视短剧平台西瓜影院-2025热门免费影视短剧平台星空电影网-2025热门免费影视短剧平台好看电影网-2025热门免费影视短剧平台无忧影视网_高清影视在线观看分享平台_最新最全的免费影视短剧大全年钻网超清视界 - 全网高清免费短剧聚合平台极影公社-2025热门电影电视剧免费在线播放至尊影院-最新热门短剧免费电影网站_高清影视无弹窗极速播放星光电影-2025热门免费影视短剧平台河马影视-最新热门火爆的免费影视网站_高清影视夸克迅雷网盘下载叮当影视网-2025热门高清免费影视短剧分享平台70影视网 - 最新电影、电视剧、短剧、免费在线观看麻花影视网 - 高清免费聚合电影网西瓜影院-最新热门电影电视剧免费在线播放开心追剧网2048影视资源论坛-2048P.Com青青影视网-2025热门高清免费影视短剧分享平台八哥电影网_最新vip电影大全_热播电视剧_全网优质影视免费在线观看_老牌的免费在线影院_www.886958.com人人看电影-热播电视剧_2025年最新电影_人人影院高清在线免费观看天天影视网-高清免费电影、电视剧、短剧在线观看星辰影视-最新热门无广告的免费电影网站_高清影视无弹窗极速播放电影天堂爱看影院追剧达人U系列网盘资源橙子影视网天堂影视网天堂影视神马影院网大众影视网星辰影视网