বর্ধিত ইভেন্টের জন্য অনুমোদিত কতগুলি বাউন্ড ক্রিয়াকলাপ?


14

যদি আপনি কোনও ইভেন্ট সেশনে একটি ইভেন্টে "অনেকগুলি" ক্রিয়া যুক্ত করেন তবে আপনি এই ত্রুটিটি পাবেন:

এমএসজি 25639, স্তর 16, রাজ্য 23, লাইন 1 ইভেন্ট, "[ইভেন্টের নাম]", অনুমোদিত বাউন্ড ক্রিয়াগুলির সংখ্যা ছাড়িয়েছে।

কয়টি কর্ম অনুমোদিত? ঘটনা দ্বারা এটি পৃথক হয়?

উত্তর, পরীক্ষার উপর ভিত্তি করে, 27 জন্য প্রদর্শিত হবে sqlserver.rpc_completed। তবে আমি কোনও মাইক্রোসফ্ট ডকুমেন্টেশনে এই নম্বরটি পাইনি । এবং এটি ইভেন্ট অনুসারে পৃথক বলে মনে হচ্ছে, আমি 30 এর জন্য পেয়েছিলাম sqlserver.sql_batch_completed

ব্যর্থ হয় উদাহরণ কোড:

CREATE EVENT SESSION [Test] ON SERVER 
ADD EVENT sqlserver.rpc_completed(
    ACTION(
        package0.callstack,
        package0.collect_cpu_cycle_time,
        package0.collect_current_thread_id,
        package0.collect_system_time,
        package0.event_sequence,
        package0.last_error,
        package0.process_id,
        sqlos.cpu_id,
        sqlos.numa_node_id,
        sqlos.scheduler_address,
        sqlos.scheduler_id,
        sqlos.system_thread_id,
        sqlos.task_address,
        sqlos.task_elapsed_quantum,
        sqlos.task_resource_group_id,
        sqlos.task_resource_pool_id,
        sqlos.task_time,
        sqlos.worker_address,
        sqlserver.client_app_name,
        sqlserver.client_connection_id,
        sqlserver.client_hostname,
        sqlserver.client_pid,
        sqlserver.context_info,
        sqlserver.database_id,
        sqlserver.database_name,
        sqlserver.is_system,
        sqlserver.nt_username,
        sqlserver.plan_handle))
GO
DROP EVENT SESSION [Test] ON SERVER
GO

উদাহরণস্বরূপ কোড যা সফল হয় (শেষ আইটেমটি বাদ দিয়ে একই):

CREATE EVENT SESSION [Test] ON SERVER 
ADD EVENT sqlserver.rpc_completed(
    ACTION(
        package0.callstack,
        package0.collect_cpu_cycle_time,
        package0.collect_current_thread_id,
        package0.collect_system_time,
        package0.event_sequence,
        package0.last_error,
        package0.process_id,
        sqlos.cpu_id,
        sqlos.numa_node_id,
        sqlos.scheduler_address,
        sqlos.scheduler_id,
        sqlos.system_thread_id,
        sqlos.task_address,
        sqlos.task_elapsed_quantum,
        sqlos.task_resource_group_id,
        sqlos.task_resource_pool_id,
        sqlos.task_time,
        sqlos.worker_address,
        sqlserver.client_app_name,
        sqlserver.client_connection_id,
        sqlserver.client_hostname,
        sqlserver.client_pid,
        sqlserver.context_info,
        sqlserver.database_id,
        sqlserver.database_name,
        sqlserver.is_system,
        sqlserver.nt_username))
GO
DROP EVENT SESSION [Test] ON SERVER
GO

(আমি কয়েকটি পৃথক ক্রিয়াকলাপ চেষ্টা করেছি এবং কোন ক্রিয়াগুলি অন্তর্ভুক্ত রয়েছে তার সাথে এটি সম্পর্কিত বলে মনে হচ্ছে না - তবে এটি ক্রিয়া নামের মোট চরিত্রের গণনার উপর ভিত্তি করে?)

আমি যে কর্মের সাথে কাজ করছিলাম তার সম্পূর্ণ তালিকা:

package0.callstack,
package0.collect_cpu_cycle_time,
package0.collect_current_thread_id,
package0.collect_system_time,
package0.event_sequence,
package0.last_error,
package0.process_id,
sqlos.cpu_id,
sqlos.numa_node_id,
sqlos.scheduler_address,
sqlos.scheduler_id,
sqlos.system_thread_id,
sqlos.task_address,
sqlos.task_elapsed_quantum,
sqlos.task_resource_group_id,
sqlos.task_resource_pool_id,
sqlos.task_time,
sqlos.worker_address,
sqlserver.client_app_name,
sqlserver.client_connection_id,
sqlserver.client_hostname,
sqlserver.client_pid,
sqlserver.context_info,
sqlserver.database_id,
sqlserver.database_name,
sqlserver.is_system,
sqlserver.nt_username,
sqlserver.plan_handle,
sqlserver.query_hash,
sqlserver.query_hash_signed,
sqlserver.query_plan_hash,
sqlserver.query_plan_hash_signed,
sqlserver.request_id,
sqlserver.server_instance_name,
sqlserver.server_principal_name,
sqlserver.server_principal_sid,
sqlserver.session_id,
sqlserver.session_nt_username,
sqlserver.session_resource_group_id,
sqlserver.session_resource_pool_id,
sqlserver.session_server_principal_name

@@ সংস্করণ আউটপুট:

Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64) 
    Oct 28 2016 18:17:30 
    Copyright (c) Microsoft Corporation
    Developer Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor)

উত্তর:


9

কয়টি কর্ম অনুমোদিত? ঘটনা দ্বারা এটি পৃথক হয়?

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

এবং এটি ইভেন্ট অনুসারে পৃথক বলে মনে হচ্ছে, আমি 30 এর জন্য পেয়েছিলাম sqlserver.sql_batch_completed.

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

আপনি কি করতে পারেন?

প্রথম আইটেমটি হচ্ছে ভেরিয়েবলের দৈর্ঘ্যের ডেটা হ'ল সবচেয়ে বড় সমস্যা যা আপনি মুখোমুখি হচ্ছেন। পরিবর্তনশীল দৈর্ঘ্য কী এবং কী নয় তা আপনি কীভাবে জানবেন? আপনি XE ক্যাটালগ তাকান sys.dm_xe_objectsকিছু ক্রিয়ার বিশেষভাবে, আপনি নেই দেখতে পাবেন type_nameএবং type_sizeকলাম যা আপনি (নীচের স্ক্রিনশট 0 আকারের) পরিবর্তনশীল আকারের ডাটা পয়েন্টের একটি গুচ্ছ যোগ করছি কিনা তা দেখতে উপযোগী হতে পারে।

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

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

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

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


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