基于sid查询sys.database\u主体

6rqinv9w  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(323)

我在这里遇到了这样的情况,我需要检查sys.database\u principals表中是否存在该用户,但要基于其sid。
我试着执行简单的查询。

SELECT *
FROM sys.database_principal
 where [sid] = '0x............'

但它什么也没回来。因为sid是varbinary(85)。我需要一些转换。

ux6nzvsh

ux6nzvsh1#

不要将二进制文字括在引号中。否则,该值将被视为字符串文本而不是二进制文本。
sid varbinary(85)数据类型的数据类型优先级低于varchar文本,因此sid值将从binary转换为varchar进行比较,结果字符的比较将不相等。
更正的查询:

SELECT *
FROM sys.database_principal
WHERE [sid] = 0x............;

相关问题