আমি কোনও .bak
ফাইলটিতে আমার ডাটাবেসে উপলব্ধ বিশেষ সারণীর একটি ব্যাকআপ নিতে চাই এবং এগুলি সমস্ত একটি টি-এসকিউএল স্ক্রিপ্ট ব্যবহার করে করা উচিত।
আমি কোনও .bak
ফাইলটিতে আমার ডাটাবেসে উপলব্ধ বিশেষ সারণীর একটি ব্যাকআপ নিতে চাই এবং এগুলি সমস্ত একটি টি-এসকিউএল স্ক্রিপ্ট ব্যবহার করে করা উচিত।
উত্তর:
ব্যাকআপ প্রকারগুলি এসকিউএল সার্ভার পুনরুদ্ধার মডেলের উপর নির্ভরশীল। প্রতিটি পুনরুদ্ধার মডেল আপনাকে পুরো বা আংশিক এসকিউএল সার্ভার ডাটাবেস বা পৃথক ফাইল বা ডাটাবেসের ফাইলগ্রুপগুলি ব্যাক আপ করতে দেয়। টেবিল-স্তরের ব্যাকআপ তৈরি করা যায় না, এমন কোনও বিকল্প নেই। তবে এটির জন্য একটি পরিকল্পনা রয়েছে
এসকিউএল সার্ভারে এসকিউএল সার্ভার টেবিলের ব্যাকআপ নেওয়া সম্ভব। এসকিউএল এসকিউএল সার্ভারে একটি টেবিলের ব্যাকআপ দেওয়ার বিভিন্ন বিকল্প উপায় রয়েছে
এখানে আমি কেবল প্রথম এক বিশ্রামটি ব্যাখ্যা করছি যা আপনি হয়ত জানেন
পদ্ধতি 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
আউটপুট
বিঃদ্রঃ -
বিকল্পভাবে , আপনি কমান্ড প্রম্পটের মাধ্যমে বিসিপি চালাতে পারেন এবং কমান্ড প্রম্পটে নিম্নলিখিত কমান্ডটি টাইপ করতে পারেন, উভয়ই একই ক্রিয়াকলাপ সম্পাদন করে তবে কমান্ড প্রম্পট ও টাইপ খোলার ক্ষেত্রে সেভ টাইপ হিসাবে আমি উপরে বর্ণিত পদ্ধতিটি পছন্দ করি।
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
এবং আরও ... টেবিলের n সংখ্যার জন্য
এই বিবৃতিটি newtable1, newtable1, .. বলা টেবিলগুলি তৈরি করবে thus সুতরাং আপনাকে পূর্বে এটি তৈরি করতে হবে না।
দ্রষ্টব্য * এই পদ্ধতিটি ব্যাকআপটি বেশ দ্রুত গ্রহণ করে তবে বড় অসুবিধাটি হ'ল এটি কোনও সারণীর কী, সূচি এবং সীমাবদ্ধতাগুলি বহন করে না এবং ব্যাকআপটি কোনও ফাইলের বাইরেও কোথাও ডাটাবেসের মধ্যে সংরক্ষণ করা হয় না
পদ্ধতি 2:
আপনি যদি কোনও দুর্যোগ পুনরুদ্ধার সমাধান বা ডেটা ক্ষতি প্রতিরোধের জন্য অন্য সার্ভারে টেবিলটি ব্যাকআপ করতে চান তবে আপনি টাস্ক থেকে স্ক্রিপ্টগুলি জেনারেট করুন বিকল্পটি ব্যবহার করে টেবিলটিকে স্ক্রিপ্ট করতে পারেন।
প্রথমে, ডাটাবেসে ডান ক্লিক করুন যাতে আপনি সারণীগুলি ব্যাকআপ করতে চান এবং টাস্কগুলি -> স্ক্রিপ্টগুলি জেনারেট করতে চান
যাদের তালিকাতে টেবিলগুলি ব্যাক আপ করা দরকার সেই তালিকা থেকে আপনি ডাটাবেস নির্বাচন করুন
পরবর্তী স্ক্রিনটি প্রদর্শিত হয় হ'ল স্ক্রিপ্ট বিকল্পগুলি।
আপনি সারণী / দেখার বিকল্পগুলি না পাওয়া পর্যন্ত স্ক্রিপ্ট বিকল্পগুলিতে নীচে স্ক্রোল করুন। আমরা নিম্নলিখিতটি সত্য হতে চাই: সীমাবদ্ধতা, স্ক্রিপ্ট ডেটা, বিদেশী কী, প্রাথমিক কী, ট্রিগার এবং অনন্য কীগুলি পরীক্ষা করুন। (বা আপনার অবশ্যই যা প্রয়োজন তা চয়ন করতে পারেন)। Next সিলেক্ট করুন এবং আমাদের সিলেক্ট অবজেক্ট টাইপ স্ক্রিন নিয়ে হাজির করা হবে
টেবিলগুলি নির্বাচন করুন এবং তারপরে হিট করুন। শেষ অবধি, আপনি যে টেবিল বা সারণীগুলি ব্যাকআপ নিতে চান তা চয়ন করুন এবং তারপরে হিট করুন
পদ্ধতি 3:
আপনি টেবিল ব্যাকআপের জন্যও বিসিপি ইউটিলিটি ব্যবহার করতে পারেন ।
আপনি কোনও .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 এ বিল্ডিং:
টেবিলগুলির ব্যাক আপ অনুলিপি রাখতে পৃথক ডাটাবেস তৈরি করুন। কেএএসকিউএসএলডিএর সরবরাহিত ক্যোয়ারীটি সংশোধন করুন যাতে আপনি আপনার মূল টেবিল থেকে নির্বাচন করেন এবং বিকল্প ডাটাবেসে অনুলিপি করেন।
SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1
--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2
আপনি একটি স্ক্রিপ্ট তৈরি করতে পারেন যা নতুন ডাটাবেসে টেবিলগুলি ফেলে দেয়, তারপরে প্রতিটি প্রয়োজনীয় টেবিলের জন্য কমান্ডগুলিতে নির্বাচন চালান। আপনি যদি সূচী এবং অন্যান্য অবজেক্টগুলিকে উপলভ্য করতে চান তবে আপনার নতুন ডাটাবেসে সেগুলি তৈরি করতে এবং টেবিলগুলি পুনরায় জনসংখ্যার আগে কাটাতে পারবেন। আপনি যদি ছাঁটাই পছন্দ করেন তবে আপনাকে নির্বাচনের জায়গায় inোকানো বিবৃতি ব্যবহার করতে হবে।
এই বিকল্পটি আপনাকে .BAK ফাইল তৈরির জন্য একটি পদ্ধতি সরবরাহ করবে। আপনি নতুন ডাটাবেসে টেবিলগুলি বসানোর পরে আপনি কেবল ব্যাকআপ ডাটাবেস কমান্ডটি চালান।
এসএসএমএসের বাল্ক রফতানি বৈশিষ্ট্যটি ব্যবহার করে এখানে উল্লেখ করা সেরা এবং সহজ পদ্ধতি is
এসকিউএল সার্ভার আমদানি ও রফতানি উইজার্ড: এসকিউএল সার্ভার আমদানি ও রপ্তানি উইজার্ড একটি এসকিউএল সার্ভার ইন্টিগ্রেশন সার্ভিসেস (এসএসআইএস) প্যাকেজের মধ্যে একটি গ্রাফিকাল ইউজার ইন্টারফেস সরবরাহ করে। একবার তৈরি হয়ে গেলে প্যাকেজটি স্বয়ংক্রিয়ভাবে তৈরি করা যায়, সময়সূচীতে চালানো যায়। এটি আরও এসকিউএল সার্ভার ডেটা সরঞ্জাম (এসএসডিটি) ব্যবহার করে কনফিগার এবং সংশোধন করা যেতে পারে
শুরু করতে, আমদানি ও রফতানি উইজার্ডটি খুলুন, একটি ডাটাবেসকে ডান ক্লিক করুন এবং কার্য উপ-মেনু -> রফতানি তথ্য কমান্ডটি নির্বাচন করুন।
অন্য পদ্ধতি হ'ল স্ক্রিপ্ট / স্প্রোক ব্যবহার: ডাম্পডাটাফ্রম টেবিল.এসকিউএল থেকে: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scriptts
EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'
আপনাকে পাস করতে হবে: স্কিমা নাম এবং টেবিলের নাম, তারপরে আউটপুট পাথ যেখানে তৈরি স্ক্রিপ্টটি সংরক্ষণ করা হবে (নোট ফোল্ডারটি অবশ্যই ইতিমধ্যে তৈরি / উপস্থিত থাকতে হবে এবং এসক্রো-তে স্পিকারে মন্তব্য দেখার অনুমতি থাকতে হবে)।
এবং আপনি যদি চান যে আপনি টেবিলের সাথে একটি শর্ত যুক্ত করতে পারেন (ফিল্টারটি অবশ্যই এই মুহূর্তের জন্য এবং এর সাথে শুরু করা উচিত)
এসকিউএল সার্ভার ২০০৮ সালে একটি ডাটাবেস থেকে তার ডেটা সহ একটি টেবিলের ব্যাকআপ নিন:
SELECT * INTO [dbo].[tbl_NewTable]
FROM [dbo].[tbl_OldTable]