Suser_Name VS Suser_Sname

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中針對每個帳號所產生的

 

SIDSuser_Name接受的引數為int,也就是每個帳號的Principal_id,而回傳值就是相對應之

 

登入帳號名稱。

 

 

 

如下圖所示可以很明顯看出兩個函數對於不同引數所回傳的結果。

clip_image002[4]

 

參考資料來源

http://msdn.microsoft.com/zh-tw/library/ms187934.aspx

http://msdn.microsoft.com/zh-tw/library/ms174427.aspx

我是ROCK

rockchang@mails.fju.edu.tw