Sql-Server-2016

如何知道我在 SQL Server 中使用的數據庫使用者?

  • March 5, 2020

我正在使用 SQL Server 學習 SQL,我已經了解瞭如何創建使用者,我在沒有登錄的情況下創建了:

CREATE USER Luis_Gerente WITHOUT LOGIN WITH DEFAULT_SCHEMA=dbo
CREATE USER Mario_Supervisor WITHOUT LOGIN WITH DEFAULT_SCHEMA=dbo
CREATE USER Ana_Vendedor WITHOUT LOGIN WITH DEFAULT_SCHEMA=dbo
CREATE USER Martin_Vendedor WITHOUT LOGIN WITH DEFAULT_SCHEMA=dbo
CREATE USER Carlos_Vendedor WITHOUT LOGIN WITH DEFAULT_SCHEMA=dbo

但我不知道我目前正在使用什麼使用者,以及我用什麼使用者創建了其他使用者。

我怎麼知道這一點,以及如何根據使用數據庫伺服器的人更改使用者?

我在伺服器級別進行身份驗證,但在數據庫級別我目前沒有看到在數據庫級別擁有使用者的任何影響。當我使用創建使用者的數據庫時,我沒有更改或影響。

當我開始使用數據庫時,我沒有收到任何提示或表單,需要特定的數據庫使用者才能以該使用者的特定權限使用數據庫。

但我不知道我目前使用的是什麼使用者

CURRENT_USER將返回目前使用者名。請參閱https://docs.microsoft.com/en-us/sql/t-sql/functions/current-user-transact-sql了解更多詳細資訊,以及指向其他類似函式的連結。

如您所見,有幾種方法可以獲取目前使用者名:

SELECT CURRENT_USER, USER_NAME(), USER_NAME(USER_ID())

應該返回您的姓名三次。

如何根據使用數據庫伺服器的人更改使用者?

我認為您將數據庫使用者與伺服器登錄混淆了,這很容易做到。您已經明確創建了這些使用者WITHOUT LOGIN。要讓某人以特定帳戶登錄,您需要創建一個登錄名,然後為該登錄名創建一個數據庫使用者。就像是:

USE [master]
GO
CREATE LOGIN [NewLoginName] WITH PASSWORD=N'PasswordForLogin'
GO
USE [YourDatabaseName]
GO
CREATE USER [NewUserName] FOR LOGIN [NewLoginName] WITH DEFAULT_SCHEMA=[dbo]
GO

在 SSMS 中。在創建登錄名(例如密碼策略等)和使用者時,還有許多其他選項。有關 MS 的文件,請參見此處此處

引用自:https://dba.stackexchange.com/questions/261304