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

时间:2015-07-16 22:51:34

标签: sql-server

我们有几个SQL Server框和实例在运行,我们希望我们的代码能够识别它是否在SQL Server的开发,测试或生产服务器实例上运行。基于此,我们希望编写代码以采取某种方式。

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

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

  2. 检查名称或实例WHEN (CHARINDEX('DEV', @@SERVERNAME, 1) > 0 ) then DEV中的特定字母,依此类推。

  3. 从表格中选择类型:

    select @vcServerType = vcServerType 
    from master.dbo.tbl_ServerDetails
    when @vcServerType = 'DEV' and so on.
    
  4. 但所有都依赖于假设将找到DEV或服务器名称将包含某些字母,在数据库中创建一个将存在于所有实例中的表格。

    如果只有在实例级别存在设置/标识的属性,那应该是如此简单..任何建议(除了上面)

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

2 个答案:

答案 0 :(得分:0)

有一个名为"扩展属性"的标签。在其数据库级别的属性中。

You can set them with sys.sp_addextendedproperty

并在ADO.NET中阅读它们,就像这个question节目的答案一样。

编辑:我没有真正看到你在实例级别或服务器级别上询问过哪个标签。很抱歉没有直接解决这个问题。但你应该能够通过DB-Level上的属性实现你想要的东西,不应该吗?

答案 1 :(得分:0)

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

    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';