2014-01-07 7 views
1

Мне нужно создать нового пользователя и позже установить разрешения для разных таблиц в двух разных базах данных. Это мой сценарий для создания пользователясоздание логина для нескольких баз данных

CREATE LOGIN [MyUser] WITH PASSWORD=N'something' , CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
GO 

CREATE USER [MyUser] FOR LOGIN [MyUser] WITH DEFAULT_SCHEMA=[dbo] 
GO 

CREATE ROLE MyRole AUTHORIZATION [dbo] 
GO 

EXEC sp_addrolemember N'MyRole', N'MyUser' 
GO 

Теперь у меня есть две базы данных MyDb1 и MyDb2. Мне нужно предоставить доступ для этого пользователя к MyDb1.Table1 и MyDb2.Table2. Нужно ли сначала создавать этих пользователей для MyDb1 и MyDb2? Если да, то как это можно сделать?

ответ

3

CREATE LOGIN находится в контексте всего SQL Server, а CREATE USER и CREATE ROLE находятся в контексте каждой базы данных. Вам нужно будет создать пользователя и роль в MyDb1 и MyDb2 и предоставить разрешения для каждого. Попробуйте это

USE MASTER 
GO 

CREATE LOGIN [MyUser] WITH PASSWORD=N'something' , CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
GO 

USE MyDb1 
GO 

CREATE USER [MyUser] FOR LOGIN [MyUser] WITH DEFAULT_SCHEMA=[dbo] 
GO 

CREATE ROLE MyRole AUTHORIZATION [dbo] 
GO 

EXEC sp_addrolemember N'MyRole', N'MyUser' 
GO 

GRANT SELECT ON dbo.Table1 TO MyRole 
GO 

USE MyDb2 
GO 

CREATE USER [MyUser] FOR LOGIN [MyUser] WITH DEFAULT_SCHEMA=[dbo] 
GO 

CREATE ROLE MyRole AUTHORIZATION [dbo] 
GO 

EXEC sp_addrolemember N'MyRole', N'MyUser' 
GO 

GRANT SELECT ON dbo.Table2 TO MyRole 
GO 
Смежные вопросы