【发布时间】:2015-07-16 22:51:33
【问题描述】:
我们有一些 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 Server 中有没有一种方法,我们可以在其中设置一些属性或将它们标记为 DEV、TEST 或 Production?
【问题讨论】:
-
我并不总是确定让代码知道环境是开发环境还是生产环境是个好主意。如果您的代码在这些环境中运行方式不同,您如何确保您的测试准确无误?
-
您忘记了您也可以只使用注册表来存储您的环境(即,AppIsRunning 键值 = 1(开发)、2(测试)、3(生产)。这样可以轻松调试根据部署位置(开发、测试或生产)进行分支的代码。
-
@DavidG 这与代码无关,而是每个环境的配置,例如连接字符串。此外,我们还有一些场景,我们希望只在某些环境上执行少量脚本。
-
@StarPilot 你是对的,但机器级描述符没有帮助,因为我们在同一个盒子上也有多个实例。
-
@NarinderSharma 然后使用应用程序级别的配置设置或创建一个表来存储设置。让代码包含设置是不安全的:如果您需要更改参数的值,您必须在代码中寻找它并可能发布新版本。更改设置???哦,恕我直言,这不是一个好主意。
标签: sql-server