मैं एक .bak
फ़ाइल में अपने डेटाबेस में उपलब्ध विशेष तालिकाओं का बैकअप लेना चाहता हूं , और इन सभी को टी-एसक्यूएल स्क्रिप्ट का उपयोग करना चाहिए।
मैं एक .bak
फ़ाइल में अपने डेटाबेस में उपलब्ध विशेष तालिकाओं का बैकअप लेना चाहता हूं , और इन सभी को टी-एसक्यूएल स्क्रिप्ट का उपयोग करना चाहिए।
जवाबों:
बैकअप प्रकार SQL सर्वर रिकवरी मॉडल पर निर्भर हैं। प्रत्येक पुनर्प्राप्ति मॉडल आपको संपूर्ण या आंशिक SQL सर्वर डेटाबेस या व्यक्तिगत फ़ाइलों या डेटाबेस के फ़ाइल समूह को वापस करने देता है। तालिका-स्तरीय बैकअप नहीं बनाया जा सकता है, ऐसा कोई विकल्प नहीं है। लेकिन इसके लिए वर्कअराउंड है
SQL सर्वर तालिका में SQL सर्वर तालिका का बैकअप लेना संभव है। Sql SQL Server में एक टेबल बैकअप के लिए विभिन्न वैकल्पिक तरीके हैं
यहाँ मैं केवल पहला एक विश्राम बता रहा हूँ जो आप जान रहे होंगे
विधि 1 - BCP (बल्क कॉपी प्रोग्रम) का उपयोग कर बैकअप एसक्यूएल टेबल
SQL Server AdventureWorks में रहने वाले "Person.Contact" नामक एक SQL टेबल का बैकअप लेने के लिए, हमें उस स्क्रिप्ट के साथ निष्पादित करने की आवश्यकता है, जो
-- SQL Table Backup
-- Developed by DBATAG, www.DBATAG.com
DECLARE @table VARCHAR(128),
@file VARCHAR(255),
@cmd VARCHAR(512)
SET @table = 'AdventureWorks.Person.Contact' -- Table Name which you want to backup
SET @file = 'C:\MSSQL\Backup\' + @table + '_' + CONVERT(CHAR(8), GETDATE(), 112) -- Replace C:\MSSQL\Backup\ to destination dir where you want to place table data backup
+ '.dat'
SET @cmd = 'bcp ' + @table + ' out ' + @file + ' -n -T '
EXEC master..xp_cmdshell @cmd
आउटपुट
ध्यान दें -
वैकल्पिक रूप से , आप कमांड प्रॉम्प्ट के माध्यम से बीसीपी चला सकते हैं और कमांड प्रॉम्प्ट में निम्न कमांड टाइप कर सकते हैं, दोनों ऑपरेशन एक ही गतिविधि करते हैं, लेकिन मुझे उपर्युक्त विधि पसंद है क्योंकि कमांड प्रॉम्प्ट खोलने में टाइप सेव है और टाइप करें।
bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T
विधि 1:
यदि आप केवल तालिकाओं के डेटा से संबंधित हैं और उसी डेटाबेस और सर्वर के भीतर स्थानीय रूप से उपयोग किया जाना है, तो आप चयनित तालिकाओं का बैकअप लेने के लिए क्वेरी के नीचे उपयोग कर सकते हैं:
SELECT * INTO newtable1
FROM originalTable1
--- तालिका 2 के लिए
SELECT * INTO newtable2
FROM originalTable2
और इतने पर ... टेबल की एन संख्या के लिए
यह कथन newtable1, newtable1 नामक तालिकाओं का निर्माण करेगा, इस प्रकार आपको पहले इसे बनाने की आवश्यकता नहीं है।
नोट * यह विधि बैकअप को काफी तेजी से लेती है लेकिन बड़ा नुकसान यह होगा कि यह तालिका की कुंजी, अनुक्रमित और बाधाओं को नहीं ले जाता है और बैकअप को डेटाबेस में किसी फ़ाइल में बाह्य रूप से संग्रहीत नहीं किया जाता है
विधि 2:
यदि आप किसी भी आपदा वसूली समाधान या डेटा हानि की रोकथाम के लिए अन्य सर्वर पर टेबल बैकअप करना चाहते हैं, तो आप टास्क से जेनरेट स्क्रिप्स विकल्प का उपयोग करके तालिका को स्क्रिप्ट कर सकते हैं।
सबसे पहले, उस डेटाबेस पर राइट क्लिक करें, जिसमें आपके द्वारा बैकअप लिए जाने वाले टेबल हैं और कार्य चुनें -> लिपियों का सृजन करें
उस सूची से डेटाबेस का चयन करें जिसका तालिकाओं को बैकअप करने की आवश्यकता है
दिखाई देने वाली अगली स्क्रीन स्क्रिप्ट विकल्प है।
तालिका / दृश्य विकल्प देखने तक स्क्रिप्ट विकल्पों पर नीचे स्क्रॉल करें। हम चाहते हैं कि निम्नलिखित सही हों: चेक बाधाओं, स्क्रिप्ट डेटा, विदेशी कुंजी, प्राथमिक कुंजी, ट्रिगर, और अद्वितीय कुंजी। (या आप जो कुछ भी कोर्स की जरूरत है उसे चुन सकते हैं)। अगला चुनें और हमें ऑब्जेक्ट प्रकार स्क्रीन चुनें
तालिकाओं का चयन करें और अगला हिट करें। अंत में, उस तालिका या तालिकाओं का चयन करें जिसे आप बैकअप करना चाहते हैं और अगला हिट करें
विधि 3:
आप टेबल बैकअप के लिए भी bcp उपयोगिता का उपयोग कर सकते हैं ।
आप किसी .bak
फ़ाइल में विशिष्ट तालिकाओं का बैकअप नहीं ले सकते , आप उन्हें csv पर निर्यात कर सकते हैं या उन्हें स्क्रिप्ट कर सकते हैं या bcp
उन्हें फ़ाइल में डालने के लिए उपयोग कर सकते हैं।
यदि आप विशिष्ट तालिकाओं का बैक अप लेना चाहते हैं तो आप क्या कर सकते हैं (और वे हमेशा समान हैं) उन्हें एक अलग file group
और उस फ़ाइल समूह में वापस ले जाना है।
प्रलेखन के लिए फ़ाइलें और फ़ाइल समूह वापस देखें ।
उदाहरण के लिए यदि आप टी-एसक्यूएल का उपयोग करके विशिष्ट फाइल या फाइलग्रुप का बैकअप लेना चाहते हैं तो आप (लिंक से) उपयोग कर सकते हैं
--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
FILEGROUP = 'SalesGroup1',
FILEGROUP = 'SalesGroup2'
TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck';
GO
तथा
--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
FILE = 'SGrp1Fi2',
FILE = 'SGrp2Fi2'
TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck';
GO
KASQLDBA की प्रतिक्रिया से विधि 1 पर निर्माण:
तालिकाओं की समर्थित प्रतिलिपि रखने के लिए एक अलग डेटाबेस बनाएँ। KASQLDBA की प्रदान की गई क्वेरी को संशोधित करें ताकि आप अपनी मूल तालिका से चयन करें और वैकल्पिक डेटाबेस में कॉपी करें।
SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1
--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2
आप एक स्क्रिप्ट बना सकते हैं जो नए डेटाबेस में तालिकाओं को गिराती है, फिर प्रत्येक आवश्यक तालिका के लिए कमांड को चुनें। यदि आप अनुक्रमित और अन्य वस्तुओं को उपलब्ध होने की इच्छा रखते हैं, तो आप अपने नए डेटाबेस पर निर्माण कर सकते हैं और उन्हें फिर से आबाद करने से पहले तालिकाओं को काट सकते हैं। यदि आप छंटनी पसंद करते हैं, तो आपको चयन करने के स्थान पर सम्मिलित कथन का उपयोग करना होगा।
यह विकल्प आपको .BAK फ़ाइल बनाने के लिए एक विधि प्रदान करेगा। नए डेटाबेस में तालिकाओं को पॉप्युलेट करने के बाद आप बस एक बैकअप डेटाबेस कमांड चलाते हैं।
SSMS के बल्क एक्सपोर्ट फीचर का उपयोग करते हुए, यहां सबसे अच्छी और आसान विधि बताई गई है
SQL सर्वर आयात और निर्यात विज़ार्ड: SQL सर्वर आयात और निर्यात विज़ार्ड SQL सर्वर एकीकरण सेवा (SSIS) पैकेज पर एक ग्राफिकल यूजर इंटरफेस प्रदान करता है। एक बार तैयार किए गए पैकेज को एक शेड्यूल पर चलाने के लिए, स्वचालित किया जा सकता है। SQL सर्वर डेटा टूल्स (SSDT) का उपयोग करके इसे और कॉन्फ़िगर और संशोधित किया जा सकता है
आरंभ करने के लिए, आयात और निर्यात विज़ार्ड खोलें, एक डेटाबेस पर राइट-क्लिक करें और कार्य उप-मेनू -> डेटा आदेश निर्यात करें चुनें।
एक अन्य तरीका स्क्रिप्ट / स्पोक का उपयोग करना है: DumpDataFromTable.sql से: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts
EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'
आपको पास करना होगा: स्कीमा नाम और तालिका का नाम, फिर आउटपुट पथ जहां बनाई गई स्क्रिप्ट को सहेजा जाएगा (नोट फ़ोल्डर पहले से ही बनाया जाना चाहिए / मौजूद है और एसक्यूएल को अनुमति दी है कि स्पार्क में टिप्पणी देखें)।
और यदि आप चाहें तो आप टेबल पर एक शर्त जोड़ सकते हैं (फ़िलहाल और इसके लिए शुरू होना चाहिए)
SQL Server 2008 में डेटाबेस से अपने डेटा के साथ एक एकल तालिका का बैकअप लें:
SELECT * INTO [dbo].[tbl_NewTable]
FROM [dbo].[tbl_OldTable]