(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 中生成脚本