The MSDN documentation says for SUSER_SNAME function:
Returns the login identification name from a user\'s security identification number (SID).
<
If you call the function without an argument they will both return the same value. But they do take different arguments:
varbinary(85) SID
of a login as argumentinteger principal_id
of a loginYou can verify this like:
select suser_name(principal_id)
, suser_name(sid)
, suser_sname(principal_id)
, suser_sname(sid)
from sys.server_principals
where name = suser_name()
Only the first and last column will return non-null values.