Tsql 将SQL用户存储在变量中
我在SSMS(2014)中生成了一些创建脚本,作为脚本的一部分,创建了几个帐户。我们将根据db是部署用于测试、预生产还是生产而使用不同的帐户 我想让安装程序很容易更改帐户,因此我认为如果我可以存储登录名并在脚本的最顶端声明,这将是一个好主意,但是我不确定如何进行 目前我有:Tsql 将SQL用户存储在变量中,tsql,sql-server-2014,Tsql,Sql Server 2014,我在SSMS(2014)中生成了一些创建脚本,作为脚本的一部分,创建了几个帐户。我们将根据db是部署用于测试、预生产还是生产而使用不同的帐户 我想让安装程序很容易更改帐户,因此我认为如果我可以存储登录名并在脚本的最顶端声明,这将是一个好主意,但是我不确定如何进行 目前我有: CREATE USER [RAMBOLL\SVC_D-StructureDB] FOR LOGIN [somedomain\someaccount] WITH DEFAULT_SCHEMA=[dbo] GO ALTER RO
CREATE USER [RAMBOLL\SVC_D-StructureDB] FOR LOGIN [somedomain\someaccount] WITH DEFAULT_SCHEMA=[dbo]
GO
ALTER ROLE [db_datareader] ADD MEMBER [somedomain\someaccount]
GO
ALTER ROLE [db_datawriter] ADD MEMBER [somedomain\someaccount]
GO
如何声明“somedomain\someaccount”,然后在上面的SQL代码中引用它?我试过了,但SQL不喜欢
DECLARE @SomeAccount VARCHAR(255)
SET @SomeAccount = "[somedomain\someaccount]"
CREATE USER @SomeAccount FOR LOGIN @SomeAccount WITH DEFAULT_SCHEMA=[dbo]
GO
ALTER ROLE [db_datareader] ADD MEMBER @SomeAccount
GO
ALTER ROLE [db_datawriter] ADD MEMBER @SomeAccount
GO
这些遗留的和将被删除的存储过程允许参数化
DECLARE @env VARCHAR(10)
SET @env = 'test'
IF @env = 'test'
BEGIN
CREATE USER [somedomain\someaccount] FOR LOGIN [somedomain\someaccount] WITH DEFAULT_SCHEMA=[dbo]
ALTER ROLE [db_datareader] ADD MEMBER [somedomain\someaccount]
ALTER ROLE [db_datawriter] ADD MEMBER [somedomain\someaccount]
END
ELSE IF @env = 'live'
BEGIN
CREATE USER [somedomain\liveaccount] FOR LOGIN [somedomain\liveaccount]WITH DEFAULT_SCHEMA=[dbo]
ALTER ROLE [db_datareader] ADD MEMBER [somedomain\liveaccount]
ALTER ROLE [db_datawriter] ADD MEMBER [somedomain\liveaccount]
END
...
这些遗留的和将被删除的存储过程允许参数化
DECLARE @env VARCHAR(10)
SET @env = 'test'
IF @env = 'test'
BEGIN
CREATE USER [somedomain\someaccount] FOR LOGIN [somedomain\someaccount] WITH DEFAULT_SCHEMA=[dbo]
ALTER ROLE [db_datareader] ADD MEMBER [somedomain\someaccount]
ALTER ROLE [db_datawriter] ADD MEMBER [somedomain\someaccount]
END
ELSE IF @env = 'live'
BEGIN
CREATE USER [somedomain\liveaccount] FOR LOGIN [somedomain\liveaccount]WITH DEFAULT_SCHEMA=[dbo]
ALTER ROLE [db_datareader] ADD MEMBER [somedomain\liveaccount]
ALTER ROLE [db_datawriter] ADD MEMBER [somedomain\liveaccount]
END
...