19.08.2016, 15:37:31
Войти Зарегистрироваться
Авторизация на сайте

Ваш логин:

Ваш пароль:

Забыли пароль?

Навигация
Новости
Архив новостей
Реклама
Календарь событий
Right Left

SQLCMD Архивы

  1. SQLCMD или доступ к SQL Server из командной строки
  2. Подключение к базе данных SQL Server с использованием SQLCMD
  3. Выполнение сценариев T-SQL с использованием SQLCMD
  4. Планирование задач в планировщике заданий (планировщик Windows)
  5. суммирование

Microsoft, как и другие производители наиболее важных коммерческих систем баз данных (ORACLE, IBM), предоставляет бесплатную (также для коммерческих приложений) версию сервера баз данных - SQL Server, Express edition.

Он урезан относительно полных выпусков, прежде всего в плане возможности использования высокоэффективной, масштабируемой среды, а также с точки зрения объема функциональности. Тем не менее, с точки зрения движка базы данных - бесплатная версия Express прекрасно работает во многих коммерческих приложениях. Полное сравнение возможностей отдельных выпусков SQL Server 2012 можно найти здесь ,

Наиболее жесткие ограничения связаны с максимальным размером базы данных (в SQL Server Express 2012 она составляет не более 10 ГБ / база) и усеченными аппаратными ресурсами, которые будут использоваться для поддержки процесса сервера (не более 1 процессора или 4 ядер и не более 1 ГБ ОЗУ). Они особенно серьезны и неприемлемы в больших средах, однако SQL Server Express является очень хорошим решением для небольших, менее требовательных сред. Кроме того, ничто не мешает вам перейти на более сильную версию - платную по мере роста вашей компании.

Помимо ограничений по ресурсам, одним из функциональных ограничений по сравнению с платными версиями является отсутствие агента SQL Server. Это ответственный сервис, среди прочего для проведения запланированных мероприятий. Независимо от того, будут ли они задачами обслуживания (JOB), административными задачами или, например, синхронизацией, репликацией данных (импорт, экспорт) - в SQL Server Express мы должны использовать другие методы для автоматического запуска запланированных процессов.

Автоматизация задач в среде баз данных очень полезна и практически используется в каждой реализации (даже для резервного копирования). Одним из способов обойти отсутствие агента SQL в SQL Server Express является использование инструмента командной строки SQLCMD, который запускается с использованием стандартного планировщика задач Windows (Windows Scheduler). Для реализации автоматизации вы также можете использовать службу брокера (Service Broker), но я не буду описывать этот метод здесь.

Эта статья посвящена решению SQLCMD и Windows Task Scheduler.

SQLCMD или доступ к SQL Server из командной строки

SQLCMD - это простой инструмент, с помощью которого вы можете подключиться к экземпляру SQL Server и выполнить любые команды T-SQL. Является преемником OSQL, известным из SQL Server 2000, и его всегда следует использовать, если вы хотите выполнять какие-либо команды T-SQL из командной строки (в SQL Server 2012 OSQL больше не доступен).

Подключение к базе данных SQL Server с использованием SQLCMD

Используя SQLCMD, мы можем подключиться к выбранному серверу и выполнить команды, запросы T-SQL в интерактивном или автоматическом режиме. Использовать этот инструмент просто, вам просто нужно указать экземпляр, метод аутентификации, и мы уже можем подключиться к SQL Server. Полный диапазон параметров, которые мы можем использовать, будет отображать стандартный флаг -? (здесь SQLCMD в версии 10.5 от SQL Server 2008 R2):

C: \> sqlcmd -?

C: \> sqlcmd -

Если экземпляр SQL Server, к которому вы хотите подключиться, назван и вы хотите использовать встроенную проверку подлинности Windows, вы должны использовать флаги, которые указывают сервер: -S имя_сервера и режим проверки подлинности -E (доверенное соединение). Таким простым способом вы получите соединение с сервером как часть аутентификации Windows (текущая учетная запись). Вы будете подключены к «вашей» базе данных по умолчанию, соответствующей учетной записи, в которой вы входите.

C: \ sqlcmd -S MyServer \ SQLEXPRESS -E

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

В интерактивном режиме мы можем вводить команды SQL построчно, чтобы выполнять их с помощью команды GO

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

Выполнение сценариев T-SQL с использованием SQLCMD

Мы можем выполнять команды T-SQL с помощью SQLCMD в интерактивном режиме или вызывать его автоматически (без взаимодействия с пользователем). В нашем сценарии будут интересны два варианта.

