এসকিউএল সার্ভার ২০০৮ সম্পূর্ণ পাঠ্য সূচকটি কখনই সম্পূর্ণ হতে পারে বলে মনে হয় না


13

আমাদের ওয়েবসাইটটিতে একটি এসকিউএল সার্ভার ২০০৮ আর 2 এক্সপ্রেস সংস্করণ ডাটাবেস রয়েছে যা আমাদের ওয়েবসাইট অনুসন্ধানের জন্য পূর্ণ-পাঠ্য সূচী সহ। প্রতিটি সূচী ছকগুলির মধ্যে যখনই কোনও নতুন রেকর্ড যুক্ত করা বা আপডেট করা হয়, ততক্ষণে সূচক প্রক্রিয়াটি সম্পূর্ণ হবে বলে মনে হয় না।

আমি এই সাইটটিতে মূলত একই কোয়েরিটি ব্যবহার করে গত কয়েক সপ্তাহ ধরে স্থিতি পর্যবেক্ষণ করছি: http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-search/2155/ কেন- এই- এইটি ? -population গ্রহণ যাতে দীর্ঘ

আমি যখন ক্যোয়ারি চালাচ্ছি তখন এটিই আমি দেখতে পাই (পূর্ণ আকারের জন্য ক্লিক করুন): পূর্ণ-পাঠ্য সূচকের স্থিতি

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

সফলভাবে সূচকটি সফলভাবে সম্পন্ন করার একমাত্র উপায়টি হল হয় ক্যাটালগটি পুনর্নির্মাণ করা বা সমস্ত সূচকে বাদ দিয়ে পুনরায় তৈরি করা।

যতবার আমি এটি করেছি, প্রথম সমস্যাটি প্রথম নতুন রেকর্ড যুক্ত হওয়ার সাথে সাথে ফিরে আসবে।

এখানে সার্ভারের পরিসংখ্যান কেবলমাত্র রয়েছে:

  • কোয়াড-কোর এএমডি ওপ্টারন ২.৪৪ গিগাহার্টজ
  • 4 জিবি র‌্যাম
  • উইন্ডোজ সার্ভার 2008 আর 2 এন্টারপ্রাইজ এসপি 1 এক্স 64
  • উন্নত পরিষেবাদি x 64 এর সাথে এসকিউএল সার্ভার 2008 আর 2 এক্সপ্রেস সংস্করণ

উত্তর:


6

অবশেষে আমার সমস্যার কারণ খুঁজে পেলাম!

আমি কয়েক মাস ধরে এই সমস্যাটি সন্ধান করার চেষ্টা করেছি, তবে অবশেষে ছেড়ে দিয়েছি, স্বয়ংক্রিয় পরিবর্তন ট্র্যাকিং অক্ষম করে দিয়েছি, কেবল ম্যানুয়ালি বর্ধিত জনসংখ্যার সূচনা এবং আমার জীবন নিয়ে এগিয়ে চলেছি।

এদিকে, আর একটি তীব্র ত্রুটি ঘটেছে যা ট্র্যাক ডাউন করতে আমার সমস্যা হচ্ছে। পর্যায়ক্রমে ওয়েবসাইটটি একটি ডিবি সংযোগ ত্রুটি নিক্ষেপ করবে:

লগইন দ্বারা অনুরোধ করা "XXXX" ডাটাবেস খুলতে পারে না। লগইন ব্যর্থ হয়েছে। ব্যবহারকারী 'এক্সএক্সএক্সএক্স' এর জন্য লগইন ব্যর্থ হয়েছে।

দেখা গেল যে এই দুটি সমস্যারই একই সমাধান ছিল। আমাকে যা করতে হয়েছিল তা হ'ল অটো ক্লোজ নামে একটি ডাটাবেস সেটিং বন্ধ করে দেওয়া। এটি করতে, কেবল ডাটাবেসটিতে ডান-ক্লিক করুন এবং বৈশিষ্ট্যগুলি ক্লিক করুন। বৈশিষ্ট্য উইন্ডোতে বিকল্পগুলি নির্বাচন করুন এবং "অটো ক্লোজ" কে মিথ্যাতে সেট করুন।

ডাটাবেস বৈশিষ্ট্য উইন্ডো

অটো ক্লোজ অক্ষম করার সাথে সাথেই আমার ডিবি লগইন সংক্রান্ত সমস্যাগুলি চলে গেল এবং স্বয়ংক্রিয় পরিবর্তন ট্র্যাকিং পুরোপুরি কার্যকর হয়েছে।

