उपयोग [गुरु] GO --IF नहीं मौजूद है (syslogins से चुनें * जहां LOGINNAME = 'लॉग इन नाम से प्रतिस्थापित') - प्रवेश बनाएं DEFAULT_DATABASE = [गुरु] --GO घोषित @SQL VARCHAR (मैक्स) घोषित @DatabaseName VARCHAR (255)
साथ खिड़कियों से [लॉग इन नाम से प्रतिस्थापित] SYSDATABASES से --लेबल नाम के लिए
घोषित crFetch कर्सर में नाम - ('मास्टर', 'मॉडल', 'tempdb', 'msdb', 'वितरण')
SYS से चयन का नाम।डेटाबेस जहां नाम ('मास्टर', 'मॉडल', 'tempdb', 'msdb', 'वितरण') में
खुली crFetch crFetch जांच @DatabaseName से
जबकि @@ FETCH_STATUS < अगला फ़ेच नहीं > -1 '+' शुरू
सेट @SQL =
'का उपयोग [' + @DatabaseName + ']' + 'नहीं तो मौजूद है (sysusers से नाम का चयन करें जहां नाम =' '' + ' लॉगिन नाम '+' '' '+' के साथ प्रतिस्थापित करें) ' ' उपयोगकर्ता बनाएं [आर लॉगिन नाम के साथ बदलें] लॉग इन के लिए [लॉगिन नाम के साथ प्रतिस्थापित करें] '+ ' EXEC sp_addrolemember एन '+' '' '+' db_ETL '+' '' '+', एन '+' '' '+' लॉगिन 'के साथ प्रतिस्थापित करें नाम '+' '' '+' '
-' EXEC sp_addrolemember एन '+' '' db_datareader '+' '+' '' '+', एन '+' '' '+' के साथ बदलें लॉगिन नाम '+' '' '+ -' यदि अस्तित्व में नहीं है (sysusers से नाम का चयन करें जहां नाम = '+' '' '' 'db_executor' + '' '' '' '' और issqlrole = 1) ' - - ROLE db_executor '+' + - 'अनुदान दें db_executor' + '+ -' EXEC sp_addrolemember n '+' '' '+' db_executor '+' '' '+', n ' + '' '' '' + '' नाम बदलें लॉगिन नाम '+' '' '+'
--PRINT @SQL
EXEC (@SQL)
से crFetch जांच @DatabaseName अंत अगला फ़ेच
बंद crFetch पुनःआवंटन crFetch
उपयोगकर्ता स्वचालित रूप से उस चलाने के बाद से पढ़ने की पहुँच प्राप्त होगी ? – Greg
ठीक है, आपको कुछ अधिकार भी देना होगा, लेकिन उनके पास डीबी एक्सेस – gbn
होगा, मैं टेबल पर पढ़ने के अधिकार कैसे प्रदान कर सकता हूं? अन्यथा मैं वापस आ गया हूं जहां मैंने शुरू किया था। – Greg