Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何为多个数据库编写用户权限脚本_Sql_Sql Server_Sql Server 2014 - Fatal编程技术网

Sql 如何为多个数据库编写用户权限脚本

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

我正在创建一个可以访问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'******',
        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。