(Azure Synapse) 如何在 SQL 脚本中获取环境名称?

Posted

技术标签:

【中文标题】(Azure Synapse) 如何在 SQL 脚本中获取环境名称?【英文标题】:(Azure Synapse) How to get the environment name in SQL Script? 【发布时间】:2021-12-26 14:26:13 【问题描述】:

在 Synapse Analytics 中,我们有四种环境:

"****devsa"

“****qasa”

"****uatsa"

“****产品”

这是我创建外部数据源的脚本:

IF NOT EXISTS (SELECT * FROM sys.external_data_sources WHERE name = 'Datalake')
BEGIN
CREATE EXTERNAL DATA SOURCE [DataLake]
WITH (LOCATION = 'https://****devsa.blob.core.windows.net/');
END;

如何改变位置名称?

我的目标是能够在任何环境中运行此脚本。

【问题讨论】:

【参考方案1】:

@@servername 函数在 Azure Synapse 中支持,但您可以使用 SERVERPROPERTY 获得类似的结果。一个简单的示例,在专用和无服务器 SQL 池上进行了测试:

SELECT SERVERPROPERTY( 'ServerName' )

您可以将结果分配给一个变量,使用Like 和通配符 (%) 检查其内容。一个简单的例子:

DECLARE @serverName VARCHAR(100) = CAST( SERVERPROPERTY( 'ServerName' ) AS VARCHAR(100) )
DECLARE @environment VARCHAR(10)

SELECT @serverName sn

IF @serverName Like '%dev'
    SET @environment = 'dev'
ELSE IF @serverName Like '%qasa'
    SET @environment = 'QA'
ELSE
    RAISERROR( 'Unable to determine environment for server %s.', 16, 1, @serverName )

SELECT @serverName sn, @environment e;

NB 在匹配字符串的末尾没有通配符 (%) 等同于“以”结尾。仔细检查您的服务器名称是否可以超过 100 并进行相应调整。

【讨论】:

谢谢,它有效。

以上是关于(Azure Synapse) 如何在 SQL 脚本中获取环境名称?的主要内容,如果未能解决你的问题,请参考以下文章

(Azure Synapse) 如何在 SQL 脚本中获取环境名称?

动态分区值 SQL Server Azure Synapse

如何在 t-sql (Azure Synapse) 的 CAST/CONVERT 中使用字符串函数

任务 - 在 Azure Synapse Serverless SQL 中生成脚本

Azure Synapse 无服务器 SQL 池 - 查询执行失败

从 Azure Sql 迁移到 Azure Synapse,无法连接到 Airflow 中的 Synapse