একটি এসকিউএল সার্ভার লগ ফাইলটি কাটাতে কমান্ডটি কী?


192

সহকর্মীকে প্রেরণের আগে আমার একটি এলডিএফ ফাইল খালি করা দরকার। আমি কীভাবে এসকিউএল সার্ভারকে লগটি কাটাতে বাধ্য করব?

উত্তর:


131

যদি আমি ভাল মনে করি ... ক্যোরি বিশ্লেষক বা সমতুল্য:

BACKUP LOG  databasename  WITH TRUNCATE_ONLY

DBCC SHRINKFILE (  databasename_Log, 1)

2
এটি সিম্পলে (ব্লগারবার্ডের উত্তরে যেমন) ডাটাবেস পুনরুদ্ধারের মডেলটি সেট করার চেয়ে অবশ্যই ভাল কারণ যদি আপনার পুনরুদ্ধারের মডেলটি পুরোপুরি হয় তবে আপনার কোনও কারণেই সেভাবে সেট করা উচিত।
স্কট হুইটলক

52
ট্রানকেট_অনলি এসকিউএল সার্ভার ২০০৮ এ অবচিত হয়েছে তাই আপনাকে ডিবিটি
জাস্টিন মুর

10
এসকিউএল সার্ভার 2012 এর জন্য এটি কাজ করে তবে তা ছাড়াই WITH TRUNCATE_ONLY
নেট_প্রোগ

4
নেট_প্রগ যা বলেছে তাতে যুক্ত করে এসকিউএল সার্ভার ২০১২ এর জন্য আমি প্রথম লাইনটি প্রতিস্থাপন করেছি BACKUP LOG DatabaseNameHere TO DISK='NUL:'
অ্যারন নিউটন

'TRUNCATE_ONLY' স্বীকৃত BACKUP বিকল্প নয়। (এসকিউএল সার্ভার 2019 আরসি 1)
টমাসজ গ্যান্ডার

304

ম্যানেজমেন্ট স্টুডিওতে:

  • লাইভ পরিবেশে এটি করবেন না, তবে আপনার ডিবি ডিবি যতটা সম্ভব সঙ্কুচিত করতে নিশ্চিত করুন:
    • ডাটাবেসটিতে ডান ক্লিক করুন Properties, তারপরে নির্বাচন করুন Options
    • নিশ্চিত করুন "পুনরুদ্ধার মডেল" "সরল" তে সেট করা আছে, "পূর্ণ" নয়
    • ঠিক আছে ক্লিক করুন
  • ডাটাবেসটিতে আবার ডান ক্লিক করুন, Tasks-> Shrink-> নির্বাচন করুনFiles
  • ফাইলের ধরণটি "লগ" এ পরিবর্তন করুন
  • ঠিক আছে ক্লিক করুন।

বিকল্পভাবে, এটি করার জন্য এসকিউএল:

 ALTER DATABASE mydatabase SET RECOVERY SIMPLE
 DBCC SHRINKFILE (mydatabase_Log, 1)

তথ্যসূত্র: http://msdn.microsoft.com/en-us/library/ms189493.aspx


1
আপনার উত্তর সবেমাত্র আমার দিন বাঁচিয়েছে! আমি "ডান ক্লিক - টাস্ক -> সঙ্কুচিত" বিকল্পটি জানতাম না। ধন্যবাদ!
রেনি

7
আপনি একটি লাইভ পরিবেশে কি করবেন? প্রথমে লগগুলি ব্যাকআপ করবেন?
জন Bubriski

1
আমি কোনও ডিবিএ নই, তবে হ্যাঁ, আমি বিশ্বাস করি যে লগটি ব্যাকআপ করা
ব্লারবার্ড ২

2
@ জোহান বুবরিস্কি আপনি যদি সহজ ছাড়া অন্য কোনও পুনরুদ্ধারের মডেল ব্যবহার করেন তবে লগগুলি ডেটা পুনরুদ্ধার বা লেনদেনকে ফিরিয়ে আনার জন্য ভিত্তি। সুতরাং, উত্পাদনে, লগ ফাইলগুলি সঙ্কুচিত করার আগে আপনাকে প্রথমে এই লগগুলি ব্যাকআপ করতে হবে। অন্যথায়, প্রকৃত পুনরুদ্ধারের কোনও সম্ভাবনা নেই। দুর্ভাগ্যক্রমে, আপনি যদি পুনরুদ্ধারের পরিস্থিতিতে থাকেন তবে ডিবি সম্পূর্ণরূপে পুনরুদ্ধার করতে আপনাকে সমস্ত লেনদেন লগ ব্যাকআপগুলি পুনরায় লোড করতে হবে। মজার সময়, নিশ্চিত হতে! :)
সংজ্ঞায়িত করে

1
এসকিউএল সার্ভারে 2012 এর use mydatabaseআগে আমাকে মৃত্যুদন্ড কার্যকর করতে হয়েছিলdbcc shrinkfile
26'16

62

এসকিউএল সার্ভার ২০০৮-এর জন্য কমান্ডটি হ'ল:

ALTER DATABASE ExampleDB SET RECOVERY SIMPLE
DBCC SHRINKFILE('ExampleDB_log', 0, TRUNCATEONLY)
ALTER DATABASE ExampleDB SET RECOVERY FULL

এটি আমার 14 জিবি লগ ফাইলটি 1MB এ নামিয়েছে।


