Executar consulta automaticamente no MS SQL Studio a cada hora

13

Eu apoio um aplicativo em uma grande empresa, uma das minhas funções é limpar dados. Há uma consulta que preciso executar a cada hora e gostaria de automatizá-la. Devido às políticas da organização, não consigo criar trabalhos do SQL Server Agent nem modificar esquemas, apenas posso manipular dados.

Um interminável

WHILE(1=1)
BEGIN 
WAITFOR DELAY '01:00';
--do work
END

faz o trabalho para mim, mas dou de ombros com o pensamento de uma conexão permanente.

Idealmente, eu escreveria o próprio MS SS para executar um determinado pedaço de código a cada hora, mas não tenho certeza se isso é possível.

Existe alguma solução para este problema?

Ivan Koshelev
fonte
1
Você pode usar o sceduler do Windows no seu pc?
Sepupic
12
Peça a alguém que tenha permissão para agendá-lo para você.
Mister Magoo
@sepupic Essa é minha próxima terra de pesquisa, se nada no MS SS puder me ajudar.
Ivan Koshelev 12/06
Concordo. Eu me sentiria muito desconfortável executando o código em loop no meu computador cliente. E se o seu PC travasse, alguém o desconectasse, etc. Eu trabalhei em ambientes semelhantes onde os trabalhos SQL não estavam disponíveis para as equipes de aplicativos - porque tínhamos uma opção alternativa de usar o AutoSys ou outra ferramenta de agendamento em execução em um servidor de aplicativos. Tente descobrir como outras tarefas agendadas são gerenciadas? Outra solução alternativa pode ser usar o SQL Server Reporting Services ? Não é o ideal que eu sei ...
Terry C
9
A solução correta é ir para os DBAs e fazer com que eles criem um trabalho do SQL Server Agent para executar essa limpeza a cada hora. Em seguida, descubra por que você está obtendo dados no banco de dados que precisa de "limpeza" com tanta frequência e conserte isso .
alroc

Respostas:

22

Seu amigo é sqlcmd (Microsoft Technet)

  1. Crie um arquivo SQL com o script necessário para executar sua tarefa de limpeza
  2. Execute o script com sqlcmd.exe e quaisquer parâmetros necessários
  3. Crie uma tarefa agendada do Windows e adicione o comando com todos os parâmetros necessários

Por exemplo

sqlcmd -d YOUR_DB -E -i YOUR_SCRIPT.SQL -o OUTPUTFILE.TXT 

Boa sorte.

John aka hot2use
fonte
4
Certifique-se de que esses scripts sejam colocados em um servidor de aplicativos / ferramentas apropriado em algum lugar junto com a Tarefa agendada e não no computador de desenvolvimento.
GER
7

Você não precisa do Management Studio para executar consultas.

Se você realmente não tem opção para alguém agendar um trabalho para você, consulte o sqlcmd conforme observado na resposta do hot2use

Se você estiver em uma versão em que isso não é suportado (já que você não especificou uma versão), também haverá o osql, que é um cliente de linha de comando, mas essa ferramenta foi descontinuada.

Você pode agendar um comando usando o agendador que desejar (Windows Task Scheduler, por exemplo) e executar algo como isto:

OSQL -E -i c:\temp\dowork.sql

Dê uma olhada na documentação para ver quais opções você possui para seleção e autenticação de servidor.

Tom V - tente topanswers.xyz
fonte
-1

Usar o "SQL Server Agent", encontrado no MS SQL studio (no explorador de objetos, expanda o servidor e ele deve estar normalmente no final da lista) é provavelmente a sua melhor aposta.

Isso criará um trabalho que pode ser configurado para ser executado em intervalos definidos. Os trabalhos serão executados como um serviço no servidor e não no cliente. Isso significa que, se o seu cliente desconectar, ele ainda será executado e se o servidor for reiniciado (por um motivo desconhecido), o trabalho continuará sendo executado sem a necessidade de inicializá-lo novamente.

A desvantagem é que você provavelmente precisará de direitos de acesso elevados para poder fazer isso.

tc
fonte
3
Você provavelmente ignorou este trecho da questão: devido às políticas da organização, não consigo criar trabalhos do SQL Server Agent [...]
Andriy M
@ Andy: Ainda é a resposta correta. Não devemos ajudar as pessoas a fazer sombra na TI contra as necessidades de sua organização.
Dylan Knoll
1
@DylanKnoll: Bem, acho que faria todo o sentido para o respondente reconhecer que o OP mencionou a política e incluir argumentos contra sua estupidez (algo parecido com o seu comentário, por exemplo), mas "não deveria estar ajudando"? A opção sugerida e aceita não parece muito atroz, portanto, seguir os princípios parece um pouco duro neste caso.
Andriy M
Eu também entendi, mas e a perspectiva dos DBAs? Parece muito que alguém está tentando esconder erros no design do banco de dados para que não sejam trazidos à luz.
Dylan Knoll
1
Ele leu "Trabalhos do SQL Server" antes de ser alterado para "Trabalhos do SQL Server Agent". Eu não acho que possa haver outro significado para o primeiro que o último. (Não foi o OP quem editou isso, a propósito; foi uma pessoa que entendeu o termo levemente errôneo exatamente do jeito que eu entenderia e o corrigiu.) A redação original, porém, é ainda mais fácil de ignorar, uma maneira ou de outra, eu ainda sustentam que foi um descuido do seu lado :)
Andriy M