从具有相同列名的不同数据库更新多个表数据

时间:2017-05-26 05:44:07

标签: sql sql-server-2008

我有11 databases,其中包含User Details表,即所有员工详细信息。在那里,我有一个列“Status"(which is 1 for Active and 0 for Inactive)。我有一个常规任务,用于为所提到的员工更新”Status“列值0 or 1,为此,我必须通过所有数据库然后用户表然后我必须更新。我必须为所有数据库执行相同的任务,并且它消耗了大量时间。 如果我得到一个短QueryProcedure,我必须运行一次,然后立即进行所有更新,这将是一个很大的帮助。

2 个答案:

答案 0 :(得分:0)

我看到了几个可能的选择。

您可以构建一个SSIS包来连接到每个数据库并执行必要的更新,前提是可以在数据库或某些外部源(如文本文件)中找到要更新的员工和更新内容的条件。 / p>

或者,您可以在SQL Server Management Studio中使用SQLCMD模式,然后在SQL脚本中使用CONNECT命令切换到每个服务器和数据库,就像这样......

:CONNECT Server1 
USE Database1

--put your update SQL script

:CONNECT Server2 
USE Database2

--put your update SQL script

...

这些链接提供了有关使用SQLCMD模式的更多信息......

Connecting to multiple servers in a Query Window using SQLCMD

SQL Server SQLCMD Basics

诺尔

答案 1 :(得分:0)

正如您所提到的,您有11个数据库。

问题:首先,您使用非常糟糕的数据库设计方法,

真正发生的事情:当您使用多个数据库并且需要检入每个数据库时,服务器需要一次又一次地连接到不同的数据库,与切换相比,这需要更多的时间因为连接处理而进入表格。

解决方案:在您的情况下,您只有一个选项可以在循环中连接不同的数据库,然后在循环中为每个数据库运行查询。

建议:您应该将所有数据保存在同一个数据库中,您可以使用表格中的额外列来跟踪不同实体的数据。