5
প্রশ্নটি যে সংস্করণটি সম্পর্কিত এবং দ্বিগ্রহণযোগ্য উত্তর এসকিউএল সার্ভার ২০০৮ এর ক্ষেত্রে প্রযোজ্য নয় তা অস্পষ্ট কারণ এই উত্তরটি বয়স নির্বিশেষে এখনও বৈধ।
জেমস আইন

ধন্যবাদ, এটা আমার একটা বড় লগিন যে ফাইলটি DBCC SHRINKFILE সঙ্গে বিক্রিয়া ঘটাতে করা হয়নি কমাতে সাহায্য করেছে
খ্রিস্টান Navelot

6
আপনার কাজ শেষ হয়ে গেলে পুনরুদ্ধার মডেলটি পুরোটিতে ফিরে যেতে ভুলবেন না!
ড্যান বেচার্ড

এটি করার আগে আপনার (বা অন্য কোনও কাটাছবি বিকল্প) ব্যাকআপ করা উচিত। যদি আপনি একটি পূর্ণ ব্যাকআপ করেন এবং এসএসএমএসে 'কেবলমাত্র ব্যাকআপ ব্যাকআপ করুন' চেক করেন তবে আপনার আর লগ দরকার নেই। (এটি সময়ের ব্যাকআপের এক পয়েন্ট)।
সাইমন_উইভার

37

এসকিউএল ২০০৮-এর জন্য আপনি nulডিভাইসে লগ ব্যাকআপ করতে পারেন :

BACKUP LOG [databaseName]
TO DISK = 'nul:' WITH STATS = 10

এবং তারপরে DBCC SHRINKFILEলগ ফাইলটি ছাঁটাই করতে ব্যবহার করুন।


2
এটিই একমাত্র আমার পরিস্থিতিতে কাজ শুরু করেছিল ... TRUNCATE_ONLY
TomXP411

দ্রষ্টব্য: এটি এসএসডি তেও বেশ কিছুটা সময় নিতে পারে (এটি বাতিল করতে সক্ষম হতে লগটি পড়তে হবে)। একটি মাঝারি চালিত আজুর ভিএম-তে 30 জিবি লগ ফাইলের জন্য 40% করতে 10 মিনিট সময় লাগবে। শতাংশ প্রক্রিয়াজাতকরণ দেখতে এসএসএমএসে নেওয়া 'বার্তাগুলি'-এ স্যুইচ করার বিষয়টি নিশ্চিত করুন।
সাইমন_উইভার

3

ট্র্যাঙ্কেট_অনলি সহ একটি ডিবিসিসি সঙ্কুঙ্কিল কমান্ড অনুসরণ করে ব্যাকআপ লগ লগনাম


0

আমার উত্তর যেহেতু মন্তব্যে সমাধিস্থ হয়েছিল। এসকিউএল সার্ভার 2012 এবং এর বাইরে, আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন:

BACKUP LOG Database TO DISK='NUL:'
DBCC SHRINKFILE (Database_Log, 1)

-5

পুরোপুরি আরেকটি বিকল্প হ'ল ম্যানেজমেন্ট স্টুডিওর মাধ্যমে ডেটাবেস আলাদা করা। তারপরে লগ ফাইলটি মুছুন, বা নাম পরিবর্তন করুন এবং পরে মুছুন।

ব্যাক ইন ম্যানেজমেন্ট স্টুডিও আবার ডেটাবেস সংযুক্ত করুন। সংযুক্ত উইন্ডোতে লগ ফাইলটিকে ফাইলের তালিকা থেকে সরিয়ে দিন।

ডিবি সংযুক্ত করে একটি নতুন খালি লগ ফাইল তৈরি করে। আপনি যা কিছু ঠিক আছে তা যাচাই করার পরে, আপনি নাম পরিবর্তিত লগ ফাইলটি মুছতে পারেন।

আপনার সম্ভবত এটি উত্পাদন ডেটাবেসগুলির জন্য ব্যবহার করা উচিত নয়।


4
কখনই না! লগটিতে ডেটা থাকতে পারে যা এখনও ডেটা ফাইলের প্রতিশ্রুতিবদ্ধ হয় না। আপনি যেমন তথ্য হারাতে হবে।
পল

যদি, আপনার উত্তরে, আপনি যদি এটি উত্পাদন করে না দেখার সতর্ক করেন তবে এটি পোস্ট করার মতো নয়।
স্টান শ

9
আমি নিম্নগামীদের সাথে একমত নই - এটি একটি বিকল্প। প্রশাসকদের কেবল তাদের পরিস্থিতি বুঝতে হবে। উদাহরণস্বরূপ - যদি কোনও উন্মুক্ত লেনদেন না হয় তবে কোনও 'অনির্দিষ্ট' ডেটা থাকবে না।
জেরার্ড ওনিল

3
এটি আমার জন্য কাজ করা একমাত্র সমাধান। আমার ড্রাইভটি পূর্ণ হয়ে গেছে এবং আমি ব্যাকআপ বা সঙ্কুচিত করতে পারিনি এবং অন্য কোনও কিছুই কাজ করছে বলে মনে হচ্ছে না। ধন্যবাদ!
ব্রায়ান

3
আমি রাজী; এটি সেরা অনুশীলন নয় তবে ব্রায়ানের দৃশ্যের মতো যদি আপনার কাছে অন্য কোনও বিকল্প না থাকে তবে তা রাখার একটি সরঞ্জামটি মূল্যবান।
স্কটফস্টার1000
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.