আমি কীভাবে এসকিউএল সার্ভার ২০০৮-এ টি-এসকিউএল স্ক্রিপ্ট ব্যবহার করে নির্দিষ্ট সারণীর ব্যাকআপ নিতে পারি


14

আমি কোনও .bakফাইলটিতে আমার ডাটাবেসে উপলব্ধ বিশেষ সারণীর একটি ব্যাকআপ নিতে চাই এবং এগুলি সমস্ত একটি টি-এসকিউএল স্ক্রিপ্ট ব্যবহার করে করা উচিত।

উত্তর:


11

ব্যাকআপ প্রকারগুলি এসকিউএল সার্ভার পুনরুদ্ধার মডেলের উপর নির্ভরশীল। প্রতিটি পুনরুদ্ধার মডেল আপনাকে পুরো বা আংশিক এসকিউএল সার্ভার ডাটাবেস বা পৃথক ফাইল বা ডাটাবেসের ফাইলগ্রুপগুলি ব্যাক আপ করতে দেয়। টেবিল-স্তরের ব্যাকআপ তৈরি করা যায় না, এমন কোনও বিকল্প নেই। তবে এটির জন্য একটি পরিকল্পনা রয়েছে

এসকিউএল সার্ভারে এসকিউএল সার্ভার টেবিলের ব্যাকআপ নেওয়া সম্ভব। এসকিউএল এসকিউএল সার্ভারে একটি টেবিলের ব্যাকআপ দেওয়ার বিভিন্ন বিকল্প উপায় রয়েছে

  1. বিসিপি (বালক কপি প্রোগ্রাম)
  2. ডেটা সহ সারণী স্ক্রিপ্ট তৈরি করুন
  3. নির্বাচন করুন নির্বাচন করে টেবিলের একটি অনুলিপি তৈরি করুন
  4. ফ্ল্যাট ফাইলে সরাসরি টেবিলের ডেটা সংরক্ষণ করুন
  5. যে কোনও গন্তব্যে এসএসআইএস ব্যবহার করে ডেটা রফতানি করুন

এখানে আমি কেবল প্রথম এক বিশ্রামটি ব্যাখ্যা করছি যা আপনি হয়ত জানেন

পদ্ধতি 1 - বিসিপি ব্যবহার করে ব্যাকআপ স্কুয়েল টেবিল (বালক কপি প্রোগ্রাম)

এসকিউএল সার্ভার অ্যাডভেঞ্চার ওয়ার্কসে থাকা "পার্সন.কন্ট্যাক্ট" নামে একটি এসকিউএল টেবিলের ব্যাকআপ নিতে আমাদের নিম্নলিখিত স্ক্রিপ্টটি প্রয়োগ করতে হবে, যা

-- 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. উপরে স্ক্রিপ্ট -n স্থানীয় এসকিউএল ডেটা প্রকারগুলি বোঝায়, যা পুনরুদ্ধারের সময় কী
  3. -T বোঝায় যে আপনি এসকিউএল সার্ভারের সাথে উইন্ডোজ প্রমাণীকরণ ব্যবহার করে সংযোগ করছেন, আপনি যদি এসকিউএল সার্ভার প্রমাণীকরণ ব্যবহার করে সংযোগ করতে চান - ইউ-পি
  4. এটি আপনাকে বলবে, আপনি ডেটা ট্রান্সফারে গতি দিন, আমার ক্ষেত্রে এটি সেকেন্ডে 212468.08 সারি ছিল।
  5. এই কমান্ডটি শেষ হয়ে গেলে এটি "অ্যাডভেঞ্চার ওয়ার্কস পার্সন। কনট্যাক্ট_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

এবং আরও ... টেবিলের n সংখ্যার জন্য

এই বিবৃতিটি newtable1, newtable1, .. বলা টেবিলগুলি তৈরি করবে thus সুতরাং আপনাকে পূর্বে এটি তৈরি করতে হবে না।

