Database
 sql >> डेटाबेस >  >> RDS >> Database

SQLCMD का उपयोग करके SQL डेटाबेस रखरखाव कार्यों को स्वचालित कैसे करें

यह लेख SQLCMD उपयोगिता के माध्यम से SQL डेटाबेस रखरखाव कार्यों को स्वचालित करने के बारे में है जो आपको SSMS (SQL सर्वर प्रबंधन स्टूडियो) का उपयोग किए बिना सीधे कमांड प्रॉम्प्ट से T-SQL कमांड चलाने देता है।

आमतौर पर, डेटाबेस कार्यों को स्वचालित करने के लिए इन कार्यों को चलाने वाले कार्यों को शेड्यूल करने के लिए SSMS (SQL सर्वर प्रबंधन स्टूडियो) की आवश्यकता होती है, लेकिन इस लेख में, एक वैकल्पिक दृष्टिकोण का उपयोग डेटाबेस कार्यों को स्वचालित करने के लिए किया जाता है, बिना बहुत आवश्यक SSMS का उपयोग किए।

SQLCMD उपयोगिता डेटाबेस डेवलपर्स और DBA के लिए एक वास्तविक समय बचाने वाली हो सकती है क्योंकि वे कमांड लाइन से आवश्यक SQL स्क्रिप्ट को तुरंत चला सकते हैं, और SQLCMD उपयोगिता के साथ डेटाबेस रखरखाव कार्यों को स्वचालित करना एक प्लस है।

SQL डेटाबेस कार्यों को स्वचालित करने की मूल बातें

आइए SQLCMD उपयोगिता के साथ SQL डेटाबेस रखरखाव कार्यों को स्वचालित करने के लिए कुछ बुनियादी अवधारणाओं के माध्यम से चलते हैं।

डेटाबेस रखरखाव कार्य क्या है?

एक डेटाबेस रखरखाव कार्य, जैसा कि नाम से संकेत मिलता है, एक ऐसा कार्य है जो डेटाबेस के सुचारू संचालन को सुनिश्चित करने के लिए प्रबंधन या रखरखाव में सहायता करता है।

उदाहरण के लिए, दैनिक आधार पर डेटाबेस बैकअप बनाना एक डेटाबेस रखरखाव कार्य है जो सुनिश्चित करता है कि डेटाबेस का बैकअप लिया गया है, ताकि किसी भी घटना के मामले में, जो या तो डेटाबेस को दूषित कर देता है या इसे अस्थिर बना देता है, इसे बिना खोए सफलतापूर्वक बहाल किया जा सकता है कोई भी डेटा।

डेटाबेस रखरखाव कार्य कौन करता है?

आमतौर पर, डेटाबेस सिस्टम रखरखाव के लिए ज़िम्मेदार पेशेवर, जैसे डेटाबेस व्यवस्थापक, डेटाबेस रखरखाव कार्य करते हैं, हालाँकि, यह कुछ परिस्थितियों में बदल सकता है।

डेटाबेस रखरखाव कार्य कैसे किया जाता है?

एक डेटाबेस रखरखाव कार्य आमतौर पर समय-समय पर एक डेटाबेस व्यवस्थापक द्वारा मैन्युअल रूप से किया जाता है, या इसे स्वचालित रूप से चलाने के लिए भी शेड्यूल किया जा सकता है।

डेटाबेस रखरखाव कार्य को स्वचालित करने का क्या अर्थ है?

डेटाबेस रखरखाव कार्य को स्वचालित करने का अर्थ है डेटाबेस रखरखाव कार्य को बिना किसी मैन्युअल हस्तक्षेप के स्वचालित रूप से चलाने के लिए शेड्यूल करना।

डेटाबेस रखरखाव कार्यों को स्वचालित करने के क्या लाभ हैं?

