2

我在Azure AD中有兩個用戶([email protected]),這些用戶已通過Azure門戶授予了Azure服務器的所有者權限。使用Azure AD創建Azure SQL數據庫登錄/用戶

首先,是否可以創建一個從Azure AD鏈接/提取這些登錄憑據的登錄名?我已經搜索過,並沒有找到具體的答案,雖然我的懷疑是不。

其次,我爲同一個數據庫創建了登錄名/用戶,但是,在訪問服務器的情況很好的情況下,數據庫訪問被拒絕。我已授予連接到登錄以及執行sp_addrolemember作爲datareader到數據庫的每個。在仔細檢查我的工作時,我引用了幾個示例,這些示例顯示了我用於Azure登錄名/用戶的相同語法,但訪問仍然被拒絕。

任何幫助,將不勝感激。

Steve。

代碼:

CREATE LOGIN [login_name] 
    WITH PASSWORD = N'password' 

CREATE USER [user_name] 
    FROM LOGIN [login_name] 
    WITH DEFAULT_SCHEMA = dbo 

GO 

GRANT CONNECT TO [user_name] 

EXEC sp_addrolemember 'db_datareader', 'user_name' 

回答

3

首先,是否有可能創建一個登錄從Azure的AD 這些登錄憑據鏈接/拉?我已經搜索,並沒有找到一個 特定的答案,雖然我懷疑是沒有。

否。在Azure SQL數據庫中,您只能使用在Azure SQL數據庫 - SQL登錄中創建的用戶和登錄名。

其次,我爲同一個數據庫創建了登錄名/用戶,但是,在訪問服務器的情況下, 被拒絕訪問數據庫。 我已授予連接到登錄以及執行 sp_addrolemember作爲datareader到數據庫的每個。在檢查我的工作的雙 中,我引用了幾個示例,這些示例顯示了我用於Azure登錄名/用戶的相同 語法,但仍拒絕訪問 。

Logins應在主數據庫創建,而usersgrantssp_addrolemember應該在目標DB的上下文中執行。如果您在Master數據庫中執行了sp_addrolemember,您的用戶將無法訪問目標數據庫。

此外,重要的是,當您嘗試使用新登錄連接到數據庫時(並且請注意,要登錄到使用login而不是user的數據庫),您必須明確選擇要將此數據庫新用戶有權訪問!

我的胡亂猜測是,你已經在你的數據庫的上下文中執行的create usergrantsp_addrolemember。因此這些用戶現在只能訪問主數據庫。當您處於主控環境中時,您無法向其他數據庫授予顯式授權。

-1

您不能使用AD用戶登錄到SQL服務器。必須在主數據庫中創建登錄名,並且您需要使用該登錄名通過連接用戶數據庫來創建用戶和權限授予。但是,SQL DB V12支持包含用戶,您不需要在主服務器中創建登錄。登錄可以在用戶數據庫上下文中執行,如果您爲Azure中的數據庫設置Geo Replication(用於恢復使用時間點恢復功能),這將非常有用。根據我的經驗,我會推薦在Azure數據庫中包含用戶。