Secara otomatis menjalankan kueri di MS SQL Studio setiap jam

13

Saya mendukung aplikasi di perusahaan besar, salah satu peran saya adalah membersihkan data. Ada kueri yang perlu saya jalankan setiap jam, dan saya ingin mengotomatiskannya. Karena kebijakan organisasi, saya tidak bisa membuat pekerjaan SQL Server Agent atau memodifikasi skema, saya hanya bisa memanipulasi data.

Tak ada habisnya

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

melakukan pekerjaan untuk saya, tetapi saya mengangkat bahu memikirkan koneksi terbuka-perma.

Idealnya, saya akan skrip MS SS sendiri untuk mengeksekusi sepotong kode yang diberikan setiap jam, tapi saya tidak yakin apakah itu mungkin.

Apakah ada solusi untuk masalah ini?

Ivan Koshelev
sumber
1
Bisakah Anda menggunakan Windows sceduler di komputer Anda?
sepupic
12
Minta seseorang yang memiliki izin untuk menjadwalkannya untuk Anda.
Tuan Magoo
@supupic Itu tanah penelitian saya berikutnya, jika tidak ada dalam MS SS yang bisa membantu saya.
Ivan Koshelev
Saya setuju. Saya akan merasa sangat tidak nyaman menjalankan kode perulangan di komputer klien saya. Bagaimana jika PC Anda rusak, ada yang mencabutnya, dll. Saya telah bekerja di lingkungan yang sama di mana pekerjaan SQL tidak tersedia untuk tim aplikasi - karena kami memiliki opsi alternatif menggunakan AutoSys atau alat penjadwalan lain yang berjalan pada server aplikasi. Coba dan cari tahu bagaimana tugas terjadwal lainnya dikelola? Solusi lain mungkin menggunakan Layanan Pelaporan SQL Server ? Tidak ideal, saya tahu ...
Terry C
9
Solusi yang benar adalah pergi ke DBA dan minta mereka membuat pekerjaan SQL Server Agent untuk menjalankan pembersihan ini setiap jam. Lalu mencari tahu mengapa Anda mendapatkan data dalam database yang kebutuhan "pembersihan" begitu sering dan mendapatkan yang tetap.
alroc

Jawaban:

22

Teman Anda adalah sqlcmd (Microsoft Technet)

  1. Buat file SQL dengan skrip yang diperlukan untuk menjalankan pekerjaan pembersihan Anda
  2. Jalankan skrip dengan sqlcmd.exe dan parameter apa pun yang diperlukan
  3. Buat Tugas Terjadwal Windows dan tambahkan perintah dengan semua parameter yang diperlukan

Misalnya

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

Semoga berhasil.

John alias hot2use
sumber
4
Pastikan skrip ini diletakkan di server aplikasi / alat yang sesuai di suatu tempat bersama dengan Tugas Terjadwal dan bukan komputer pengembangan.
APK
7

Anda tidak perlu Management Studio untuk menjalankan kueri.

Jika Anda benar-benar tidak memiliki opsi untuk meminta seseorang menjadwalkan pekerjaan untuk Anda, Anda harus melihat ke sqlcmd seperti yang tercantum dalam jawaban hot2use

Jika Anda berada pada versi yang tidak didukung (karena Anda tidak menentukan versi) ada juga osql yang merupakan klien baris perintah, tetapi alat itu sudah usang.

Anda kemudian dapat menjadwalkan perintah menggunakan penjadwal apa pun yang Anda inginkan (Penjadwal Tugas Windows misalnya) dan menjalankan sesuatu seperti ini:

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

Lihat dokumentasi untuk melihat opsi mana yang Anda miliki untuk pemilihan dan otentikasi server.

Tom V - coba topanswers.xyz
sumber
-1

Menggunakan "SQL Server Agent" yang ditemukan di dalam MS SQL studio (di objek explorer, perluas server Anda dan itu seharusnya di bagian bawah daftar) mungkin merupakan taruhan terbaik Anda.

Ini akan menciptakan pekerjaan yang dapat diatur untuk dieksekusi pada interval yang ditentukan. Pekerjaan akan berjalan sebagai layanan di server daripada klien. Ini berarti jika klien Anda memutusnya masih akan berjalan, dan jika server reboot (untuk alasan yang tidak diketahui), pekerjaan akan terus berjalan tanpa Anda perlu menginisialisasi lagi.

The downside adalah bahwa Anda mungkin akan memerlukan hak akses tinggi untuk dapat melakukan ini.

tc
sumber
3
Anda mungkin mengabaikan bagian ini dalam pertanyaan: Karena kebijakan organisasi, saya tidak dapat membuat pekerjaan SQL Server Agent [...]
Andriy M
@ Andriy: Itu masih jawaban yang benar. Kita seharusnya tidak membantu orang melakukan hal yang berlawanan dengan keinginan organisasi mereka.
Dylan Knoll
1
@DylanKnoll: Ya, saya pikir akan sangat masuk akal bagi penjawab untuk mengakui OP yang menyebutkan kebijakan itu dan memasukkan argumen yang menentang kebodohannya (misalnya, sesuatu yang sejalan dengan komentar Anda), tetapi "tidak seharusnya membantu"? Opsi yang disarankan dan diterima tidak terlihat terlalu mengerikan, jadi berpegang teguh pada prinsip akan tampak sedikit keras dalam kasus ini.
Andriy M
Saya mendapatkan poin Anda juga, tetapi bagaimana dengan perspektif DBA? Kedengarannya seperti seseorang berusaha menyembunyikan kesalahan dalam desain DB sehingga mereka tidak dibawa ke cahaya.
Dylan Knoll
1
Bunyinya "pekerjaan server SQL" sebelum diubah menjadi "pekerjaan Agen SQL Server". Saya tidak berpikir ada arti lain bagi yang pertama daripada yang kedua. (Bukan OP yang mengeditnya, ngomong-ngomong; itu adalah orang yang memahami istilah yang sedikit keliru seperti yang saya lakukan, dan memperbaikinya.) Namun, kata-katanya yang asli lebih mudah untuk diabaikan, jadi, Bagaimanapun juga, saya masih berpendapat bahwa ada kekeliruan di pihak Anda :)
Andriy M