我正在寻找是否有人有任何理由说明下面的代码是一个坏主意。
这个挑战涉及我在几个不同的地方和环境中遇到的挑战。如何对多个数据库中的相同表结构运行相同的查询。对于许多尝试多站点的小型 ERP 安装来说,这是一个问题。每个位置将在服务器上具有匹配的表和不同的数据库。当涉及到报告数据收集时,通常会在每个数据库中部署一个 proc,它是一个精确的副本。我在拥有多达 14 个独立站点的站点上看到了这一点。代码扩散和管理部署可能非常具有挑战性。最近,我想到了一个没有其他人提出的想法,至少我没有找到它,虽然它看起来很简单,但它似乎有效。我不知道我是否遗漏了一些微妙的东西或一些技术原因,为什么这是一个坏主意。
编码:
DECLARE @i AS INT
SET @i = 1
WHILE @i < 3
BEGIN
IF @i = 1 USE [DB1]
IF @i = 2 USE [DB2]
INSERT INTO ThirdDB.dbo.ReportTable (field)
SELECT TOP 1 SomeNumber
FROM CommonTable WITH (NOLOCK)
SET @i = @i + 1
END
我最初的测试说它有效。