Обновление баз данных Microsoft SQL Server. Обновление баз данных Microsoft SQL Server Как мы решаем указанную задачу

Последнее обновление: 13.07.2017

Для изменения уже имеющихся строк в таблице применяется команда UPDATE . Она имеет следующий формальный синтаксис:

UPDATE имя_таблицы SET столбец1 = значение1, столбец2 = значение2, ... столбецN = значениеN

Например, увеличим у всех товаров цену на 5000:

UPDATE Products SET Price = Price + 5000

Используем критерий, и изменим название производителя с "Samsung" на "Samsung Inc.":

UPDATE Products SET Manufacturer = "Samsung Inc." WHERE Manufacturer = "Samsung"

Более сложный запрос - заменим у поля Manufacturer значение "Apple" на "Apple Inc." в первых 2 строках:

UPDATE Products SET Manufacturer = "Apple Inc." FROM (SELECT TOP 2 * FROM Products WHERE Manufacturer="Apple") AS Selected WHERE Products.Id = Selected.Id

С помощью подзапроса после ключевого слова FROM производится выборка первых двух строк, в которых Manufacturer="Apple". Для этой выборки будет определен псевдоним Selected. Псевдоним указывается после оператора AS .

Далее идет условие обновления Products.Id = Selected.Id . То есть фактически мы имеем дело с двумя таблицами - Products и Selected (которая является производной от Products). В Selected находится две первых строки, в которых Manufacturer="Apple". В Products - вообще все строки. И обновление производится только для тех строк, которые есть в выборке Selected. То есть если в таблице Products десятки товаров с производителем Apple, то обновление коснется только двух первых из них.

В данной статье я расскажу о процессе обновления баз данных Microsoft SQL Server и предложить программный продукт, который может использоваться при взаимодействии заказчика и исполнителя.

Прежде всего, зачем это нужно

Наша компания занимается разработкой программного обеспечения и в большинстве случаев в качестве СУБД мы используем Microsoft SQL Server. Для определенности будем называть компанию-разработчика «исполнителем », а компанию-клиента – «заказчиком ».

В процессе внесения изменений в базу данных программистами исполнителя формируется набор скриптов, созданных вручную или в специализированном П/О.

Впоследствии возникают такие задачи:

  1. на стороне исполнителя проверить выполнение набора скриптов в тестовой базе данных;
  2. на стороне заказчика выполнить скрипты в рабочей базе данных клиента;
Предположим, что проверить выполнение скриптов в тестовой БД может и программист и тестировщик с помощью Microsoft SQL Server Managerment Studio (SSMS). Но заставлять заказчика проводить эти операции в SSMS невозможно, так как:
  • у него вообще может быть не установлен SSMS;
  • заказчик может не обладать знаниями работы с БД. И не должен по большому счету;
  • в случае возникновения ошибок при выполнении скриптов, заказчику будет затруднительно собрать их для отправки разработчикам;

Как мы решаем указанную задачу

Нами был разработан программный продукт «Менеджер обновления баз данных», который состоит из двух программ:
  • программа для подготовки пакета обновления;
  • программа для выполнения пакета обновления;
Программа для подготовки обновления
Программа используется у исполнителя. Программисты с её помощью формируют набор скриптов в один файл.

Из особенностей этой программы можно отметить два пункта:

  • в формируемый пакет обновления может быть добавлена информация о структуре эталонной базы данных. Если такая информация присутствует в пакете, то заказчик после выполнения обновления может сравнить структуру своей базы с эталонной;
  • для заказчика программа выполнения обновления передается в виде одного EXE файла, внутри которого зашиты скрипты и структура эталонной базы.
Программа для выполнения обновления
Как уже упоминалось, запуск программы осуществляется с помощью одного EXE файла. Пользователю в большинстве случаев достаточно ввести регистрационную информацию (кстати, эти значения можно зашить в пакет обновления) и везде нажать «Далее».

