标记SQL Server实例为DEV, TEST, STAGING, PRODUCTION等



我们有一些SQL Server盒子和实例正在运行,我们希望我们的代码能够识别它是否运行在SQL Server的开发,测试或生产服务器实例上。在此基础上,我们希望代码采取一定的路径。

我们有几个硬编码SQL Server名称和实例的选择,如

  1. Case when @@SERVERNAME= ABC/XYZ then DEV

  2. 检查Name或INSTANCE WHEN (CHARINDEX('DEV', @@SERVERNAME, 1) > 0 ) then DEV等特定字母

  3. 从表中选择类型:

    select @vcServerType = vcServerType 
    from master.dbo.tbl_ServerDetails
    when @vcServerType = 'DEV' and so on.
    

但是所有这些都依赖于假设DEV会被找到,或者服务器名会包含某些字母,在数据库中创建一个表,将存在于所有实例.

如果在实例级存在一个属性来设置/识别,

应该会容易得多。有什么建议吗?

是否有一种方法在SQL服务器中,我们可以设置一些属性或将它们标记为DEV, TEST或Production?

在Database Level的属性中有一个名为"Extended Properties"的选项卡。

可以使用sys.sp_addextendedproperty

设置例如在ADO中读取它们。. NET像这个问题的答案显示。

编辑:我真的没有看到你问的一个标签在实例级或可能在服务器级。很抱歉没有直接解决这个问题。但是您应该能够通过db级的属性实现您的愿望,不是吗?

按照上面的建议,是的,扩展属性是很棒的解决方案。

    use master
    go
    EXEC sp_addextendedproperty
         @name = 'Environment'
      , @value = 'Development'
    SELECT [value] AS [EnvironmentType]
    FROM [sys].[extended_properties] AS [ep]
    WHERE [ep].[class_desc] = 'DATABASE'
      AND [ep].[name] = 'Environment';

最新更新