На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
  
> Обновление БД , sql server 2005
    Здравствуйте, ситуация следующая:
    есть приложение, работающее с базой данных, на некотором объекте(в другом от меня городе), в БД накопилось уже некоторое количество данных. по воле судьбы, понадобилось расширить функционал приложения и БД (по факту в БД были изменены типы данных нескольких полей в таблицах, которые теперь допускают нулл, и типы данных в нескольких хранимых процедурах). т.о. на данный момент у меня есть пустая, но актуальная по функционалу, БД и полная, но требующая обновления функционала БД.
    Внимание вопрос:
    каким образом наименьшими потом и кровью мне перенести данные из старой БД в новую ? возможно есть какое-то стандартное средство или стандартные команды, для этой, думается, не нестандартной задачи ?
      Задача абсолютно стандартная
      Данные во временную таблицу, основную чистим меняем структуру и инсерт им данные из времянки. Секас возможен с автоинкрементами.

      В принципе альтер тейбл и алтер колумн должны отработать.
      Проверить - сделать клон БД и накатить изменения структур. Если ничего не обрушилось то описанный выше способ не нужен
      Сообщение отредактировано: Павел Калугин -
        Цитата Павел Калугин @
        Данные во временную таблицу, основную чистим меняем структуру и инсерт им данные из времянки.

        А какой смысл два раза гонять данные? Создать новую структуру и перегнать в неё данные, старую прибить, новую переименовать.
        Ещё проще, конечно, менять структуру вообще без переноса данных, но вот тут надо смотреть. Порой ALTER TABLE быстрее, а порой и медленнее... и если проигрыш по времени не суточный, я считаю in-place upgrade предпочтительным. Во-первых, при этом гораздо меньше изменений (права, связи, триггеры и пр.), во-вторых, нет косвенных проблем (типа тех же, с автоинкрементами).
          Кстати количество нетрадиционного секса с автонкрементом помогает избежать SET IDENTITY_INSERT (Transact-SQL)
          https://msdn.microsoft.com/ru-ru/library/ms188059.aspx
            Т.о., насколько я понял, мне достаточно будет непосредственно на месте прописать ALTER TABLE и ALTER PROCEDURE, т.к. у меня меняются только второстепенные поля.
              bogdanchek ты точно читал?
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0204 ]   [ 15 queries used ]   [ Generated: 29.03.24, 12:09 GMT ]