На втором экране производится обновление. После этого можно провести сравнение зашитой в пакет структуры эталонной базы и текущей (на которой было выполнено обновление).

Анализ расхождения в структуре производится в графическом интерфейсе программы обновления.

К сожалению, просмотр расхождений программистами исполнителя осуществляется в текстовом файле журнала, который впоследствии высылает заказчик. Интересный подход решения этой проблемы предложен в статье Контроль изменения структуры БД . Данная задача не столь критична; программисты могут сами написать скрипт для приведения структуры к целевой.

Программный комплекс распространяется по лицензионному соглашению Freeware, скачать инсталлятор можно по ссылке

Microsoft® SQL Server 2005 - Express Edition бесплатный продукт и поставляется вместе с программным обеспечением Parsec 2.5 и 3. Выполняет функцию хранения всех данных системы. Ограничением данного продукта является объем базы данных, составляющий 4 гигабайта. После достижения данного порога, новые данные перестают записываться в систему, что приводит к потере актуальности хранящейся информации. Для решения такой проблемы требуется переход на платную расширенную версию SQL Server (у нее нет ограничений на объем базы данных) или обновление до Microsoft SQL Server 2008 R2 SP2 Express. SQL Server 2008 R2 SP2 Express - это бесплатная база данных с ограничением объема базы данных размером 10 гигабайт.

1. Для начала необходимо загрузить Microsoft® SQL Server® 2008 R2 SP2 - Express Edition с сайта www.microsoft.com, по ссылке: http://www.microsoft.com/en-US/download/details.aspx?id=30438 размер файла 110.4 MB

ВАЖНО: Для обновления необходима 32 битная английская версия!

2. На Windows XP, Vista, 2003, 2008 в процессе установки может понадобиться программная платформа NET.Framework 3.5 SP1. Загрузить можно пройдя по ссылке http://www.microsoft.com/ru-ru/Download/details.aspx?id=22 (Загружаете данную платформу перед обновлением SQL Server)
В Windows 7, 2008 R2 Server, 8, 8.1, 2012 и 2012 R2 Server .NET Framework 3.5 является компонентом Windows и устанавливается через Панель управления\Все элементы панели управления\Программы и компоненты "Включение и выключение компонентов Windows"

3. Запустить загруженный файл.

4. Дождаться извлечения установочного пакета и начала установки.

5. В открывшемся диалоговом окне установки, необходимо выбрать пункт меню "Upgrade from SQL 2000, SQL Server 2005 or SQL Server 2008 Lauch a wizard to upgrade SQL 2000, SQL Server 2005 or SQL Server 2008 to SQL Server 2008 R2"

6. В следующем окне необходимо Принять условия лицензионного соглашения - "I accept the license terms".

7. В окне установки "Select Instance" необходимо выбрать базу, которую Вы планируете обновить. "Instance to upgrade" (PARSEC3 - для ParsecNET 3, PARSECDB - для ParsecNET 2.5)

8. Дождаться нового окна установки "Error Reporting", предлагаемую галку в данном меню можно не ставить.

9. В окне "Upgrade Roles" нажмите "Show details", откроется окно в котором виден процесс установки компонентов, также видны ошибки если они вдруг возникнут.

10. Дождаться окончания процесса установки и обновления компонентов SQL server - в конце появится сообщение, что обновление прошло успешно - "Your SQL Server upgrade completed successfully".

11. Окно установки можно закрыть "Close" и выйти по крестику. Вы обновили SQL Server 2005 Express до MS SQL Server 2008 R2 Express SP2 EN.

Под обновлением данных в БД подразумевается изменение значений в существующих записях таблицы. При этом возможно как изменение значений полей в группе строк (даже всех строк таблицы), так и правка значения поля отдельной строки.

В SQL, изменить запись в таблице БД можно с помощью команды UPDATE. В самом минимальном виде команда обновления данных выглядит следующим образом:

UPDATE таблица SET поле = значение

Здесь, UPDATE – команда указывающая, что запрос на обновление данных;

таблица – название таблицы, в которой будет проводиться изменения;

SET – команда, после которой через запятую указываются поля с назначаемыми им значениями;

поле – поле таблицы, в которое будет внесено изменение;

значение – новое значение, которое будет внесено в поле.


Например, если необходимо задать полю во всех строках таблицы значение равное нулю, можно выполнить такой запрос:

UPDATE goods SET price = 0

В этом случае, поле price абсолютно во всех имеющиеся строках таблицы примет значение 0.

Изменение одного значения

Изменение значения всех полей в таблице необходимо крайне редко. Чаще всего необходимо поменять значение какой-то конкретной записи. Для этого в завершении строки с командой UPDATE будет добавлена директива WHERE, в которой указывается условие, определяющее с какой именно строкой нужно выполнить операцию обновления.

Имеется таблица:

Для примера, нужно обновить стоимость товара с известным нам его значением num. Для этого, выполним следующий запрос:

UPDATE goods SET price = 150 WHERE num = 2

Теперь, перед операцией изменения полей, будет выбрана строка, удовлетворяющая условию num = 2. Такая строка в таблице одна. В этой стоке цена и будет изменена на значение 150. В результате получим таблицу с измененной ценой товара.

Внесение изменений в несколько строк с условием отбора

Если вспомнить все многообразие условий в запросе , можно представить себе насколько разнообразными могут быть выборки. Поэтому и запросы на обновления могут выполняться либо с одной строкой, либо с группой строк, либо со всеми строками таблицы. Все зависит от стоящей перед вами задачи, а так же с какими строками таблицы нужно выполнять операции обновления.

Например, мы хотим уменьшить в два раза цену всех товаров, которые сейчас стоят от 100 и более. Запрос:

UPDATE goods SET price = price / 2 WHERE price >= 100

Условие WHERE здесь содержит правило, по которому будут выбраны только товары с ценой равной или более 100, а те товары, цена у которых ниже 100, затронуты запросом не будут.

price = price / 2 – формула, по которой будет вычисляться новая цена товаров. Новая цена будет записана равной старой цене поделенной на два.

В результате выполнения такого запроса получим таблицу с измененными записями:

Обновление значений в нескольких полях строки

При необходимости обновлять сразу несколько полей, все поля с их значениями указываются после директивы SET через запятую. Например, нужно изменить название и цену товара с кодом 2 на «утюг», стоимостью 300:

UPDATE goods SET title = "утюг" , price = 300 WHERE num = 2

Такой запрос каждому соответствующему полю в строке назначит его значение. А условие укажет, в какой именно строке будут выполнены изменения.


Выше приведены основные виды операций обновления. На их основе формируется запросы для решения большинства задач изменения данных в разработке с применением SQL.

Мастер установки SQL Server обеспечивает обновление на месте всех компонентов SQL Server до SQL Server 2016 с помощью единого дерева компонентов.

Необходимо запустить программу установки с правами администратора. При установке SQL Server из удаленной общей папки необходимо пользоваться учетной записью домена, имеющей разрешения на чтение и выполнение в удаленной общей папке и являющейся локальным администратором.

