Як створити робочі місця у випуску SQL Server Express


82

Хтось може пояснити мені, як створювати робочі місця у SQL Server Expressредакції?


6
Якщо ви маєте на увазі завдання SQL Agent, ця функція недоступна у версії Express. Див. Відповідь на це запитання щодо інших можливостей: stackoverflow.com/questions/3788583/…
8kb

Експрес-версія підтримує SQL Server Broker, і ви можете створити власний механізм, як тут
Лукаш Шозда

Відповіді:


123

SQL Server Express не включає агента SQL Server , тому неможливо просто створити завдання агента SQL.

Що ви можете зробити:
Ви можете створювати робочі місця "вручну", створюючи пакетні файли та файли сценаріїв SQL та запускаючи їх за допомогою Планувальника завдань Windows.
Наприклад, ви можете створити резервну копію бази даних за допомогою двох таких файлів:

backup.bat:

sqlcmd -i backup.sql

backup.sql:

backup database TeamCity to disk = 'c:\backups\MyBackup.bak'

Просто помістіть обидва файли в одну папку та виконайте пакетний файл за допомогою Планувальника завдань Windows.

Перший файл - це просто пакетний файл Windows, який викликає утиліту sqlcmd і передає файл сценарію SQL.
Файл сценарію SQL містить T-SQL. У моєму прикладі це лише один рядок для резервного копіювання бази даних, але ви можете помістити будь-який T-SQL всередину. Наприклад, UPDATEзамість цього ви можете зробити кілька запитів.


Якщо робочі місця, які ви хочете створити, призначені для резервного копіювання, обслуговування індексів або перевірки цілісності, ви також можете скористатися чудовим рішенням з обслуговування від Ola Hallengren.

Він складається з набору збережених процедур (і завдань агента SQL для неекспрес-версій SQL Server), а в розділі поширених запитань є розділ про те, як запускати завдання на SQL Server Express:

Як розпочати роботу з технічним рішенням SQL Server на SQL Server Express?

SQL Server Express не має агента SQL Server. Отже, виконання збережених процедур має бути заплановано за допомогою файлів cmd та запланованих завдань Windows. Виконайте ці кроки.

SQL Server Express не має агента SQL Server. Отже, виконання збережених процедур має бути заплановано за допомогою файлів cmd та запланованих завдань Windows. Виконайте ці кроки.

  1. Завантажте MaintenanceSolution.sql.

  2. Виконайте MaintenanceSolution.sql. Цей сценарій створює необхідні вам збережені процедури.

  3. Створювати cmd-файли для виконання збережених процедур; наприклад:
    sqlcmd -E -S. \ SQLEXPRESS -d master -Q "ВИКОНАТИ dbo.DatabaseBackup @Databases = 'USER_DATABASES', @Directory = N'C: \ Backup ', @BackupType =' FULL '" -b -o C: \ Log \ DatabaseBackup.txt

  4. У запланованих завданнях Windows створіть завдання для виклику файлів cmd.

  5. Складіть графік завдань.

  6. Почніть завдання та переконайтеся, що вони успішно виконані.


1
Де я повинен вказати дані для входу?
HasanG

1
@ HasanGürsoy Якщо ви створюєте заплановане завдання, яке запускає SQLCMD (з файлом BAT або без нього), я рекомендую вам використовувати параметр "-E" SQLCMD для автентифікації Windows. Щоб це працювало, визначте логін SQL Server для користувача Windows, який є власником вашого запланованого завдання Windows. Якщо незрозуміло, під яким входом до Windows виконується завдання, поставте "WHOAMI" (команда DOS) у файл BAT і захопіть вихідні дані файлу BAT, щоб побачити, хто виконує.
Doug_Ivison

@ HasanGürsoy Або для аутентифікації SQL Server я б помістив пароль у запланованому завданні Windows (де дозволи визначають, хто може його читати), замість того, щоб розміщувати його де-небудь у файлі. Він надходить у командний рядок файлу BAT. Якщо це перший параметр, який передається до файлу BAT, то у файлі BAT ви можете вказати його як% 1, наприклад, у рядку SQLCMD.
Doug_Ivison

41

Функціонал створення завдань агента SQL недоступний у SQL Server Express Edition. Альтернативою є виконання командного файлу, який виконує сценарій SQL за допомогою Планувальника завдань Windows.

Для цього спочатку створіть командний файл з назвою sqljob.bat

sqlcmd -S servername -U username -P password -i <path of sqljob.sql>

Замінити servername, username, passwordіpath з вашими.

Потім створіть файл сценарію SQL із назвою sqljob.sql

USE [databasename]
--T-SQL commands go here
GO

Замініть ім'я [databasename]вашої бази даних. USEіGO необхідно , коли ви пишете сценарій SQL.

sqlcmd- це утиліта командного рядка для виконання сценаріїв SQL. Після створення цих двох файлів виконайте командний файл за допомогою Планувальника завдань Windows.

Примітка: Раніше на це питання було розміщено майже таку ж відповідь. Але я відчув, що він був неповним, оскільки в ньому не було зазначено про використання інформації для входу sqlcmd.


Де б я врятував цей sqljob.sql? і як я можу поставити, коли він буде виконуватися?
WTFZane

1
@WTFZane, це не має значення, поки місцезнаходження доступне від того, хто виконує пакетний файл. (у сценарії вище, замініть path of sqljob.sqlбудь-яким місцем, яке ви використовуєте). Пам’ятайте, що *.sqlфайл тут - не що інше, як просто текстовий файл.
Абель

16

Видання SQL Server Express певним чином обмежені - один із способів полягає в тому, що вони не мають агента SQL, який дозволяє планувати завдання.

Є кілька сторонніх розширень, які надають таку можливість - перевірте, наприклад:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.