SUSER_SID具有两个可选参数。我仅使用第一个“登录”。它的文档适用于Azure SQL数据库,但不起作用。对于'login'参数,请说“适用于:SQL Server 2008和更高版本”。
[当我打电话给SELECT SUSER_SID('test');
使用SSMS,我得到错误:
'SUSER_SID'在此版本的SQL Server中无法使用参数调用。
我正在使用Azure SQL Server版本。 12.0.2000.8
怎么可能,我想念什么?
奇怪,这实际上不是documented,但我遇到了同样的问题。 (将在文档的GitHub上提出)。
如果需要sid
,可以改用sys.database_principals
:
SELECT dp.sid
FROM sys.database_principals dp
WHERE dp.name = N'test';
关于这个问题,我询问了Azure支持。他们告诉我:
基于在线文档,参数“登录”适用于SQL Server 2008和更高版本,参数2适用于SQL Server 2012和更高版本。这就是为什么我们会收到错误消息“在此版本的SQL Server中无法使用参数调用'SUSER_SID'”的原因。在运行命令SELECT SUSER_SID('serveradmin')时,因为Azure SQL数据库不支持带参数的SUSER_SID()。
如果要检查SID,请考虑改为运行以下命令:
select name, sid from sys.sql_logins where name = 'test'
以下是屏幕截图:
希望这会有所帮助。