দ্রষ্টব্য * এই পদ্ধতিটি ব্যাকআপটি বেশ দ্রুত গ্রহণ করে তবে বড় অসুবিধাটি হ'ল এটি কোনও সারণীর কী, সূচি এবং সীমাবদ্ধতাগুলি বহন করে না এবং ব্যাকআপটি কোনও ফাইলের বাইরেও কোথাও ডাটাবেসের মধ্যে সংরক্ষণ করা হয় না

পদ্ধতি 2:

আপনি যদি কোনও দুর্যোগ পুনরুদ্ধার সমাধান বা ডেটা ক্ষতি প্রতিরোধের জন্য অন্য সার্ভারে টেবিলটি ব্যাকআপ করতে চান তবে আপনি টাস্ক থেকে স্ক্রিপ্টগুলি জেনারেট করুন বিকল্পটি ব্যবহার করে টেবিলটিকে স্ক্রিপ্ট করতে পারেন।

  1. প্রথমে, ডাটাবেসে ডান ক্লিক করুন যাতে আপনি সারণীগুলি ব্যাকআপ করতে চান এবং টাস্কগুলি -> স্ক্রিপ্টগুলি জেনারেট করতে চান

  2. যাদের তালিকাতে টেবিলগুলি ব্যাক আপ করা দরকার সেই তালিকা থেকে আপনি ডাটাবেস নির্বাচন করুন

  3. পরবর্তী স্ক্রিনটি প্রদর্শিত হয় হ'ল স্ক্রিপ্ট বিকল্পগুলি।

  4. আপনি সারণী / দেখার বিকল্পগুলি না পাওয়া পর্যন্ত স্ক্রিপ্ট বিকল্পগুলিতে নীচে স্ক্রোল করুন। আমরা নিম্নলিখিতটি সত্য হতে চাই: সীমাবদ্ধতা, স্ক্রিপ্ট ডেটা, বিদেশী কী, প্রাথমিক কী, ট্রিগার এবং অনন্য কীগুলি পরীক্ষা করুন। (বা আপনার অবশ্যই যা প্রয়োজন তা চয়ন করতে পারেন)। Next সিলেক্ট করুন এবং আমাদের সিলেক্ট অবজেক্ট টাইপ স্ক্রিন নিয়ে হাজির করা হবে

  5. টেবিলগুলি নির্বাচন করুন এবং তারপরে হিট করুন। শেষ অবধি, আপনি যে টেবিল বা সারণীগুলি ব্যাকআপ নিতে চান তা চয়ন করুন এবং তারপরে হিট করুন

পদ্ধতি 3:

আপনি টেবিল ব্যাকআপের জন্যও বিসিপি ইউটিলিটি ব্যবহার করতে পারেন ।


1

আপনি কোনও .bakফাইলে নির্দিষ্ট সারণীগুলি ব্যাকআপ করতে পারবেন না , আপনি সেগুলি সিএসভিতে রফতানি করতে পারেন বা এগুলি স্ক্রিপ্ট আউট করতে পারেন বা 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

কেএএসকিউএলডিবিএর প্রতিক্রিয়া থেকে পদ্ধতি 1 এ বিল্ডিং:

টেবিলগুলির ব্যাক আপ অনুলিপি রাখতে পৃথক ডাটাবেস তৈরি করুন। কেএএসকিউএসএলডিএর সরবরাহিত ক্যোয়ারীটি সংশোধন করুন যাতে আপনি আপনার মূল টেবিল থেকে নির্বাচন করেন এবং বিকল্প ডাটাবেসে অনুলিপি করেন।

SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1

--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2

