Sql 如何为多个数据库编写用户权限脚本
我正在创建一个可以访问2个SQL Server 2014数据库的网站 我有点像个傻瓜-我以前只授予过对单个数据库的访问权限,我使用以下脚本:Sql 如何为多个数据库编写用户权限脚本,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,我正在创建一个可以访问2个SQL Server 2014数据库的网站 我有点像个傻瓜-我以前只授予过对单个数据库的访问权限,我使用以下脚本: USE [master] GO IF EXISTS(SELECT * FROM sys.syslogins WHERE name = N'MyUser') DROP LOGIN [MyUser]; GO CREATE LOGIN [MyUser] WITH PASSWORD=N'******', DEFAUL
USE [master]
GO
IF EXISTS(SELECT * FROM sys.syslogins WHERE name = N'MyUser')
DROP LOGIN [MyUser];
GO
CREATE LOGIN [MyUser]
WITH
PASSWORD=N'******',
DEFAULT_DATABASE=[MyDatabase],
CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
-- Drop & recreate db-user
USE [MyDatabase]
GO
IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'MyUser')
DROP USER [MyUser];
GO
CREATE USER [MyUser] FOR LOGIN [MyUser]
GO
EXEC sp_addrolemember N'db_owner', N'MyUser'
GO
但是,当我在第二个数据库上运行脚本时,我将失去对第一个数据库的访问权限。如果我创建两个不同的用户,我可以访问这两个用户
因此,有一个问题-我需要对这个脚本做什么才能保留对多个数据库的访问?脚本中的第一段代码会删除服务器上的登录名(如果已经存在)。因此,如果您两次运行整个脚本,它将创建登录名,创建数据库用户(并将其与登录名关联),然后在第二次迭代开始时删除/重新创建登录名
如果需要在第二个数据库中以用户身份添加此登录,则只需为任何其他数据库执行脚本的后半部分。(尽管如注释中所述,使用SQL Server Management Studio在UI中执行此操作要容易得多。)脚本中的第一段代码会删除服务器上的登录名(如果已经存在)。因此,如果您两次运行整个脚本,它将创建登录名,创建数据库用户(并将其与登录名关联),然后在第二次迭代开始时删除/重新创建登录名
如果需要在第二个数据库中以用户身份添加此登录,则只需为任何其他数据库执行脚本的后半部分。(尽管如评论中所述,使用SQL Server Management Studio在UI中执行此操作要容易得多。)为什么不在SSMS的安全部分创建一个用户,然后在安全属性下使用用户映射授予对这些数据库的级别访问权?这容易多了…只是因为我不知道怎么做。很抱歉,我确实说过,在SQL方面,我是一个相对的noob。为什么不在SSMS的安全部分创建一个用户,然后在安全属性下使用用户映射授予对这些数据库的级别访问?这容易多了…只是因为我不知道怎么做。很抱歉,我确实说过,在SQL方面,我是一个相对的noob。