2012-11-18 11 views
9

मुझे अपने पुराने व्यवस्थापक लॉगिन/उपयोगकर्ता को एक नए से बदलने की जरूरत है।Azure SQL में एक नया व्यवस्थापक स्तर लॉगिन बनाएँ?

CREATE LOGIN newDbAdmin WITH password='123isTheBestPasswordEver' 
CREATE USER newDbAdmin 
इस के साथ

मैं तो भी Microsoft SQL सर्वर प्रबंधन स्टूडियो के माध्यम से Azure एसक्यूएल में लॉग इन कर रहा हूँ: मैं निम्नलिखित की कोशिश की। हालांकि यह एक व्यवस्थापक स्तर लॉगिन + उपयोगकर्ता प्रतीत नहीं होता है। मैं तालिकाओं और कुछ अन्य चीजें बनाने में असमर्थ हूं जो व्यवस्थापक कर सकते हैं। मुझे संदेह है कि मुझे कुछ योजनाओं (डीबीओ?) या उन पंक्तियों के साथ कुछ अनुमति देने की आवश्यकता है ...

तो, Azure SQL पर उपयोगकर्ता + लॉगिन बनाने का सही तरीका क्या है, मूल व्यवस्थापक के समान विशेषाधिकारों के साथ (जब मैं Azure पोर्टल साइट के माध्यम से डीबी बनाते हैं तो बनाया गया)।

एक संबंधित नोट पर, मैं पुराना लॉगिन बंद निपटान के लिए उचित तरीके से ग्रहण किया जाता है:

DROP USER oldAdmin 
DROP LOGIN oldAdmin 

?

उत्तर

0

तुम सिर्फ एक लॉगिन और एक इसी उपयोगकर्ता बनाया, आप उचित भूमिका की सदस्यता जोड़ने के लिए ...

जैसे

EXEC sp_addrolemember 'dbmanager', 'login1User';

EXEC sp_addrolemember 'loginmanager', 'login1User';

देखें: https://azure.microsoft.com/documentation/articles/sql-database-manage-logins/

+4

काम नहीं करता है। मुझे इनमें से कोई भी [डीबीओ] नहीं दिख रहा है।*** गैर-मास्टर डेटाबेस में टेबल और गैर-मास्टर डेटाबेस में कोई तालिका बनाने का प्रयास करते समय, मुझे 'डेटाबेस' मास्टर 'में तालिका अनुमति अस्वीकार करने जैसी त्रुटि मिलती है।' (संदेश के बावजूद मैं कोशिश नहीं कर रहा हूं मास्टर डेटाबेस में तालिका बनाने के लिए ...) – DeepSpace101

+0

मेरा मानना ​​है कि Azure SQL डेटाबेस में कोई सर्वर भूमिका नहीं है जो सभी डेटाबेस तक पहुंच प्रदान करती है। 'dbmanager' आपको डेटाबेस बनाने देता है,' loginmanager' आपको लॉग इन बनाने देता है, लेकिन सर्वर-स्तर के प्रिंसिपल लॉगिन का उपयोग अलग-अलग डेटाबेस तक पहुंच प्रदान करने के लिए किया जाना चाहिए। – Rory

13

आप केवल एक ही सर्वर-स्तर व्यवस्थापक हो सकता है। आप जितना चाहें उतने अन्य लॉगिन और उपयोगकर्ता बना सकते हैं लेकिन उन्हें अलग-अलग डेटाबेस तक अलग-अलग पहुंच प्रदान करने की आवश्यकता है। आप एज़ूर पोर्टल के माध्यम से सर्वर-स्तरीय व्यवस्थापक के लिए पासवर्ड रीसेट कर सकते हैं।

Azure SQL डेटाबेस में कोई सर्वर भूमिका नहीं है जो सभी डेटाबेस तक पहुंच प्रदान करती है। dbmanager आपको डेटाबेस बनाने देता है, loginmanager आपको लॉग इन बनाने देता है, लेकिन सर्वर-स्तर के प्रिंसिपल लॉगिन का उपयोग अलग-अलग डेटाबेस तक पहुंच प्रदान करने के लिए किया जाना चाहिए।