Опция QUERY : флаг -Q - позволяет выполнять любые запросы (Query) с использованием SQLCMD без необходимости входа в интерактивный режим. Только определенный запрос или пакет (в конце концов, серия команд T-SQL) будет выполняться на данном сервере в контексте учетной записи, указанной в параметрах соединения.

C: \ sqlcmd -S MyServer \ SQLEXPRESS -E -Q "SELECT getdate ()"

Опция INPUT FILE : flag - and - позволяет выполнить скрипт T-SQL, хранящийся во входном файле. Это может быть любой скрипт, сохраненный в текстовом файле, который выполняет определенные задачи. Для простого примера, давайте предположим, что наш скрипт выполнит простую операцию резервного копирования. Содержимое файла backup_script.sql должно выглядеть так:

ОБЪЯВИТЬ @FileName varchar (100), @BackupName varchar (100) SET @FileName = N 'D: \ Backups \ TEST_FULL_BACKUP_' + Replace (Convert (varchar (10), getdate (), 120), '-', '_) ') +' .bak 'SET @BackupName = N' Тестирование полного резервного копирования базы данных из '+ Convert (varchar (10), getdate (), 120) - скрипт запускается ежедневно, уникальное имя файла PRINT @FileName + char (10) ) + @BackupName + char (10) + REPLICATE ('-', 50) БАЗА ДАННЫХ РЕЗЕРВНОГО КОПИРОВАНИЯ [ТЕСТ] ДЛЯ ДИСКА = @FileName С F ИЛИ МАТТОМ, ИМЯ = @Backup

Два слова комментария. Этот скрипт создаст полную резервную копию базы данных TEST и сохранит ее в файл с именем, содержащим текущую дату. Такая форма может быть полезна, если задача должна выполняться, например, раз в день, и мы хотим, чтобы каждая резервная копия находилась в отдельном файле (следовательно, необходимо указать уникальное имя).
Вызов сейчас SQLCMD с параметром -i (входной файл) будет выглядеть следующим образом:

C: \ sqlcmd -S MyServer \ SQLEXPRESS -E -i D: \ temp \ backup_script.sql

sql

Итак, мы уже знаем, как работает SQLCMD и как мы можем вызывать любые сценарии T-SQL из командной строки. Единственное, что нам остается для выполнения задачи автоматизации задач в SQL Server Express, - это запускать автоматические сценарии. Планировщик задач Windows идеально подходит для этой цели.

Планирование задач в планировщике заданий (планировщик Windows)

Планировщик Windows - это служба, которая позволяет определять задачи на сервере / рабочей станции, работающей под управлением операционной системы Windows. Определить новую задачу очень просто. Это в основном означает указание на программу или скрипт, которые будут выполняться в соответствии с определенным расписанием. Мы также можем указать учетную запись (логин), в контексте которой будет выполняться данная задача.

В нашем сценарии мы хотим вызвать сценарий резервного копирования TEST с использованием уже известного синтаксиса SQLCMD и предварительно подготовленного сценария T-SQL (файл backup_script.sql). Кроме того, вы захотите сжать (zip) так же, и, наконец, мы сделаем небольшой заказ. Мы удалим все резервные копии старше 14 дней и другие распакованные файлы в каталоге резервных копий.

Для начала давайте создадим скрипт (пакет) с именем backup_bazy_TEST.bat. Этот скрипт будет запускаться автоматически каждый день. Содержание файла:

sqlcmd -S SQLEXPRESS -E -iD: \ temp \ backup_script.sql set dt =% DATE% set dt =% dt: - = _% zip d: \ backs \ TEST_FULL_BACKUP_% dt: - = _%. zip d: \ backs \ TEST_FULL_BACKUP_% dt: - = _%. bak Forfiles -p D: \ backs \ -s -m TEST_FULL_BACKUP * .zip -d -7 -c "cmd / c del / q @path" del D \ задние \ *. безналу

Самое главное на самом деле в первой строке - запуск базового сценария резервного копирования. Затем присваиваем переменной dt информацию о текущей дате, чтобы правильно обработать (упаковать) созданный файл резервной копии. Наконец, я использую инструмент FORFILES, чтобы удалить все файлы резервных копий старше 14 дней. Конечно, вы можете использовать сжатие уже при его создании, относиться к этому примеру исключительно в образовательном плане - я хотел показать ряд заданий в задании.

Итак, у нас есть файл сценария, теперь вам нужно спланировать задачу, под которой он будет выполняться.

Ниже приведены некоторые ключевые снимки экрана.

суммирование

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

Полный диапазон параметров, которые мы можем использовать, будет отображать стандартный флаг -?