更新多个数据库的存储过程

时间:2014-07-30 11:37:11

标签: mysql sql stored-procedures multiple-databases

我有80个不同的数据库需要维护,所有数据库都有相同的表和存储过程,但存储的信息不同,它的工作方式是我们为每个客户创建了一个单独的数据库,每个客户端都将 - 至少有一些2000 - 3000行数据可以在一些选定的表中使用。

我的第一个问题是 - 现在我必须更改所有80个数据库的存储过程。通常我将不得不去每个数据库并更新存储过程,这是一个可怕的任务,但是有一种技术,我更新一个数据库的单个存储过程,其他80个数据库的所有存储过程将自动更新

我的第二个问题是 - 使用多个数据库或创建单个数据库并使用其客户端ID识别客户端是理想的。

任何想法都会非常有帮助,

谢谢你, Prashanth Kumar B

1 个答案:

答案 0 :(得分:1)

如果您在Excel中有服务器和数据库列表,则可以:

1)将存储过程编写为文件(例如C:\ myproc.sql)

2)使用Excel为每个服务器/数据库组合创建一个单独的osql命令,如下所示:

ServerName  DatabaseName   SQLCommand
==========  ============   ==========
SERVER1     DATABASE1      ="osql -E -i ""C:\myproc.sql"" -S " & A2 & " -d " & B2
SERVER1     DATABASE2      ="osql -E -i ""C:\myproc.sql"" -S " & A3 & " -d " & B3
SERVER2     DATABASE1      ="osql -E -i ""C:\myproc.sql"" -S " & A4 & " -d " & B4
SERVER2     DATABASE2      ="osql -E -i ""C:\myproc.sql"" -S " & A5 & " -d " & B5

3)将生成的SQL命令复制到批处理文件/ Powershell脚本

4)在命令提示符下运行批处理文件/ Powershell脚本。

至于你的第二个问题,我会说拥有1个数据库和该数据库中的所有客户端肯定会更好(只要你的客户对这种安排感到满意),因为你的问题会变得更糟更糟糕的是,你有更多的客户。此外,您将有一个备份所有不同数据库的开销,而如果您有一个数据库,则可以只执行一次。