Suser_Name VS Suser_Sname
我們在某些情況下要確認目前是使用哪個帳號在執行QUERY都會使用Suser_Sname()或Suser_Name()
函數。我們會發現執行這兩個函數都是回傳目前Session的登入帳號,既然回傳的值都是一樣,那為何
要設計兩個功能相同的函數呢?
其實我們單獨執行函數,例 : Select Suser_Name() 或 Select Suser_Sname()時,回傳的值的確一樣,
但既然是函數就表示括號內應該可以填入引數。因此我們查詢了一下MSDN可以發現其接受的引數型
態是不同的。
|
參數型態 |
回傳值 |
說明 |
Suser_Sname |
Varbinary(85) |
Nvarchar(128) |
傳回與安全性識別碼 (SID) 相關聯的登入名稱。 |
Suser_Name |
int |
Nvarchar(128) |
傳回使用者的登入識別名稱。 |
由上表可以了解Suser_Sname接授的引數為varbinary(85),也就是SQL中針對每個帳號所產生的
SID。而Suser_Name接受的引數為int,也就是每個帳號的Principal_id,而回傳值就是相對應之
登入帳號名稱。
如下圖所示可以很明顯看出兩個函數對於不同引數所回傳的結果。
參考資料來源
http://msdn.microsoft.com/zh-tw/library/ms187934.aspx
http://msdn.microsoft.com/zh-tw/library/ms174427.aspx
我是ROCK
rockchang@mails.fju.edu.tw