如何在 Azure DevOps 管道中将变量注入 SQL 脚本?

问题描述 投票:0回答:2

具体来说,我需要知道在下面的脚本中填充变量

[variable_1]
&
[variable_2]
的语法是什么:

INSERT [dbo].[ClientSecrets] ([Id], [Description], [Value], [Expiration], [Type], [Created], [ClientId]) 
VALUES (1, NULL, N'[variable_1]', NULL, N'SharedSecret', CAST(N'2020-06-24T03:38:48.1778227' AS DateTime2), 1)
GO
INSERT [dbo].[ClientSecrets] ([Id], [Description], [Value], [Expiration], [Type], [Created], [ClientId]) 
VALUES (2, NULL, N'[variable_2]', NULL, N'SharedSecret', CAST(N'2020-06-24T03:38:48.4931030' AS DateTime2), 2)
GO

假设管道具有

[variable_1]
[variable_2]
的值并且已正确配置。我只是不知道对我的期望是什么。

sql-server azure-devops
2个回答
3
投票

在配置文件中,你调用脚本文件的某个地方,例如:

- task: CmdLine@1
  displayName: Run Sqlcmd
  inputs:
    filename: Sqlcmd
    arguments: '-S $(ServerName) -U $(AdminUser) -P $(AdminPassword) -d $(DatabaseName) -i $(SQLFile)'

使用命令行参数

-v
传递一些参数,例如:

arguments: '-S $(ServerName) -U $(AdminUser) -P $(AdminPassword) -d $(DatabaseName) -i $(SQLFile) -v variable_1=$(something) variable_2=$(somethingElse)'

然后,在您的 SQL 脚本中:

INSERT [dbo].[ClientSecrets] ([Id], [Description], [Value], [Expiration], [Type], [Created], [ClientId])
-- Check this ---v-----------v
VALUES (1, NULL, $(variable_1), NULL, N'SharedSecret', CAST(N'2020-06-24T03:38:48.1778227' AS DateTime2), 1)
GO
INSERT [dbo].[ClientSecrets] ([Id], [Description], [Value], [Expiration], [Type], [Created], [ClientId])
-- Check this ---v-----------v
VALUES (2, NULL, $(variable_2), NULL, N'SharedSecret', CAST(N'2020-06-24T03:38:48.4931030' AS DateTime2), 2)
GO

请注意,这尚未经过测试。


0
投票

参加这里的聚会有点晚了,但我今天需要这样做:

ADO 管道让它变得太简单了。就像对待 powershell 或 AZcli 脚本一样对待它。创建一个管道 var 并使用 $(var) 调用它

IF EXISTS (SELECT * FROM sys.database_principals WHERE name = '$(client)_user')
    BEGIN
    Print '$(client)_user already exists.  Dropping to reinitialize'
    DROP USER [$(client)_user]
    END

© www.soinside.com 2019 - 2024. All rights reserved.