نحوه ی ایجاد لاگین و دادن دسترسی به یوزر در دیتابیس
با سلام و احترام خدمت همکاران گرامی
1 . جهت افزودن یک کاربر به یک دیتابیس و اختصاص دسترسیهای موردنظر، ابتدا باید از طریق بخش Security در SQL Server Management Studio، بر روی گزینه Logins راستکلیک کرده و گزینه New Login را انتخاب نمایید .
2. در پنجره بازشده، نام لاگین موردنظر (بهعنوان مثال h.talebi) را وارد نموده، گزینه SQL Server authentication را انتخاب کرده و رمز عبور مربوطه را تعیین نمایید.
در صورتی که تمایل دارید کاربر پس از اولین ورود ملزم به تغییر رمز عبور خود باشد، گزینه Enforce password expiration را فعال نگه دارید؛ در غیر این صورت میتوانید تیک این گزینه را غیرفعال نمایید.
3. پس از ایجاد لاگین، جهت اختصاص دسترسی به یک دیتابیس خاص، وارد دیتابیس موردنظر شده، از مسیر:
Database → Security → Users
بر روی گزینه Users راستکلیک کرده و New User را انتخاب نمایید.
4. در پنجره مربوطه، نام لاگین ایجادشده را در قسمت Login name وارد کرده و نام کاربر (User name) را تعیین نمایید. همچنین در قسمت Default schema، معمولاً بهتر است مقدار dbo را قرار دهید. سپس در تب Membership، نقشها و سطح دسترسیهای موردنظر را انتخاب کرده و در نهایت تغییرات را ذخیره نمایید.
به طور مثال، اگر قصد دارید به یک کاربر در تمامی دیتابیسهای موجود، دسترسی خواندن و نوشتن (db_datareader و db_datawriter) را اختصاص دهید، برای جلوگیری از انجام این فرآیند بهصورت دستی و تکراری، میتوانید از قطعه کد زیر استفاده نمایید. توجه داشته باشید که باید لاگین را حتما ایجاد کرده باشید. (مراحل 1 و 2)
DECLARE @Users TABLE (UserName sysname)
INSERT INTO @Users VALUES
(‘h.talebi’)
–تعداد بیشتر کاربر را هم میتوانید اضافه نمایید
DECLARE @DBName sysname
DECLARE @SQL nvarchar(max)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM sys.databases
WHERE database_id > 4
AND state_desc = ‘ONLINE’
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @DBName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = ‘
USE [‘ + @DBName + ‘];
‘
SELECT @SQL = @SQL + ‘
IF NOT EXISTS (
SELECT 1
FROM sys.database_principals
WHERE name = ”’ + UserName + ”’
)
BEGIN
CREATE USER [‘ + UserName + ‘] FOR LOGIN [‘ + UserName + ‘];
END;
ALTER ROLE db_datareader ADD MEMBER [‘ + UserName + ‘];
ALTER ROLE db_datawriter ADD MEMBER [‘ + UserName + ‘];
‘
FROM @Users
BEGIN TRY
EXEC sp_executesql @SQL
PRINT ‘Database [‘ + @DBName + ‘] Done’
END TRY
BEGIN CATCH
PRINT ‘Database [‘ + @DBName + ‘] Error: ‘ + ERROR_MESSAGE()
END CATCH
FETCH NEXT FROM db_cursor INTO @DBName
END
CLOSE db_cursor
DEALLOCATE db_cursor




ارسال نظر