সবার সাহায্যের জন্য আবার ধন্যবাদ। আমি এটিকে সমর্থন করি!


3

আপনি যদি বিওএল-এ পূর্ণ-পাঠ্য পারফরম্যান্সের জন্য সমস্যার সমাধানের পদক্ষেপগুলি পেরিয়ে গেছেন তবে কৌতূহল - http://technet.microsoft.com/en-us/library/ms142560.aspx

আমি বাজি দিচ্ছি যে এসকিউএল সার্ভার আপনার সমস্ত স্মৃতি খেয়েছে এবং ফিল্টার ডেমনকে কোনওটা ছাড়তে দিচ্ছে না, সুতরাং আপনার জনসংখ্যা ধীর হয়, কারণ সম্ভবত পৃষ্ঠার ফাইলে স্টাফ নেমে যাওয়ার দরকার রয়েছে। আপনার এসকিউএল যে পরিমাণ মেমরি ব্যবহার করতে পারে তার সীমাবদ্ধ করা উচিত (আমি আপনার বর্তমান সিস্টেমের চশমাগুলি দিয়ে 3 গিগাবাইটের আশেপাশে কোথাও ভাবতে পারি - যা এফডিহস্ট এবং ওএসের জন্য 1 জিবি ছেড়ে যায়)।


আপ-ভোটিং @ ব্র্যান্ডন এই বিভাগটি পড়ুন, "পূর্ণ-পাঠ্য ইনডেক্সিং কর্মক্ষমতা হ্রাসের মূল কারণ হ'ল হার্ডওয়্যার-সংস্থান সীমাবদ্ধতা:"
ম্যাকগাইভার

2

এমএসএসকিউএল ২০০৮ এর জন্য যে কোনও সারণীর জন্য পূর্ণ সূচকগুলি পুনর্নির্মাণ এবং পপুলেট করার জন্য আমি এখানে একটি স্ক্রিপ্ট তৈরি করেছি। এটি এমএসএসকিউএল 2000 সার্ভার থেকে স্থানান্তরিত ডাটাবেসগুলির সাথে উত্পাদন পরিবেশে কাজ করছে। আমি পরিবর্তন ট্র্যাকিং বন্ধ করে দিয়েছি এবং এসকিউএল সার্ভার এজেন্টের মাধ্যমে এই সঞ্চিত প্রক্রিয়াটি চালিয়েছি। আপনি যদি এক্সপ্রেস ব্যবহার করে থাকেন তবে টাস্ক শিডিয়ুলারের মাধ্যমে এটি চালানোর জন্য আপনি কোনও ভিবিএস স্ক্রিপ্ট ব্যবহার করতে পারেন।

স্ক্রিপ্টে সূচীকরণগুলি তৈরির চেষ্টা করার আগে প্রতিটি ক্যাটালগে প্রথমে একটি পুনর্নির্মাণ করা গুরুত্বপূর্ণ ছিল।

CREATE PROCEDURE [dbo].[rebuild_repopulate_fulltext] 
AS
BEGIN

Declare @cmdA NVARCHAR(255)
Declare @cmdB NVARCHAR(255)
Declare @cmdC NVARCHAR(255)
DECLARE @Database VARCHAR(255)   
DECLARE @Table VARCHAR(255)  
DECLARE @cmd NVARCHAR(500)  
DECLARE @fillfactor INT 
DECLARE @Catalog VARCHAR(255)
DECLARE @Schema VARCHAR(255)

SET @fillfactor = 90 

DECLARE DatabaseCursor CURSOR FOR  
SELECT name FROM MASTER.dbo.sysdatabases   
WHERE name NOT IN ('master','msdb','tempdb','model','distribution')   
ORDER BY 1  

OPEN DatabaseCursor  

