Автоматизировать выполнение SQL-запросов в SSMS - PullRequest
0 голосов
/ 01 апреля 2019

У меня настроена база данных SQL Server, которой я управляю с помощью SQL Server Management Studio 17.

В этой базе данных у меня есть 27 таблиц, которые я поддерживаю, выполняя довольно простые OPENQUERY сценарии каждое утро, что-то вроде:

DROP TABLE IF EXISTS [databasename].[dbo].[table27]
SELECT * INTO  [databasename].[dbo].[table27] FROM OPENQUERY(OracleInstance, '

SELECT
  table27.*

FROM
  table27
    INNER JOIN table26 ON table27.criteria = table26.criteria

WHERE
    < filter >
    < filter >

  ');

И это прекрасно работает! Но каждое утро сложно войти в SSMS, щелкнуть правой кнопкой мыши по моей базе данных, нажать «Новый запрос», скопировать 27 отдельных сценариев SQL и запустить их. Я ищу способ автоматизировать это. Моя директория, в которой хранятся эти скрипты, выглядит следующим образом:
enter image description here

Я не знаю, достижимо ли это в SSMS или как пакетный скрипт. Я бы вообразил для последнего какой-нибудь псевдокод, похожий на:

connect to sql server instance

given instance:
        for each sql_script in directory:
                sql_script.execute

Я попытался создать скрипт в SSMS, выполнив следующие действия: Tasks -> Script Database -> Но нет возможности выполнить файл .sql в рассматриваемых таблицах.

Я пытался взглянуть на следующие ресурсы по использованию T-SQL для планирования ночных заданий, но мне не повезло понять, как это сделать:

Ожидаемым результатом будет возможность автоматического запуска 27 sql запросов в указанном выше каталоге для обновления таблиц в SQL Server один раз в день, предпочтительно в 6:00 по восточному поясному времени. Моя основная проблема заключается в том, что я не могу получить доступ ни к чему , кроме SQL Server Management Studio; Я не могу получить доступ к диспетчеру конфигурации, чтобы использовать такие вещи, как агент SQL Server. Поэтому, если я планирую задачу, мне нужно сделать это через SSMS.

Ответы [ 4 ]

2 голосов
/ 01 апреля 2019

Вы на самом деле не можете получить доступ к агенту SQL Server через Object Explorer? Это расположено ниже «Каталог услуг по интеграции» Смотрите выделенный ниже:

enter image description here

Вы описываете, что по какой-то причине вы не можете получить доступ к этому вопросу. Если вы не можете получить к нему доступ, значит, что-то не так с SQL Server или, возможно, у вас нет прав администратора для выполнения таких задач, как планирование заданий (предположение).

1 голос
/ 01 апреля 2019

В SSMS вы хотели бы использовать задачу «Выполнение оператора T-SQL» и записать оператор удаления в поле «Оператор SQL» на вкладке «Общие».

Однако я бы посмотрел на sqlcmd. Просто создайте пакетный скрипт и запланируйте его в Task Scheduler (если вы используете Windows). Или вы можете использовать

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G" pause

Из этого поста. Запустить все файлы SQL в каталоге

0 голосов
/ 01 апреля 2019

Я предлагаю вам добавить эти сценарии в качестве заданий для агента SQL Server.

0 голосов
/ 01 апреля 2019

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

...