我们有几个SQL Server框和实例在运行,我们希望我们的代码能够识别它是否在SQL Server的开发,测试或生产服务器实例上运行。基于此,我们希望编写代码以采取某种方式。
我们几乎没有选择硬编码SQL Server名称和实例,如
Case when @@SERVERNAME= ABC/XYZ then DEV
等等。
检查名称或实例WHEN (CHARINDEX('DEV', @@SERVERNAME, 1) > 0 ) then DEV
中的特定字母,依此类推。
从表格中选择类型:
select @vcServerType = vcServerType
from master.dbo.tbl_ServerDetails
when @vcServerType = 'DEV' and so on.
但所有都依赖于假设将找到DEV或服务器名称将包含某些字母,在数据库中创建一个将存在于所有实例中的表格。
如果只有在实例级别存在设置/标识的属性,那应该是如此简单..任何建议(除了上面)
在SQL服务器中有没有办法,我们可以设置一些属性或将它们标记为DEV,TEST或Production?
答案 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';