我们有一些SQL Server盒子和实例正在运行,我们希望我们的代码能够识别它是否运行在SQL Server的开发,测试或生产服务器实例上。在此基础上,我们希望代码采取一定的路径。
我们有几个硬编码SQL Server名称和实例的选择,如
-
Case when @@SERVERNAME= ABC/XYZ then DEV
等 -
检查Name或INSTANCE
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?
在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';