डेटाबेस रखरखाव कार्यों को स्वचालित करने से समय और प्रयास की बचत होती है, प्रक्रिया को मानकीकृत करने में मदद मिलती है और इसे नियमित आधार पर निष्पादित करना आसान हो जाता है, और स्वचालित नौकरी विफलता के लिए कॉन्फ़िगर किए गए समय पर अलर्ट भी समस्या के कारण की पहचान करने की प्रक्रिया को तेज कर सकते हैं यदि कार्य विफल रहता है।

आप डेटाबेस रखरखाव कार्य को स्वचालित कैसे कर सकते हैं?

SQLCMD उपयोगिता के उन्नत उपयोगों में से एक डेटाबेस रखरखाव कार्यों का स्वचालन है। हम इस लेख में SSMS (SQL सर्वर प्रबंधन स्टूडियो) का उपयोग किए बिना डेटाबेस रखरखाव कार्यों को स्वचालित करने जा रहे हैं।

Windows कार्य शेड्यूलर

हम डेटाबेस रखरखाव कार्यों को स्वचालित करने के लिए विंडोज टास्क शेड्यूलर का लाभ उठाने जा रहे हैं जिसमें एसएसएमएस (एसक्यूएल सर्वर प्रबंधन स्टूडियो) की आवश्यकता नहीं है।

आवश्यकताएं

यह आलेख मानता है कि आपको SQLCMD उपयोगिता की बुनियादी समझ के साथ T-SQL कथन चलाकर किए गए डेटाबेस रखरखाव कार्यों का बुनियादी ज्ञान है।

कृपया इसके उन्नत उपयोग के लिए आगे बढ़ने से पहले, SQLCMD की बुनियादी बातों की कुछ ठोस समझ प्राप्त करने के लिए SQLCMD का उपयोग करके कमांड लाइन से T-SQL स्टेटमेंट चलाने की मूल बातें देखें।

SQL डेटाबेस रखरखाव कार्यों को करने का तरीका जानने के लिए कृपया SQLCMD का उपयोग करके SQL डेटाबेस रखरखाव कार्य चलाना लेख भी देखें।

यह लेख यह भी मानता है कि एक नमूना विश्वविद्यालय डेटाबेस बनाया गया है।

नमूना डेटाबेस बनाने के लिए SQLCMD का उपयोग करके कमांड लाइन से टी-एसक्यूएल स्टेटमेंट चलाने की मूल बातें कृपया एक और लेख देखें या विश्वविद्यालय: नामक नमूना डेटाबेस सेट करने के लिए निम्न टी-एसक्यूएल कोड का उपयोग करें।