FETCH NEXT FROM DatabaseCursor INTO @Database  
WHILE @@FETCH_STATUS = 0  
BEGIN  

   -- rebuild fulltext catalog
   set @cmd = 'DECLARE CatalogCursor CURSOR FOR 
        SELECT t.name AS TableName, c.name AS FTCatalogName, s.name as schemaname
        FROM ['+ @Database + '].sys.tables t JOIN ['+ @Database +'].sys.fulltext_indexes i
        ON t.object_id = i.object_id
        JOIN ['+ @Database + '].sys.fulltext_catalogs c
        ON i.fulltext_catalog_id = c.fulltext_catalog_id
        JOIN ['+ @Database + '].sys.schemas s ON t.schema_id = s.schema_id'
   --PRINT @cmd
   EXEC (@cmd)  


   OPEN CatalogCursor   

   FETCH NEXT FROM CatalogCursor INTO @Table, @Catalog, @Schema
   WHILE @@FETCH_STATUS = 0   
   BEGIN  

    SET @cmdB = 'USE ['+ @Database + ']; ALTER FULLTEXT CATALOG ' + @Catalog + ' REBUILD;'
    --PRINT @cmdB
    EXEC (@cmdB)


    FETCH NEXT FROM CatalogCursor INTO @Table, @Catalog, @Schema
   END   

   CLOSE CatalogCursor   


   OPEN CatalogCursor   

   FETCH NEXT FROM CatalogCursor INTO @Table, @Catalog, @Schema
   WHILE @@FETCH_STATUS = 0   
   BEGIN  

    SET @cmdC = 'USE ['+ @Database + ']; ALTER FULLTEXT INDEX ON ['+ @Database + '].[' + @Schema + '].[' + @Table + '] START FULL POPULATION;' 
    --PRINT @cmdC
    EXEC (@cmdC)

    FETCH NEXT FROM CatalogCursor INTO @Table, @Catalog, @Schema
   END   

   CLOSE CatalogCursor   
   DEALLOCATE CatalogCursor  



   FETCH NEXT FROM DatabaseCursor INTO @Database  
END  

CLOSE DatabaseCursor   
DEALLOCATE DatabaseCursor

END

কারও কি এমন পদ্ধতি আছে যার জন্য কার্সার প্রয়োজন নেই?


0

সাধারণত ট্রিগার ব্যবহার করে পূর্ণ-পাঠ্য ক্যাটালগ আপডেট করার পরামর্শ দেওয়া হয়। এটি আমি এমএসকিএল-তে ব্যবহার করি, তবে আমার ক্ষেত্রে কারণ আমি একটি স্থানীয় অ্যাপ্লিকেশন করেছি যাতে বেশ কয়েকটি নির্দিষ্ট প্রয়োজনীয়তা রয়েছে যা আমাকে ট্রিগারগুলি ব্যবহার করে সমাধানের দিকে নিয়ে যায়, যে সমাধানগুলি 2 বছর পূর্বে শুরু করে 100% কাজ করে।

এই উদাহরণটির বিরুদ্ধে আপনার বাস্তবায়ন পর্যালোচনা করুন ।


এখনই আমার সূচকগুলি স্বয়ংক্রিয় পরিবর্তন ট্র্যাকিংয়ে সেট করা আছে। আমি পড়েছি যে এটি ম্যানুয়ালে পরিবর্তিত করা এবং ট্রিগারগুলি ব্যবহার করা আসলে সমস্যার সৃষ্টি করতে পারে যখন কোনও ব্যক্তি পূর্ববর্তী সারণী আপডেট থেকে ট্রিগারযুক্ত সূচক আপডেটটি এখনও শেষ না হওয়ার আগে কোনও সূচী সারণীতে রেকর্ড সন্নিবেশ করে বা আপডেট করে। দেখে মনে হচ্ছে স্বয়ংক্রিয় পরিবর্তন ট্র্যাকিংয়ের কাজ করা উচিত ... বিশেষত যেহেতু আমার টেবিলে আমার এত বেশি রেকর্ড নেই।
জার্গস

আপনি যে উদাহরণ লিঙ্কটি দিয়েছেন তার বিপরীতে আমি আমার সেটআপটি পর্যালোচনা করেছি, তবে সবকিছুই যথাযথ বলে মনে হচ্ছে। এমনকি আমি আমার এসকিউএল সার্ভার ইনস্টল মেরামত করার চেষ্টা করেছি, কিন্তু সমস্যাটি রয়ে গেছে।
জার্গস

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

0

আপনার পরিস্থিতিতে মূল কারণটি কী তা নিশ্চিত নয় তবে ব্যাকআপ হওয়ার পরে এটি ঘটতে পারে। আপনার ক্ষেত্রে এটি ঘটছে কিনা তা নিশ্চিত নয় বা সেই টেবিলটি অন্যের থেকে কীভাবে আলাদা। এখন আপনি আমাকে কৌতুহল আছে। আপনার কি এসকিউএল প্রতিলিপি চালু আছে?

একটি অস্থায়ী সংশোধনের জন্য, যখন এটি ঘটে তখন আমি টেবিলে একটি "ক্রল" (জনসংখ্যা) করতাম।

http://msdn.microsoft.com/en-us/library/ms142575(v=sql.105).aspx

এই কোডটি ব্যবহার করুন:

ALTER FULLTEXT INDEX ON dbname.dbo.tablename
START FULL POPULATION;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.