Это похоже на задание для хранилища данных ... http://en.wikipedia.org/wiki/Data_warehouse Это необходимо для запуска по заданному расписанию, чтобы данные не отображались в реальном времени.Это единственный недостаток.
Загрузка данных с каждого server[n].database.tablename
с использованием файла, аналогичного приведенному ниже.
--Here is how you would administer the script. One single script that you would only need to modify when you added/removed servers.
So you can easily add this to source control or whatever. You can also do all this, without linked servers, if you look at some ETL tools. like SSIS
insert into dataserver1.datawarehouse.tablename select *,'svr1,'db','tablename' from svr1.db.tablename
insert into dataserver1.datawarehouse.tablename select *,'svr2,'db','tablename' from svr1.db.tablename
insert into dataserver1.datawarehouse.tablename select *,'svr3,'db','tablename' from svr1.db.tablename
insert into dataserver1.datawarehouse.tablename select *,'svr4,'db','tablename' from svr1.db.tablename
insert into dataserver1.datawarehouse.tablename select *,'svr5,'db','tablename' from svr1.db.tablename
insert into dataserver1.datawarehouse.tablename select *,'svr6,'db','tablename' from svr1.db.tablename
insert into dataserver1.datawarehouse.tablename select *,'svr7,'db','tablename' from svr1.db.tablename
insert into dataserver1.datawarehouse.tablename select *,'svr8,'db','tablename' from svr1.db.tablename
Итак, вам необходимо создать много операторов вставки.Один для каждой комбинации сервера / базы данных / таблицы.
insert into dataserver1.datawarehouse.tablename select *,'svr1,'db','tablename' from svr1.db.tablename
Поэтому, когда вы загружаете данные в эту новую таблицу базы данных, вы просто добавляете к каждой строке исходное имя сервера /имя_базы данных / имя таблицы SO .... Ваши данные выглядят так
col1 col2 col3 srvnam dbname tbl
foo bar some MSSQL1 master mycooltable
foo bar some MSSQL2 other mycooltable
Теперь все, что вам нужно сделать, это запрос к одной таблице, это будет очень быстро и чисто.