-- (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

विश्वविद्यालय डेटाबेस का बैकअप लेने के कार्य को स्वचालित करना

आइए उस परिदृश्य पर एक नज़र डालें जहां डेटाबेस बैकअप को स्वचालित करने की आवश्यकता है।

आवश्यकता:विश्वविद्यालय डेटाबेस के बैकअप को स्वचालित करें

एक डीबीए को समय बचाने और नवीनतम बैकअप पर भ्रम से बचने और समग्र प्रक्रिया को गति देने के लिए बैकअप की तारीख और समय दिखाते हुए डेटाबेस बैकअप को स्वचालित करने के लिए कहा गया था।

इन व्यावसायिक आवश्यकताओं को पूरा करने के लिए, डेटाबेस बैकअप बनाने वाली SQLCMD स्क्रिप्ट को Windows कार्य शेड्यूलर में चलाने की आवश्यकता होती है।

डेटाबेस बैकअप और स्क्रिप्ट के लिए फ़ोल्डर बनाना

सबसे पहले, डेमो . नाम का फोल्डर बनाएं ड्राइव पर C और फिर डेमो . में निम्न उप-फ़ोल्डर बनाएं फ़ोल्डर:

  1. बैकअप
  2. स्क्रिप्ट

कृपया ध्यान दें कि हम ड्राइव C का उपयोग केवल डेमो उद्देश्यों के लिए करते हैं, कृपया वास्तविक समय परिदृश्य में बैकअप ड्राइव का उपयोग करें।

SQL डेटाबेस बैकअप स्क्रिप्ट बनाना

SQL डेटाबेस बैकअप स्क्रिप्ट बनाएँ और इसे 01-बैकअप-विश्वविद्यालय-sql-script.sql के रूप में सहेजें C:\Demo\Scripts . में जिसमें बैकअप तिथि और समय की जानकारी इस प्रकार है:

-- 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

एसक्यूएल स्क्रिप्ट को स्क्रिप्ट फ़ोल्डर में सहेजा जा रहा है

SQL बैकअप स्क्रिप्ट को C:\Demo\Scripts . में सहेजें फ़ोल्डर।

SQLCMD बैकअप स्क्रिप्ट बनाना

SQLCMD का उपयोग करते हुए SQL स्क्रिप्ट का संदर्भ देने वाली डेटाबेस बैकअप स्क्रिप्ट निम्नानुसार बनाई गई है:

Sqlcmd –S . –i c:\Demo\Scripts\01-Bakup-University-sql-script.sql

कहां "।" (डॉट) यहां डिफ़ॉल्ट अनाम SQL इंस्टेंस है जिसे किसी नामित SQL इंस्टेंस जैसे .\ से बदला जा सकता है।

SQLCMD बैकअप स्क्रिप्ट चलाने का परीक्षण करें

बैकअप स्क्रिप्ट का परीक्षण करने के लिए उपरोक्त SQLCMD स्क्रिप्ट को कमांड लाइन से चलाएँ:

स्क्रिप्ट सफलतापूर्वक चली, इसलिए हम जाने के लिए तैयार हैं।

बैकअप . पर जाएं फ़ोल्डर और बैकअप को हटा दें जो परीक्षण चलाने के परिणामस्वरूप बनाया गया है।

SQLCMD स्क्रिप्ट को संदर्भित करने के लिए एक बैच फ़ाइल बनाना

02-Run-Sqlcmd-Backup-script.bat नाम से एक बैच फ़ाइल बनाएं नोटपैड का उपयोग करके इसे .bat के रूप में सहेजें:

@Echo off
sqlcmd -E -S . -i c:\Demo\Scripts\01-Bakup-University-sql-script.sql

कृपया ध्यान दें कि SQLCMD स्क्रिप्ट में थोड़ा बदलाव है :-E जोड़ा जाता है , जो वास्तव में . है डिफ़ॉल्ट प्रमाणीकरण विकल्प और Microsoft दस्तावेज़ के अनुसार निर्दिष्ट करने की आवश्यकता नहीं है।

इसे इस प्रकार दर्शाया गया है:

विंडोज टास्क शेड्यूलर में डेटाबेस बैकअप टास्क शेड्यूल करें

विंडोज सर्च में टास्क शेड्यूलर टाइप करके विंडोज टास्क शेड्यूलर खोलें और फिर टास्क शेड्यूलर पर क्लिक करें। :

Windows कार्य शेड्यूलर खुलने के बाद, मूल कार्य बनाएं… click क्लिक करें दाईं ओर के विकल्पों में से बैकअप यूनिवर्सिटी डेटाबेस टास्क . टाइप करें नाम . में इनपुट बॉक्स और अगला click क्लिक करें :

अगला, डिफ़ॉल्ट सेटिंग्स को छोड़कर कार्य की आवृत्ति सेट करें, जो कि दैनिक है:

दैनिक समय निर्धारित करें जिस पर यह कार्य सक्रिय किया जाएगा (यह दो से तीन मिनट का समय निर्धारित करने की अनुशंसा की जाती है और आपका वर्तमान समय तुरंत जांचने के लिए कि यह काम कर रहा है):

हमें कार्यक्रम प्रारंभ करें . का भी चयन करना होगा यह पूछे जाने पर कि हम इस कार्य को क्या करना चाहते हैं:

इसके बाद, बैच फ़ाइल को इंगित करें जो विश्वविद्यालय डेटाबेस का बैकअप बनाने के लिए SQLCMD को कॉल करती है और अगला पर क्लिक करें। :

समाप्त करें क्लिक करें प्रक्रिया को पूरा करने के लिए।

यह संभव है कि आपने कार्य सेटअप को पूरा करने के लिए कार्य शेड्यूल में जो सेट किया गया था उस पर अधिक समय बिताया, जिसका अर्थ है कि आपको यह देखने के लिए अगले दिन का इंतजार करना होगा कि कार्य चल रहा है या नहीं।

एक समाधान हैб आपको कार्य को अपने वर्तमान समय से 2-3 मिनट पहले फिर से शेड्यूल करना होगा ताकि यह पूरे दिन की प्रतीक्षा करने के बजाय 2-3 मिनट में चल सके:

अब कार्य के स्वचालित रूप से चलने की प्रतीक्षा करें और निर्दिष्ट समय के बाद, कृपया हमारे द्वारा डेमो में बनाए गए बैकअप फ़ोल्डर की जांच करें। ड्राइव C पर फ़ोल्डर:

बधाई हो, विंडोज टास्क शेड्यूलर का उपयोग करके डेटाबेस रखरखाव कार्य को सफलतापूर्वक स्वचालित कर दिया गया है, जो एक बैच फ़ाइल को कॉल करता है जो बैकअप फ़ाइल बनाने के लिए SQLCMD स्क्रिप्ट चलाती है।

कृपया उस स्वचालित कार्य को हटा दें जो एक बार वॉकथ्रू के साथ प्रदर्शन करने के बाद डेमो उद्देश्यों के लिए बनाया गया था और इसे आगे चलाने में कोई दिलचस्पी नहीं है।

करने के लिए चीज़ें

अब जब आप डेटाबेस रखरखाव कार्यों को स्वचालित करने के लिए तैयार हैं, जैसे कि SQLCMD उपयोगिता और विंडोज टास्क शेड्यूलर का उपयोग करके डेटाबेस का बैकअप लेना, तो आप निम्नलिखित चीजों को आजमाकर अपने कौशल में और सुधार कर सकते हैं:

  1. कृपया एक नमूना डेटाबेस के बैकअप को सेट करने और स्वचालित करने का प्रयास करें SQLBookShop लेख में वर्णित इकाई परीक्षण को सरल बनाना मुख्य संग्रहित प्रक्रिया जिसे उपयोगिता प्रक्रिया भी कहा जाता है।
  2. कृपया विंडोज टास्क शेड्यूलर के साथ SQLCMD उपयोगिता का उपयोग करके कई डेटाबेस बनाने और उनके बैकअप को स्वचालित करने का प्रयास करें।
  3. कृपया दो बैच फ़ाइलें बनाकर बैकअप को स्वचालित करने और डेटाबेस प्रक्रियाओं को पुनर्स्थापित करने का प्रयास करें, एक बैकअप के लिए और दूसरा SQLCMD स्क्रिप्ट का संदर्भ देने वाले डेटाबेस को पुनर्स्थापित करने के लिए और रोज़ाना चलाने के लिए Windows कार्य शेड्यूलर में कार्य को शेड्यूल करने के लिए।

उपयोगी टूल:

SQL सर्वर के लिए dbForge Studio - SQL सर्वर प्रबंधन, प्रशासन, विकास, डेटा रिपोर्टिंग और विश्लेषण के लिए शक्तिशाली IDE।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक सूची में सभी आइटम से मेल खाने वाली पंक्तियों का चयन करने के 2 तरीके (टी-एसक्यूएल)

  2. समस्या निवारण हमेशा चालू - कभी-कभी इसमें कई तरह की आंखें होती हैं

  3. SQL में एक रो को कैसे डिलीट करें

  4. क्रिसमस उपहार वितरित करना:सांता का डेटा मॉडल

  5. T-SQL का उपयोग करके अस्थायी तालिकाओं को सूचीबद्ध करने के 5 तरीके