मैं T-SQL स्क्रिप्ट का उपयोग करके SQL Server 2008 में विशेष तालिकाओं का बैकअप कैसे ले सकता हूं


14

मैं एक .bakफ़ाइल में अपने डेटाबेस में उपलब्ध विशेष तालिकाओं का बैकअप लेना चाहता हूं , और इन सभी को टी-एसक्यूएल स्क्रिप्ट का उपयोग करना चाहिए।

जवाबों:


11

बैकअप प्रकार SQL सर्वर रिकवरी मॉडल पर निर्भर हैं। प्रत्येक पुनर्प्राप्ति मॉडल आपको संपूर्ण या आंशिक SQL सर्वर डेटाबेस या व्यक्तिगत फ़ाइलों या डेटाबेस के फ़ाइल समूह को वापस करने देता है। तालिका-स्तरीय बैकअप नहीं बनाया जा सकता है, ऐसा कोई विकल्प नहीं है। लेकिन इसके लिए वर्कअराउंड है

SQL सर्वर तालिका में SQL सर्वर तालिका का बैकअप लेना संभव है। Sql SQL Server में एक टेबल बैकअप के लिए विभिन्न वैकल्पिक तरीके हैं

  1. BCP (बल्क कॉपी प्रोग्रम)
  2. डेटा के साथ तालिका स्क्रिप्ट जनरेट करें
  3. SELECT INTO का उपयोग करके तालिका की एक प्रतिलिपि बनाएँ
  4. एक फ्लैट फ़ाइल में सीधे टेबल डेटा सहेजें
  5. किसी भी गंतव्य के लिए SSIS का उपयोग कर डेटा निर्यात करें

यहाँ मैं केवल पहला एक विश्राम बता रहा हूँ जो आप जान रहे होंगे

विधि 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

आउटपुट

यहाँ छवि विवरण दर्ज करें

ध्यान दें -

  1. आपके पास थोक आयात / निर्यात विशेषाधिकार होना चाहिए
  2. ऊपर स्क्रिप्ट में एक देशी SQL डेटा प्रकारों को निरूपित करता है, जो पुनर्स्थापना के दौरान महत्वपूर्ण है
  3. यदि आप SQL सर्वर प्रमाणीकरण का उपयोग कर कनेक्ट करना चाहते हैं तो -T यह दर्शाता है कि आप Windows प्रमाणीकरण का उपयोग करते हुए SQL सर्वर से कनेक्ट कर रहे हैं।
  4. यह भी बताएगा, आपने डेटा ट्रांसफर की गति बढ़ाई है, मेरे मामले में यह प्रति सेकंड 212468.08 पंक्तियाँ थी।
  5. एक बार जब यह कमांड पूरी हो जाती है, तो यह एक फाइल बनाएगा जिसका नाम "AdventureWorks.Person.Contact_20120222" एक निर्दिष्ट गंतव्य फ़ोल्डर है

वैकल्पिक रूप से , आप कमांड प्रॉम्प्ट के माध्यम से बीसीपी चला सकते हैं और कमांड प्रॉम्प्ट में निम्न कमांड टाइप कर सकते हैं, दोनों ऑपरेशन एक ही गतिविधि करते हैं, लेकिन मुझे उपर्युक्त विधि पसंद है क्योंकि कमांड प्रॉम्प्ट खोलने में टाइप सेव है और टाइप करें।

bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T

यहाँ छवि विवरण दर्ज करें


9

विधि 1:

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

SELECT * INTO newtable1
FROM originalTable1

--- तालिका 2 के लिए

SELECT * INTO newtable2
FROM originalTable2

और इतने पर ... टेबल की एन संख्या के लिए

यह कथन newtable1, newtable1 नामक तालिकाओं का निर्माण करेगा, इस प्रकार आपको पहले इसे बनाने की आवश्यकता नहीं है।

नोट * यह विधि बैकअप को काफी तेजी से लेती है लेकिन बड़ा नुकसान यह होगा कि यह तालिका की कुंजी, अनुक्रमित और बाधाओं को नहीं ले जाता है और बैकअप को डेटाबेस में किसी फ़ाइल में बाह्य रूप से संग्रहीत नहीं किया जाता है

