У меня есть несколько постоянных таблиц, которые нужно перестраивать каждую ночь.
Чтобы сохранить эти таблицы «живыми» как можно дольше, а также предложить возможность иметь резервную копию только данных за предыдущий день, другой разработчик смутно предложил выбрать маршрут, аналогичный этому, когдапроисходит ночная сборка:
создать постоянную таблицу (версию сборки; например, tbl_build_Client)
переименовать живую таблицу (tbl_Client получаетпереименовано в tbl_Client_old)
переименовать версию сборки в живую версию (tbl_build_Client переименовывается в tbl_Client)
переименоватьбудут использоваться таблицы sp_rename.
http://msdn.microsoft.com/en-us/library/ms188351.aspx
Видите ли вы более эффективные способы решения этой проблемы или какие-либо серьезные подводные камни в подходе?Заранее спасибо.
Обновление
Попытка выкинуть ответ и рекомендацию gbn об использовании синонимов, будет ли это рациональным подходом, или я получаю некоторыечасть ужасно неправильно?
Три реальных таблицы для «Клиента»:
1. dbo.build_Client
2. dbo.hold_Client
3. dbo.prev_Client
Потому что «Клиент» - это то, какдругие процессы ссылаются на данные «клиента», по умолчанию используется синоним
CREATE SYNONYM Client
FOR dbo.hold_Client
. Затем выполните эти шаги для обновления данных, сохраняя при этом непрерывный доступ.
(1.a.) TRUNCATE dbo.prev_Client
(этоимел вчерашние данные)
(1.b.) INSERT INTO dbo.prev_Client
записи из dbo.build_Client, поскольку dbo.build_Client еще имел вчерашние данные
(2.a.) TRUNCATE dbo.build_Client
(2.b.) INSERT INTO dbo.build_Client
новая сборка данных из нового процесса построения данных
(2.c.) изменить синоним
DROP SYNONYM Client
CREATE SYNONYM Client
FOR dbo.build_Client
(3.a.) TRUNCATE dbo.hold_Client
(3.b.) INSERT INTO dbo.hold_Client
записи из dbo.build_Client
(3.c.) меняют синоним
DROP SYNONYM Client
CREATE SYNONYM Client
FOR dbo.hold_Client