Sql-Server
將登錄名映射到使用者
在我的生產系統上,我使用
CPSDOM\mconnors
. 當我執行SELECT CURRENT_USER;
它返回CPSDOM\mconnors
。我們在我們的數據庫上使用 Windows 身份驗證。
在我的測試系統上,我使用
CPSDOM\mconnors
. 當我執行SELECT CURRENT_USER;
它返回dbo
。所以我去了我的測試系統
security/logins/ Login Properties/UserMaping
並CPSDOM\mconnors
為使用者輸入。當我跑的時候SELECT CURRENT_USER
,我還是回來了dbo
。我回去Login properties/UserMapping
驗證更改是否仍然存在,並且確實存在。我錯過了什麼?
如果您希望在兩個系統上獲得相同的結果,您的選擇是:
- 如果您總是想知道正在使用的伺服器級 Windows 帳戶,請將您的程式碼更改為
ORIGINAL_LOGIN()
在這兩個地方使用,而不是依賴數據庫映射(或使用SUSER_SNAME()
)。- 將您的登錄名添加到
sysadmin
生產系統上的角色。- 在您的測試系統上創建一個新登錄名(或至少確保您知道
sa
密碼),從角色中刪除此登錄sysadmin
名,並確保他們不再是數據庫所有者(例如ALTER AUTHORIZATION ON DATABASE::dbname TO sa;
)。然後,您可能需要手動將它們添加為使用者並在數據庫中添加權限(對不起,這是我最不喜歡的選項,我不想在我的系統上弄亂我自己的登錄來測試它)。
這意味著您對數據庫具有數據庫所有者(“db_owner”)權限。
您可以在“數據庫屬性”的“使用者映射”選項卡中看到這一點。
在這裡你可以看到目前使用者和登錄。
謝謝