एक नया उपयोगकर्ता बनाने के लिए और एक या अधिक डेटाबेस के लिए dbo अधिकार दे:

-- in master 
create login [XXXX] with password = 'YYYYY' 
create user [XXXX] from login [XXXX]; 

-- if you want the user to be able to create databases and logins 
exec sp_addRoleMember 'dbmanager', 'XXXX'; 
exec sp_addRoleMember 'loginmanager', 'XXXX' 

-- in each individual database, to grant dbo 
create user [XXXX] from login [XXXX]; 
exec sp_addRoleMember 'db_owner', 'XXXX'; 

और हाँ, आप उसी तरह आप ऑन-प्रिमाइसेस एसक्यूएल में होगा में उन छोड़ देते हैं।

आप एक सर्वर पर सभी डेटाबेस पर dbo के रूप में एक नया उपयोगकर्ता बनाने के लिए आप एक छोटे से powershell उपयोग कर सकते हैं आपके जीवन को आसान बनाना चाहते थे, तो:

$newSqlUser = 'YOUR_NEW_LOGIN_HERE'; 
$serverName = 'YOUR-SERVER-NAME.database.windows.net' 
$sqlAdminLogin = 'YOUR-ADMIN-SQL-LOGIN' 
$createAdminUser = $TRUE; 

# generate a nice long random password 
Add-Type -Assembly System.Web 
$newSqlPassword = [Web.Security.Membership]::GeneratePassword(25,3) -Replace '[%&+=;:/]', "!"; 

# prompt for your server admin password. 
# Don't need the username param here but can be nice to avoid retyping 
$sqlCreds = get-Credential -Username $sqlAdminLogin -Message 'Enter admin sql credentials' 

# Create login and user in master db 
$sql = "create login [$newSqlUser] with password = '$newSqlPassword'; create user [$newSqlUser] from login [$newSqlUser];" 
invoke-sqlcmd -Query $sql -ServerInstance $serverName -Database 'master' -Username $sqlCreds.UserName -Password ($sqlCreds.GetNetworkCredential().Password) 
"new login: $newSqlUser" 
"password: $newSqlPassword" 

# sql to create user in each db 
if ($createAdminUser) { ` 
    $createUserSql = "create user [$newSqlUser] from login [$newSqlUser]; exec sp_addRoleMember 'db_owner', '$newSqlUser'; "; ` 
} else { ` 
    $createUserSql = "create user [$newSqlUser] from login [$newSqlUser]; exec sp_addRoleMember 'db_datareader', '$newSqlUser'; exec sp_addRoleMember 'db_denydatawriter', '$newSqlUser';"; ` 
} 

# can't have multiple Invoke-SQLCmd in a pipeline so get the dbnames first, then iterate 
$sql = "select name from sys.databases where name <> 'master';" 
$dbNames = @() 
invoke-sqlcmd -Query $sql -ServerInstance $serverName -Database 'master' -Username $sqlCreds.UserName -Password ($sqlCreds.GetNetworkCredential().Password) | ` 
    foreach { $dbNames += $_.name } 
# iterate over the dbs and add user to each one 
foreach ($db in $dbNames) { ` 
     invoke-sqlcmd -Query $createUserSql -ServerInstance $serverName -Database $db -Username ($sqlCreds.UserName) -Password $($sqlCreds.GetNetworkCredential().Password); ` 
     "created user in $db database"; ` 
} 
1

आप सर्वर का प्रबंधन करने के Azure AD उपयोग कर सकते हैं। एक डीबीए समूह बनाएं - उस समूह में सभी डीबीए असाइन करें। फिर समूह के लिए एडी मैनेजर के रूप में समूह को असाइन करें - जो आपको कई डीबीए

उस समूह में से किसी को सर्वर पर पूर्ण डीबीए अनुमति होगी।

https://docs.microsoft.com/en-gb/azure/sql-database/sql-database-aad-authentication

आदर्श रूप में, मैं वे तुम्हें डीबी स्तर एक डीबीए द्वारा दी गई उन निहित का उपयोग करने की उम्मीद है। हमारे लिए, हमें कई व्यवस्थापक की आवश्यकता है क्योंकि हमारे पास बहुत सारे डेटाबेस हैं।

संबंधित मुद्दे