Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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 server 将用户编写脚本到特定数据库?_Sql Server_Database_Roles_Login Script - Fatal编程技术网

Sql server 将用户编写脚本到特定数据库?

Sql server 将用户编写脚本到特定数据库?,sql-server,database,roles,login-script,Sql Server,Database,Roles,Login Script,我正在编写SQL部署脚本 我有一个名为User123的登录名,我已经添加到我当前的数据库中,但我有一个将信息记录到MyDB的存储过程,我需要MyDB中的User123权限,因此我在MyDB中创建了一个具有权限的用户,但是我如何编写脚本,而不是手动添加该用户 到目前为止,我已经有了这个功能,但似乎无法确定如何将它添加到其他数据库中,MyDB可以硬编码,因为每个服务器上只有一个,但是我无法硬编码当前运行脚本的数据库 IF NOT EXISTS (SELECT * FROM sys.database_

我正在编写SQL部署脚本

我有一个名为User123的登录名,我已经添加到我当前的数据库中,但我有一个将信息记录到MyDB的存储过程,我需要MyDB中的User123权限,因此我在MyDB中创建了一个具有权限的用户,但是我如何编写脚本,而不是手动添加该用户

到目前为止,我已经有了这个功能,但似乎无法确定如何将它添加到其他数据库中,MyDB可以硬编码,因为每个服务器上只有一个,但是我无法硬编码当前运行脚本的数据库

IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'User123') BEGIN CREATE USER [User123] FOR LOGIN [User123] WITH DEFAULT_SCHEMA=[dbo] END GO 这只在当前数据库上运行,如何使它在其他数据库上运行

例如

MyDB 安全 用户123

DB1 安全 用户123

我想要一个脚本,可以将用户同时添加到当前数据库和MyDB中,而不必手动切换数据库。那么:

USE MyDB
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'User123')
BEGIN
   CREATE USER [User123] FOR LOGIN [User123] WITH DEFAULT_SCHEMA=[dbo]
END
GO

USE DB1
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'User123')
BEGIN
   CREATE USER [User123] FOR LOGIN [User123] WITH DEFAULT_SCHEMA=[dbo]
END
GO

我通常使用INSERT INTO sys.database\u pricipals,其中name=N'user123'只需将INSERT插入行两次,每个数据库一次?也许我误解了这个问题?@JohnnyCraig:同样的用法还会有意义吗?或者至少插入必须是完全限定的-即插入到MyDB.sys.database\u主体中。。。但问题是在使用INSERT方法时是否正确设置了所有字段。你验证过吗?MSDN也有这样切换数据库的例子@LeeHull如果您需要手动切换数据库,而不使用[DB NAME],那么我相信您可以编写一个脚本来为您实现自动化。