(Azure Synapse) 如何在 SQL 脚本中获取环境名称?
(Azure Synapse) How to get the environment name in SQL Script?
在 Synapse Analytics 中,我们有四种环境:
"****devsa"
"****qasa"
"****uatsa"
"****prodsa"
这是我创建外部数据源的脚本:
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;
如何改变位置名称?
我的目标是能够在任何环境中运行这个脚本。
Azure Synapse 不支持 @@servername
函数,但您可以使用 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 在匹配字符串末尾没有通配符 (%
) 等同于 'ends with'。仔细检查您的服务器名称是否可以超过 100 并进行相应调整。
在 Synapse Analytics 中,我们有四种环境:
"****devsa"
"****qasa"
"****uatsa"
"****prodsa"
这是我创建外部数据源的脚本:
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;
如何改变位置名称?
我的目标是能够在任何环境中运行这个脚本。
Azure Synapse 不支持 @@servername
函数,但您可以使用 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 在匹配字符串末尾没有通配符 (%
) 等同于 'ends with'。仔细检查您的服务器名称是否可以超过 100 并进行相应调整。