আপনি একটি স্ক্রিপ্ট তৈরি করতে পারেন যা নতুন ডাটাবেসে টেবিলগুলি ফেলে দেয়, তারপরে প্রতিটি প্রয়োজনীয় টেবিলের জন্য কমান্ডগুলিতে নির্বাচন চালান। আপনি যদি সূচী এবং অন্যান্য অবজেক্টগুলিকে উপলভ্য করতে চান তবে আপনার নতুন ডাটাবেসে সেগুলি তৈরি করতে এবং টেবিলগুলি পুনরায় জনসংখ্যার আগে কাটাতে পারবেন। আপনি যদি ছাঁটাই পছন্দ করেন তবে আপনাকে নির্বাচনের জায়গায় inোকানো বিবৃতি ব্যবহার করতে হবে।

এই বিকল্পটি আপনাকে .BAK ফাইল তৈরির জন্য একটি পদ্ধতি সরবরাহ করবে। আপনি নতুন ডাটাবেসে টেবিলগুলি বসানোর পরে আপনি কেবল ব্যাকআপ ডাটাবেস কমান্ডটি চালান।


1

এসএসএমএসের বাল্ক রফতানি বৈশিষ্ট্যটি ব্যবহার করে এখানে উল্লেখ করা সেরা এবং সহজ পদ্ধতি is

এসকিউএল সার্ভার আমদানি ও রফতানি উইজার্ড: এসকিউএল সার্ভার আমদানি ও রপ্তানি উইজার্ড একটি এসকিউএল সার্ভার ইন্টিগ্রেশন সার্ভিসেস (এসএসআইএস) প্যাকেজের মধ্যে একটি গ্রাফিকাল ইউজার ইন্টারফেস সরবরাহ করে। একবার তৈরি হয়ে গেলে প্যাকেজটি স্বয়ংক্রিয়ভাবে তৈরি করা যায়, সময়সূচীতে চালানো যায়। এটি আরও এসকিউএল সার্ভার ডেটা সরঞ্জাম (এসএসডিটি) ব্যবহার করে কনফিগার এবং সংশোধন করা যেতে পারে

শুরু করতে, আমদানি ও রফতানি উইজার্ডটি খুলুন, একটি ডাটাবেসকে ডান ক্লিক করুন এবং কার্য উপ-মেনু -> রফতানি তথ্য কমান্ডটি নির্বাচন করুন।

এখানে চিত্র বর্ণনা লিখুন


যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত পৃষ্ঠাগুলি পরিবর্তিত হলে লিঙ্ক-শুধুমাত্র উত্তরগুলি অবৈধ হতে পারে। - পর্যালোচনা থেকে
কেভিনস্কি

নিবন্ধন করুন তবে কমপক্ষে আপনার এটি করা উচিত ছিল!
সাইয়েদ দাউদ

-1

অন্য পদ্ধতি হ'ল স্ক্রিপ্ট / স্প্রোক ব্যবহার: ডাম্পডাটাফ্রম টেবিল.এসকিউএল থেকে: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scriptts

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

আপনাকে পাস করতে হবে: স্কিমা নাম এবং টেবিলের নাম, তারপরে আউটপুট পাথ যেখানে তৈরি স্ক্রিপ্টটি সংরক্ষণ করা হবে (নোট ফোল্ডারটি অবশ্যই ইতিমধ্যে তৈরি / উপস্থিত থাকতে হবে এবং এসক্রো-তে স্পিকারে মন্তব্য দেখার অনুমতি থাকতে হবে)।

এবং আপনি যদি চান যে আপনি টেবিলের সাথে একটি শর্ত যুক্ত করতে পারেন (ফিল্টারটি অবশ্যই এই মুহূর্তের জন্য এবং এর সাথে শুরু করা উচিত)


এই পদ্ধতিটি একটি অনুপস্থিত পদ্ধতির উপর নির্ভর করে PRC_WritereadFile
সাবকিউরিচান্ট

-2

এসকিউএল সার্ভার ২০০৮ সালে একটি ডাটাবেস থেকে তার ডেটা সহ একটি টেবিলের ব্যাকআপ নিন:

SELECT * INTO  [dbo].[tbl_NewTable] 
FROM [dbo].[tbl_OldTable]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.