我正在处理一个我想USER_NAME()在 SQL Server 2008 R2 中保存函数值的列。在BOL中,该函数被记录为返回类型为NVARCHAR(256).
但是,在其中一个示例中,他们这样做:
SELECT name FROM sysusers WHERE name = USER_NAME(1)
并且该sysusers.name列具有 type sysname,它(据我所知)实际上是一个NVARCHAR(128) NOT NULL. 这种不一致在 的文档中得到了进一步巩固CURRENT_USER,其中说“这个函数相当于USER_NAME()”,但表明它的类型是sysname(当然,它接着有一个例子,它使用 CURRENT_USER 作为VARCHAR(30)列的默认值...... )
是什么赋予了?BOL 的类型是否错误USER_NAME()?我使用它安全NVARCHAR(128)吗?