Artikel ini tentang mengotomatiskan tugas pemeliharaan database SQL melalui utilitas SQLCMD yang memungkinkan Anda menjalankan perintah T-SQL langsung dari command prompt tanpa menggunakan SSMS (SQL Server Management Studio).
Biasanya, mengotomatisasi tugas database memerlukan SSMS (SQL Server Management Studio) untuk menjadwalkan pekerjaan yang menjalankan tugas ini, tetapi dalam artikel ini, pendekatan alternatif digunakan untuk mengotomatisasi tugas database tanpa harus menggunakan SSMS yang sangat dibutuhkan.
Utilitas SQLCMD dapat menjadi penghemat waktu nyata bagi pengembang basis data dan DBA karena mereka dapat segera menjalankan skrip SQL yang diperlukan dari baris perintah, dan mengotomatiskan tugas pemeliharaan basis data dengan utilitas SQLCMD merupakan nilai tambah.
Dasar-dasar Mengotomatisasi Tugas Database SQL
Mari kita membahas beberapa konsep dasar untuk mengotomatisasi tugas pemeliharaan database SQL dengan utilitas SQLCMD.
Apa itu Tugas Pemeliharaan Basis Data?
Tugas pemeliharaan basis data, seperti namanya, adalah tugas yang membantu dalam mengelola atau memelihara basis data untuk memastikan kelancaran operasinya.
Misalnya, membuat cadangan basis data setiap hari adalah tugas pemeliharaan basis data yang memastikan bahwa basis data telah dicadangkan, sehingga jika terjadi insiden, yang akhirnya merusak basis data atau membuatnya tidak stabil, dapat dipulihkan dengan sukses tanpa kehilangan data apa pun.
Siapa yang Melakukan Tugas Pemeliharaan Basis Data?
Biasanya, profesional yang bertanggung jawab atas pemeliharaan sistem basis data, seperti administrator basis data, melakukan tugas pemeliharaan basis data, namun, hal ini dapat berubah dalam keadaan tertentu.
Bagaimana Tugas Pemeliharaan Database dilakukan?
Tugas pemeliharaan basis data biasanya dilakukan secara manual oleh administrator basis data dari waktu ke waktu, atau dapat juga dijadwalkan untuk dijalankan secara otomatis.
Apa Arti Mengotomatisasi Tugas Pemeliharaan Database?
Mengotomatiskan tugas pemeliharaan basis data berarti menjadwalkan tugas pemeliharaan basis data agar berjalan secara otomatis tanpa intervensi manual.
Apa manfaat Mengotomatiskan Tugas Pemeliharaan Database?
Mengotomatiskan tugas pemeliharaan basis data menghemat waktu dan tenaga, membantu menstandardisasi proses dan membuatnya lebih mudah untuk dijalankan secara teratur, dan peringatan tepat waktu yang dikonfigurasi untuk kegagalan pekerjaan otomatis juga dapat mempercepat proses mengidentifikasi penyebab masalah jika tugas gagal.
Bagaimana Anda Mengotomatiskan Tugas Pemeliharaan Database?
Salah satu kegunaan lanjutan dari utilitas SQLCMD adalah otomatisasi tugas pemeliharaan database. Kami akan mengotomatiskan tugas pemeliharaan database tanpa menggunakan SSMS (SQL Server Management Studio) dalam artikel ini.
Penjadwal Tugas Windows
Kami akan memanfaatkan Windows Task Scheduler untuk mengotomatiskan tugas pemeliharaan database yang tidak memerlukan SSMS (SQL Server Management Studio).
Prasyarat
Artikel ini mengasumsikan bahwa Anda memiliki pengetahuan dasar tentang tugas pemeliharaan database yang dilakukan dengan menjalankan pernyataan T-SQL bersama dengan pemahaman dasar tentang utilitas SQLCMD.
Silakan merujuk ke artikel Dasar-dasar Menjalankan Pernyataan T-SQL dari Baris Perintah menggunakan SQLCMD untuk mendapatkan pemahaman yang kuat tentang dasar-dasar SQLCMD, sebelum melanjutkan ke penggunaan lanjutannya.
Silakan juga merujuk ke artikel Menjalankan Tugas Pemeliharaan Basis Data SQL Menggunakan SQLCMD untuk mempelajari cara melakukan tugas pemeliharaan basis data SQL.
Artikel ini juga mengasumsikan bahwa contoh database Universitas telah dibuat.
Silakan periksa artikel lain Dasar-dasar Menjalankan Pernyataan T-SQL dari Baris Perintah menggunakan SQLCMD untuk membuat database sampel atau gunakan kode T-SQL berikut untuk menyiapkan database sampel yang disebut Universitas:
-- (1) Create University sample database CREATE DATABASE University; GO USE University -- (2) Create Course table IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES T WHERE T.TABLE_NAME='Course') DROP TABLE dbo.Course CREATE TABLE [dbo].[Course] ( [CourseId] INT IDENTITY (1, 1) NOT NULL, [Name] VARCHAR (30) NOT NULL, [Detail] VARCHAR (200) NULL, CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED ([CourseId] ASC) ); -- (3) Create Student table IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES T WHERE T.TABLE_NAME='Student') DROP TABLE dbo.Student CREATE TABLE [dbo].[Student] ( [StudentId] INT IDENTITY (1, 1) NOT NULL, [Name] VARCHAR (30) NULL, [Course] VARCHAR (30) NULL, [Marks] INT NULL, [ExamDate] DATETIME2 (7) NULL, CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ([StudentId] ASC) ); -- (4) Populate Course table SET IDENTITY_INSERT [dbo].[Course] ON INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (1, N'DevOps for Databases', N'This is about DevOps for Databases') INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (2, N'Power BI Fundamentals', N'This is about Power BI Fundamentals') INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (3, N'T-SQL Programming', N'About T-SQL Programming') INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (4, N'Tabular Data Modeling', N'This is about Tabular Data Modeling') INSERT INTO [dbo].[Course] ([CourseId], [Name], [Detail]) VALUES (5, N'Analysis Services Fundamentals', N'This is about Analysis Services Fundamentals') SET IDENTITY_INSERT [dbo].[Course] OFF -- (5) Populate Student table SET IDENTITY_INSERT [dbo].[Student] ON INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (1, N'Asif', N'Database Management System', 80, N'2016-01-01 00:00:00') INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (2, N'Peter', N'Database Management System', 85, N'2016-01-01 00:00:00') INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (3, N'Sam', N'Database Management System', 85, N'2016-01-01 00:00:00') INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (4, N'Adil', N'Database Management System', 85, N'2016-01-01 00:00:00') INSERT INTO [dbo].[Student] ([StudentId], [Name], [Course], [Marks], [ExamDate]) VALUES (5, N'Naveed', N'Database Management System', 90, N'2016-01-01 00:00:00') SET IDENTITY_INSERT [dbo].[Student] OFF GO
Mengotomatiskan Tugas Mencadangkan Basis Data Universitas
Mari kita lihat skenario di mana pencadangan basis data perlu diotomatisasi.
Persyaratan:Otomatiskan Pencadangan Database Universitas
DBA diminta untuk mengotomatiskan pencadangan basis data yang menunjukkan tanggal dan waktu pencadangan untuk menghemat waktu dan menghindari kebingungan tentang pencadangan terbaru dan mempercepat keseluruhan proses.
Untuk memenuhi persyaratan bisnis ini, skrip SQLCMD yang membuat cadangan basis data perlu dijalankan di Penjadwal Tugas Windows.
Membuat Folder untuk Backup Database dan Script
Pertama, buat folder bernama Demo di drive C lalu buat subfolder berikut di Demo map:
- Cadangan
- Skrip
Harap diperhatikan bahwa kami menggunakan drive C hanya untuk tujuan demo, harap gunakan drive cadangan dalam skenario waktu nyata.
Membuat Skrip Pencadangan Basis Data SQL
Buat skrip cadangan database SQL dan simpan sebagai 01-Backup-University-sql-script.sql di C:\Demo\Scripts yang juga berisi informasi tentang tanggal dan waktu pencadangan sebagai berikut:
-- Creating University database backup with date and time DECLARE @Backup NVARCHAR(400) SET @Backup=CONCAT('C:\Demo\Backups\University-',(FORMAT(GETDATE(),'yyyy-MM-dd-hh-mm-ss-tt')),'.bak') BACKUP DATABASE [University] TO DISK = @Backup WITH NOFORMAT, NOINIT, NAME = N'University-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
Menyimpan Skrip SQL di Folder Skrip
Simpan skrip cadangan SQL di C:\Demo\Scripts folder.
Membuat Skrip Cadangan SQLCMD
Skrip backup database mengacu pada skrip SQL menggunakan SQLCMD dibuat sebagai berikut:
Sqlcmd –S . –i c:\Demo\Scripts\01-Bakup-University-sql-script.sql
Di mana “.” (dot) adalah contoh SQL tanpa nama default di sini yang dapat diganti dengan contoh SQL bernama seperti .\
Uji Menjalankan Skrip Cadangan SQLCMD
Jalankan skrip SQLCMD di atas dari baris perintah untuk menguji skrip cadangan:
Skrip berjalan dengan sukses, jadi kami siap melakukannya.
Buka Cadangan folder dan hapus cadangan yang dibuat sebagai hasil uji coba.
Membuat file batch untuk referensi Skrip SQLCMD
Buat file batch dengan nama 02-Run-Sqlcmd-Backup-script.bat menggunakan Notepad dan simpan sebagai .bat:
@Echo off sqlcmd -E -S . -i c:\Demo\Scripts\01-Bakup-University-sql-script.sql
Harap diperhatikan bahwa ada sedikit perubahan pada skrip SQLCMD :-E ditambahkan , yang sebenarnya adalah opsi autentikasi default dan tidak perlu ditentukan menurut dokumentasi Microsoft.
Hal ini diilustrasikan sebagai berikut:
Jadwalkan Tugas Pencadangan Basis Data di Penjadwal Tugas Windows
Buka Penjadwal Tugas Windows dengan mengetikkan Penjadwal Tugas di pencarian Windows lalu klik Penjadwal Tugas :
Setelah Penjadwal Tugas Windows dibuka, klik Buat Tugas Dasar… dari opsi di sebelah kanan dan ketik Backup University Database Task di Nama kotak masukan dan klik Berikutnya :
Selanjutnya, atur frekuensi tugas dengan meninggalkan pengaturan default, yaitu harian:
Setel waktu harian saat tugas ini akan diaktifkan (disarankan untuk menyetel waktu dari dua hingga tiga menit ditambah waktu Anda saat ini untuk langsung memeriksa apakah itu berfungsi):
Kita juga perlu memilih Mulai program ketika ditanya apa yang kami inginkan untuk melakukan tugas ini:
Selanjutnya, arahkan ke file batch yang memanggil SQLCMD untuk membuat cadangan database Universitas dan klik Berikutnya :
Klik Selesai untuk menyelesaikan proses.
Ada kemungkinan Anda menghabiskan lebih banyak waktu pada apa yang telah diatur dalam jadwal pekerjaan untuk menyelesaikan penyiapan pekerjaan, yang berarti Anda harus menunggu hari berikutnya untuk melihat apakah tugas tersebut berjalan atau tidak.
Ada solusiб Anda perlu menjadwal ulang tugas lagi 2-3 menit lebih awal dari waktu Anda saat ini untuk melihatnya berjalan dalam 2-3 menit daripada menunggu sepanjang hari:
Sekarang tunggu tugas berjalan secara otomatis dan setelah waktu yang ditentukan, silakan periksa folder cadangan yang kami buat di Demo folder di drive C:
Selamat, tugas pemeliharaan database telah berhasil diotomatisasi menggunakan Penjadwal Tugas Windows, yang memanggil file batch yang menjalankan skrip SQLCMD untuk membuat file cadangan.
Harap hapus tugas otomatis yang dibuat untuk tujuan demo setelah Anda selesai dengan panduannya dan tidak tertarik untuk menjalankannya lebih lanjut.
Hal yang Dapat Dilakukan
Sekarang Anda siap untuk mengotomatisasi tugas pemeliharaan basis data, seperti mencadangkan basis data menggunakan utilitas SQLCMD dan Penjadwal Tugas Windows setelah membaca artikel ini, Anda dapat meningkatkan keterampilan Anda lebih lanjut dengan mencoba hal-hal berikut:
- Cobalah menyiapkan dan mengotomatiskan pencadangan database sampel SQLBookShop disebutkan dalam artikel Menyederhanakan Pengujian Unit Prosedur Tersimpan Utama yang Juga Memanggil Prosedur Utilitas.
- Cobalah untuk membuat beberapa database dan mengotomatiskan backup mereka menggunakan utilitas SQLCMD dengan Windows Task Scheduler.
- Cobalah untuk mengotomatiskan proses pencadangan dan pemulihan basis data dengan membuat dua file batch, satu untuk pencadangan dan yang lainnya untuk memulihkan basis data yang mengacu pada skrip SQLCMD dan menjadwalkan pekerjaan di Penjadwal Tugas Windows untuk dijalankan setiap hari.
Alat yang berguna:
dbForge Studio untuk SQL Server – IDE canggih untuk manajemen, administrasi, pengembangan, pelaporan dan analisis data SQL Server.