Если вы обновляете Компонент Database Engine, ознакомьтесь со статьей и выполните следующие задачи, подходящие для вашей среды.

    Создайте резервные копии всех файлов баз данных SQL Server обновляемых экземпляров, чтобы при необходимости можно было восстановить их.

    Выполните в обновляемых базах данных соответствующие команды DBCC, чтобы убедиться в том, что они находятся в согласованном состоянии.

    Оцените, сколько места на диске, помимо занимаемого пользовательскими базами данных, понадобится для обновления компонентов SQL Server. Дополнительные сведения о том, сколько места на диске занимают компоненты SQL Server, см. в разделе .

    Убедитесь в том, что существующие системные базы данных SQL Server (master, model, msdb и tempdb) настроены для автоматического увеличения и что для них имеется достаточно места на диске.

    Убедитесь в том, что все серверы баз данных имеют регистрационные данные для входа в базу данных master. Это важно для восстановления базы данных, поскольку системные регистрационные данные для входа хранятся в базе данных master.

    Отключите все хранимые процедуры, запускаемые при старте системы. Это необходимо, так как процесс обновления будет останавливать и запускать службы в обновляемом экземпляре SQL Server. Хранимые процедуры, запускаемые при старте системы, могут блокировать процесс обновления.

    При обновлении экземпляров SQL Server, для которых агент SQL Server обнаружил связи MSX/TSX, обновите целевые серверы перед обновлением главных серверов. Если обновить главные серверы раньше целевых серверов, агент SQL Server не сможет подключиться к главным экземплярам SQL Server.

    Закройте все приложения, а также службы, имеющие зависимости от SQL Server. При наличии локальных приложений, подключенных к обновляемому экземпляру, процесс обновления может завершиться ошибкой.

    Убедитесь, что репликация обновлена и остановите репликацию.
    Подробное описание процедуры последовательного обновления в реплицируемой среде см. в разделе .