विधि 2:

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

  1. सबसे पहले, उस डेटाबेस पर राइट क्लिक करें, जिसमें आपके द्वारा बैकअप लिए जाने वाले टेबल हैं और कार्य चुनें -> लिपियों का सृजन करें

  2. उस सूची से डेटाबेस का चयन करें जिसका तालिकाओं को बैकअप करने की आवश्यकता है

  3. दिखाई देने वाली अगली स्क्रीन स्क्रिप्ट विकल्प है।

  4. तालिका / दृश्य विकल्प देखने तक स्क्रिप्ट विकल्पों पर नीचे स्क्रॉल करें। हम चाहते हैं कि निम्नलिखित सही हों: चेक बाधाओं, स्क्रिप्ट डेटा, विदेशी कुंजी, प्राथमिक कुंजी, ट्रिगर, और अद्वितीय कुंजी। (या आप जो कुछ भी कोर्स की जरूरत है उसे चुन सकते हैं)। अगला चुनें और हमें ऑब्जेक्ट प्रकार स्क्रीन चुनें

  5. तालिकाओं का चयन करें और अगला हिट करें। अंत में, उस तालिका या तालिकाओं का चयन करें जिसे आप बैकअप करना चाहते हैं और अगला हिट करें

विधि 3:

आप टेबल बैकअप के लिए भी bcp उपयोगिता का उपयोग कर सकते हैं ।


1

आप किसी .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

1
दुर्भाग्य से, आपको एक साथ सभी रीड / राइट फ़ाइलग्रुप का बैकअप लेना होगा, ताकि आप केवल एक का चयन न कर सकें।
कामिल गोसिमिन्स्की

1

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 फ़ाइल बनाने के लिए एक विधि प्रदान करेगा। नए डेटाबेस में तालिकाओं को पॉप्युलेट करने के बाद आप बस एक बैकअप डेटाबेस कमांड चलाते हैं।


1

SSMS के बल्क एक्सपोर्ट फीचर का उपयोग करते हुए, यहां सबसे अच्छी और आसान विधि बताई गई है

SQL सर्वर आयात और निर्यात विज़ार्ड: SQL सर्वर आयात और निर्यात विज़ार्ड SQL सर्वर एकीकरण सेवा (SSIS) पैकेज पर एक ग्राफिकल यूजर इंटरफेस प्रदान करता है। एक बार तैयार किए गए पैकेज को एक शेड्यूल पर चलाने के लिए, स्वचालित किया जा सकता है। SQL सर्वर डेटा टूल्स (SSDT) ​​का उपयोग करके इसे और कॉन्फ़िगर और संशोधित किया जा सकता है

आरंभ करने के लिए, आयात और निर्यात विज़ार्ड खोलें, एक डेटाबेस पर राइट-क्लिक करें और कार्य उप-मेनू -> डेटा आदेश निर्यात करें चुनें।

यहाँ छवि विवरण दर्ज करें


हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक हिस्सों को यहां शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं। - समीक्षा से
kevinsky

@kevinsky ज़रूर! लेकिन कम से कम आपको इसे वोट देना चाहिए था!
सैय्यद दाऊद

-1

एक अन्य तरीका स्क्रिप्ट / स्पोक का उपयोग करना है: DumpDataFromTable.sql से: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts

 EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'

आपको पास करना होगा: स्कीमा नाम और तालिका का नाम, फिर आउटपुट पथ जहां बनाई गई स्क्रिप्ट को सहेजा जाएगा (नोट फ़ोल्डर पहले से ही बनाया जाना चाहिए / मौजूद है और एसक्यूएल को अनुमति दी है कि स्पार्क में टिप्पणी देखें)।

और यदि आप चाहें तो आप टेबल पर एक शर्त जोड़ सकते हैं (फ़िलहाल और इसके लिए शुरू होना चाहिए)


यह प्रक्रिया एक लापता प्रक्रिया पर निर्भर करती है PRC_WritereadFile
SubqueryCrunch

-2

SQL Server 2008 में डेटाबेस से अपने डेटा के साथ एक एकल तालिका का बैकअप लें:

SELECT * INTO  [dbo].[tbl_NewTable] 
FROM [dbo].[tbl_OldTable]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.