2011-08-29 93 views
1

我正在使用我的SQL部署脚本。我有一个名为“User123”的登录名,我已经添加到我当前的数据库,但我有一个存储过程,记录信息到MyDB,我需要在MyDB的User123权限,所以我创建了一个用户在MyDB的权限,但是我怎么脚本,而不是手动添加用户..将用户脚本编写到特定数据库?

我有这个目前为止,但似乎无法弄清楚如何将其添加到其他数据库,“MyDB”可以硬编码,因为只会有1在每个服务器上,但我不能硬编码在

 
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
 安全
    User123

DB1
 安全
    User123

我想一个脚本,将用户添加到这两个当前数据库和“MYDB”,而无需手动切换数据库

+0

我通常使用INSERT INTO sys.database_pricipals其中name = N 'user123' 只是把插入行两次,每个数据库一次? 也许我误解了这个问题? –

+0

@JohnnyCraig:难道这个USE 仍然是相关的吗?或者至少INSERT必须是完全合格的 - 即。 INSERT INTO MyDB.sys.database_principals ...但问题是在使用INSERT方法时是否所有字段都设置正确。你有没有验证过这个? – 2011-12-21 08:57:17

回答

2

什么:

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 
+0

MSDN也有类似这样的切换数据库的例子。 http://msdn.microsoft.com/en-us/library/ms173463.aspx @LeeHull如果通过“不得不手动切换数据库”的意思,而不使用“USE [DB NAME]”,那么我相信你可以编写一个脚本来为你自动化。 –

相关问题