USER_NAME()
SQL Server 2008 R2 で関数の値を保持したい列を使用しています。BOLでは、その関数は の戻り値の型を持つと文書化されていNVARCHAR(256)
ます。
ただし、例の1つでは、次のようにします。
SELECT name FROM sysusers WHERE name = USER_NAME(1)
sysusers.name
列には typeがありsysname
、これは(私が理解しているように)事実上NVARCHAR(128) NOT NULL
です。CURRENT_USER
この不一致は、「この関数は」と同等であると書かれている のドキュメントでさらに明確化されていますがUSER_NAME()
、その型はsysname
(もちろん、VARCHAR(30)
列のデフォルトとして CURRENT_USER を使用する例が続きます... )
何を与える?のタイプについて BOL は間違っていUSER_NAME()
ますか? そして、私が使用しても安全NVARCHAR(128)
ですか?