为多个数据库创建登录

cra*_*ice 4 t-sql sql-server-2008

我需要创建一个新用户,然后将权限设置为两个不同数据库中的不同表.这是我创建用户的脚本

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
Run Code Online (Sandbox Code Playgroud)

现在我有两个数据库MyDb1和MyDb2.我需要为此用户授予对MyDb1.Table1和MyDb2.Table2的select访问权限.我是否需要先为MyDb1和MyDb2创建此用户?如果是这样,怎么能实现呢?

小智 6

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
Run Code Online (Sandbox Code Playgroud)