Обновление до SQL Server 2016

    Вставьте установочный носитель SQL Server, перейдите в корневую папку и дважды щелкните файл Setup.exe. Чтобы выполнить установку из общего сетевого ресурса, перейдите в его корневой каталог и дважды щелкните файл Setup.exe.

    Мастер установки запускает центр установки SQL Server. Чтобы обновить существующий экземпляр SQL Server, щелкните Установка в области навигации слева, затем выберите Обновление с SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 или SQL Server 2014 .

    На странице «Ключ продукта» выберите вариант, чтобы указать, производится ли обновление до бесплатного выпуска SQL Server, или имеется ключ PID для рабочей версии этого продукта. Дополнительные сведения см. в статьях и .

    На странице «Условия лицензии» просмотрите лицензионное соглашение. Если вы с ним согласны, установите флажок Я принимаю условия лицензионного соглашения и нажмите кнопку Далее . Чтобы помочь в улучшении SQL Server, можно также включить параметр наблюдения за использованием компонентов и отправлять отчеты в Microsoft.

    В окне «Глобальные правила» процедура установки автоматически перейдет к окну «Обновления продукта», если ошибок правил нет.

    Затем появится страница обновления Microsoft, если не установлен флажок обновления Microsoft в параметрах «Панели управления\Все элементы панели управления\Обновление Windows\Изменения». Установка флажка на странице обновления Microsoft изменит параметры компьютера так, чтобы применялись последние обновления при просмотре в центре обновления Windows.

    На странице «Обновление продукта» приведены последние обновления продукта SQL Server. Если устанавливать обновления не требуется, снимите флажок Включить обновления продукта SQL Server . Если обновлений продукта не обнаружено, программа установки SQL Server не выводит на экран эту страницу и сразу переходит на страницу Установка файлов .

    На странице «Установка установочных файлов» программа установки отображает индикаторы хода загрузки, извлечения и установки установочных файлов. При обнаружении обновления программы установки SQL Server оно также будет установлено, если указано, что его следует использовать.

    В окне «Обновление правил» процедура установки автоматически перейдет к окну «Выбор экземпляра», если ошибок правил нет.

    На странице «Выбор экземпляра» укажите экземпляр SQL Server , который необходимо обновить. Чтобы обновить общие компоненты и средства управления, выберите Обновить только общие компоненты .

    На странице «Выбор компонентов» автоматически выделяются обновляемые компоненты. После выбора компонента описание его группы отображается в правой панели окна.

    Требования для выбранных компонентов показаны на правой панели. SQL Server установит обязательный компонент, который еще не был установлен, в шаге установки, описанном ниже в данной процедуре.

    На странице «Конфигурация экземпляра» укажите идентификатор экземпляра SQL Server.

    Идентификатор экземпляра - по умолчанию имя экземпляра используется как идентификатор экземпляра. Предназначен для идентификации каталогов установки и разделов реестра для данного экземпляра SQL Server. Действует как для экземпляров по умолчанию, так и для именованных экземпляров. Для экземпляра по умолчанию именем и идентификатором экземпляра является «MSSQLSERVER». Чтобы задать идентификатор экземпляра, отличный от заданного по умолчанию, введите значение в поле Идентификатор экземпляра .

    Все обновления SQL Server (в том числе и пакеты обновления) применяются к каждому из компонентов экземпляра SQL Server.

    Установленные экземпляры - в этой сетке перечислены все экземпляры SQL Server , установленные на компьютере, на котором запущена программа установки. Поскольку экземпляр по умолчанию на компьютере уже имеется, необходимо установить именованный экземпляр SQL Server 2016.

    Набор операций, оставшихся в этом разделе, зависит от того, какие компоненты были выбраны для установки. В зависимости от сделанного выбора могут отображаться не все страницы.

    На странице «Конфигурация сервера: учетные записи служб» для служб SQL Server отображаются учетные записи по умолчанию. Набор служб, которые можно настроить на этой странице, зависит от компонентов, выбранных для обновления.

    Сведения для проверки подлинности и имена входа будут перенесены из предыдущего экземпляра SQL Server. Можно назначить одну учетную запись входа всем службам SQL Server или настроить учетные записи служб индивидуально. Можно также указать, будут службы запускаться автоматически или вручную либо будут отключены. Microsoft рекомендует настраивать учетные записи служб индивидуально, предоставляя каждой из служб SQL Server минимальные разрешения, необходимые для выполнения ее задач. Дополнительные сведения см. в разделе .

    Чтобы задать одну учетную запись входа для всех учетных записей служб этого экземпляра SQL Server, укажите учетные данные в полях, которые находятся в нижней части страницы.

    Примечание по безопасности. Не используйте пустые пароли. Выбирайте надежные пароли.

    После ввода данных входа для служб SQL Server нажмите кнопку Далее .

    На странице «Параметры обновления полнотекстового поиска» укажите параметры обновления для обновляемых баз данных. Дополнительные сведения см. в разделе .

    Если все правила удовлетворены, окно «Правила компонентов» автоматически сменится следующим.

    На странице готовности к обновлению отображается представление параметров установки в виде дерева, заданных в программе установки. Чтобы продолжить, нажмите кнопку Установить . SQL Server вначале устанавливает требуемые компоненты для выбранных средств, затем устанавливает сами средства.

    Во время установки на странице выполнения установки отображается состояние установки, позволяющее наблюдать за ее ходом.

    После установки на странице Завершение будет приведена ссылка на файл сводного журнала установки и даны другие важные примечания. Чтобы завершить процесс установки SQL Server , нажмите кнопку Готово .

    Если будет предложено перезагрузить компьютер, выполните перезагрузку. После завершения установки важно прочитать сообщение мастера установки. Дополнительные сведения о файлах журналов установки см. в разделе .

После обновления до SQL Server выполните следующие задачи.

    Регистрация серверов: в процессе обновления удаляются настройки реестра для предыдущего экземпляра SQL Server. После обновления необходимо заново зарегистрировать серверы.

    Обновление статистики - чтобы оптимизировать производительность запросов, рекомендуется обновить статистику для всех обновленных баз данных. Вызовите хранимую процедуру sp_updatestats , чтобы обновить статистику в пользовательских таблицах баз данных SQL Server.

    Настройка новой установки SQL Server - чтобы уменьшить уязвимую контактную зону системы, SQL Server по выбору устанавливает и активирует ключевые службы и функции. Дополнительные сведения о настройке контактной зоны см. в файле Readme для данной версии.