2014-01-07 170 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 USERCREATE 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 
相关问题