You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中存储Azure Active Directory Object ID应选哪种数据类型

SQL Server存储Azure AD Object ID的正确数据类型选择

直接给结论:优先选用SQL Server原生的UNIQUEIDENTIFIER类型,这是适配该场景的最优方案。

选型依据:

  • Azure AD生成的Object ID本质是符合RFC 4122规范的128位GUID(全局唯一标识符),和UNIQUEIDENTIFIER类型的存储结构完全匹配,单值仅占16字节存储空间,远低于字符串类型的存储开销。
  • 该类型可以直接接收Microsoft Graph API、Azure AD SDK返回的Object ID值,不需要额外做格式转换;基于该字段建索引、做表关联的查询效率远高于字符串存储方案,也不会出现字符串存储常见的大小写不匹配、多余空格、非法格式值混入的问题。
  • 业务需要输出标准字符串格式(带连字符的xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx格式)时,直接通过内置函数转换即可,不需要额外做字符串拼接处理。

不推荐的选型避坑

  • 不要使用VARCHAR(36)/NVARCHAR(36)存储:这类变长字符串类型单值需要占用36~72字节存储空间,索引碎片化更严重,数据校验能力弱,很容易存入不符合格式规范的脏数据。
  • 不要使用CHAR(36)/NCHAR(36)存储:固定长度字符串虽然索引效率略好于变长字符串,但存储空间浪费问题依然存在,同样没有原生GUID类型的格式校验能力。

建表示例

CREATE TABLE dbo.AzureADAccount (
    RowId INT IDENTITY(1,1) PRIMARY KEY,
    AADObjectId UNIQUEIDENTIFIER NOT NULL,
    DisplayName NVARCHAR(256) NOT NULL,
    AccountType NVARCHAR(50) NOT NULL,
    -- 其他业务字段
    CONSTRAINT UK_AzureADAccount_ObjectId UNIQUE(AADObjectId)
);

查询时如果需要返回字符串格式的Object ID,可以用如下写法:

SELECT CONVERT(CHAR(36), AADObjectId) AS AADObjectIdString, DisplayName
FROM dbo.AzureADAccount

内容的提问来源于stack exchange,提问作者user10128627

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 17:54:25