ابحث عن البيانات والكائنات في قاعدة بيانات MS SQL Server باستخدام أداة dbForge Search المجانية

وصف للحاجة العامة لإيجاد البيانات والكائنات في قاعدة البيانات


يعد البحث عن البيانات ، وكذلك الإجراءات المخزنة ، والجداول ، والكائنات الأخرى في قاعدة البيانات مشكلة ذات صلة إلى حد ما ، بما في ذلك للمطورين C # ، وكذلك لتطوير .NET بشكل عام.

في كثير من الأحيان ، قد ينشأ موقف تحتاج إلى العثور عليه:

  1. كائن قاعدة البيانات (الجدول ، العرض ، الإجراء المخزن ، الوظيفة ، إلخ.)
  2. البيانات (القيمة وفي أي جدول يقع)
  3. مقتطف الشفرة في تعريفات كائن قاعدة البيانات

هناك العديد من الحلول الجاهزة ، المدفوعة والمجانية.

أولاً ، سننظر في كيفية البحث عن البيانات والكائنات في قاعدة البيانات باستخدام أدوات قواعد البيانات المدمجة ، ثم سننظر في كيفية القيام بذلك باستخدام أداة dbForge Search المجانية.

البحث باستخدام أدوات DBMS المضمنة


يمكنك تحديد ما إذا كان جدول الموظف موجودًا في قاعدة البيانات باستخدام البرنامج النصي التالي:

بحث الجدول بالاسم
select [object_id], [schema_id], schema_name([schema_id]) as [schema_name], [name], [type], [type_desc], [create_date], [modify_date] from sys.all_objects where [name]='Employee'; 


قد تكون النتيجة شيء مثل هذا:



يتم عرض هنا:

  1. معرفات الكائن والمخطط حيث يوجد الكائن
  2. اسم هذه الدائرة واسم هذا الكائن
  3. نوع الكائن ووصف هذا النوع من الكائنات
  4. تاريخ ووقت الإنشاء والتعديل الأخير للكائن

للعثور على جميع تكرارات خط "المشروع" ، يمكنك استخدام البرنامج النصي التالي:

البحث عن جميع الكائنات عن طريق سلسلة فرعية في الاسم
 select [object_id], [schema_id], schema_name([schema_id]) as [schema_name], [name], [type], [type_desc], [create_date], [modify_date] from sys.all_objects where [name] like '%Project%'; 


قد تكون النتيجة شيء مثل هذا:



كما ترون من النتيجة ، فإن السلسلة الفرعية "Project" هنا لا تحتوي فقط على جدولين Project و ProjectSkill ، ولكن أيضًا على بعض المفاتيح الأساسية والأجنبية.

لفهم الجهة التي تنتمي إليها هذه المفاتيح بالتحديد ، نضيف إلى حقل "parent_object_id" اسم المخرجات واسمها والمخطط الذي توجد به على النحو التالي:

البحث عن جميع الكائنات عن طريق سلسلة فرعية في الاسم مع إخراج الكائنات الأصل
 select ao.[object_id], ao.[schema_id], schema_name(ao.[schema_id]) as [schema_name], ao.parent_object_id, p.[schema_id] as [parent_schema_id], schema_name(p.[schema_id]) as [parent_schema_name], p.[name] as [parent_name], ao.[name], ao.[type], ao.[type_desc], ao.[create_date], ao.[modify_date] from sys.all_objects as ao left outer join sys.all_objects as p on ao.[parent_object_id]=p.[object_id] where ao.[name] like '%Project%'; 


ستكون النتيجة عبارة عن جدول يحتوي على معلومات مفصلة حول الكائنات الأصل ، أي حيث يتم تعريف المفاتيح الأساسية والأجنبية:



تستخدم كائنات النظام التالية في الاستعلامات:


لذلك ، اكتشفنا كيفية العثور على كائنات في قاعدة البيانات باستخدام أدوات DBMS المدمجة.
نعرض الآن كيفية العثور على البيانات في قاعدة البيانات باستخدام مثال البحث في السلسلة.

للعثور على قيمة السلسلة لجميع جداول قاعدة البيانات ، يمكنك استخدام الحل التالي. نقوم بتبسيط هذا الحل وإظهار كيف يمكنك أن تجد ، على سبيل المثال ، قيمة "Ramiro" باستخدام البرنامج النصي التالي:

ابحث عن قيم السلسلة من خلال سلسلة فرعية في جميع جداول قاعدة البيانات
 set nocount on declare @name varchar(128), @substr nvarchar(4000), @column varchar(128) set @substr = '%Ramiro%' declare @sql nvarchar(max); create table #rslt (table_name varchar(128), field_name varchar(128), [value] nvarchar(max)) declare s cursor for select table_name as table_name from information_schema.tables where table_type = 'BASE TABLE' order by table_name open s fetch next from s into @name while @@fetch_status = 0 begin declare c cursor for select quotename(column_name) as column_name from information_schema.columns where data_type in ('text', 'ntext', 'varchar', 'char', 'nvarchar', 'char', 'sysname', 'int', 'tinyint') and table_name = @name set @name = quotename(@name) open c fetch next from c into @column while @@fetch_status = 0 begin --print 'Processing table - ' + @name + ', column - ' + @column set @sql='insert into #rslt select ''' + @name + ''' as Table_name, ''' + @column + ''', cast(' + @column + ' as nvarchar(max)) from' + @name + ' where cast(' + @column + ' as nvarchar(max)) like ''' + @substr + ''''; print @sql; exec(@sql); fetch next from c into @column; end close c deallocate c fetch next from s into @name end select table_name as [Table Name], field_name as [Field Name], count(*) as [Found Mathes] from #rslt group by table_name, field_name order by table_name, field_name drop table #rslt close s deallocate s 


قد تكون نتيجة التنفيذ كما يلي:



يتم عرض أسماء الجداول هنا وفي أي أعمدة يتم تخزين القيمة التي تحتوي على السلسلة الفرعية "Ramiro". بالإضافة إلى عدد مدخلات هذه السلسلة الفرعية التي تم العثور عليها لزوج أعمدة الجدول الموجود.

للعثور على كائنات في التعاريف التي يوجد بها جزء معين من التعليمات البرمجية ، يمكنك استخدام طرق عرض النظام التالية:

  1. sys.sql_modules
  2. sys.all_sql_modules
  3. sys.syscomments

على سبيل المثال ، باستخدام طريقة العرض الأخيرة ، يمكنك استخدام البرنامج النصي التالي للعثور على جميع الكائنات في التعاريف التي تم العثور على جزء معين من التعليمات البرمجية الخاصة بها:

ابحث عن مقتطفات الكود في تعريفات كائن قاعدة البيانات
 select obj.[object_id], obj.[name], obj.[type_desc], sc.[text] from sys.syscomments as sc inner join sys.objects obj on sc.[id]=obj.[object_id] where sc.[text] like '%code snippet%'; 


سيتم عرض المعرّف والاسم والوصف والتعريف الكامل للكائن هنا.

ابحث مع أداة البحث المجانية dbForge


ومع ذلك ، فهو أكثر ملاءمة للبحث باستخدام أدوات جيدة جاهزة. واحدة من هذه الأداة هي dbForge Search .

للاتصال بهذه الأداة في إطار SSMS ، انقر فوق الزر .

سيظهر مربع البحث التالي:



انتبه إلى اللوحة العلوية (من اليسار إلى اليمين):

  1. يمكنك تبديل وضع البحث (البحث عن DDL (الكائنات) أو البيانات)
  2. مباشرة ما نبحث عنه (أي سلسلة فرعية)
  3. سواء كانت حساسة لحالة الأحرف ، ابحث عن مطابقة الكلمات بشكل دقيق ، ابحث عن التكرارات:


  4. نتيجة المجموعة حسب نوع الكائن - زر
  5. حدد الأنواع الضرورية من الكائنات للبحث:

  6. يمكنك أيضًا تحديد العديد من قواعد البيانات للبحث وتحديد مثيل لـ MS SQL Server

كل هذا في وضع البحث عن الكائنات ، أي عند تمكين DDL:



في وضع البحث عن البيانات ، سيتغير فقط اختيار أنواع الكائنات:



وهي الجداول الوحيدة التي ستكون متاحة للاختيار ، حيث يتم تخزين البيانات نفسها:



الآن ، كما كان الحال من قبل ، سنجد جميع تكرارات سلسلة "المشروع" في أسماء الكائنات:



كما ترون ، تم تحديد وضع البحث عن كائنات DDL ، فمن الملائم أننا نبحث عن سطر "Project" ، وكان الباقي كله افتراضيًا.

عند تمييز كائن تم العثور عليه ، يتم عرض رمز التعريف لهذا الكائن أو الكائن الأصل بأكمله أدناه.

يمكنك أيضًا نقل التنقل إلى الكائن الموجود بالنقر فوق الزر :



يمكنك أيضًا تجميع الكائنات التي تم العثور عليها حسب نوعها:



يرجى ملاحظة أنه حتى تلك الجداول يتم عرضها حيث توجد حقول تحتوي أسماؤها على السلسلة الفرعية "مشروع". ومع ذلك ، تذكر أنه يمكن تغيير وضع البحث: للبحث عن الامتثال الكامل / الجزئي / حساس لحالة الأحرف أو لا.

الآن نجد القيمة "Ramiro" في جميع الجداول:



لاحظ أنه يتم عرض جميع الصفوف التي تحتوي على سلسلة فرعية "Ramiro" لجدول الموظف المحدد أدناه.

يمكنك أيضًا نقل التنقل إلى الكائن الموجود بالضغط على الزر كما كان من قبل :



وبالتالي يمكننا البحث عن الأشياء والبيانات اللازمة في قاعدة البيانات.

استنتاج


تم فحص طرق البحث في كل من البيانات نفسها والكائنات الموجودة في قاعدة البيانات باستخدام الأدوات المدمجة في MS SQL Server DBMS نفسه واستخدام أداة dbForge Search المجانية.

لدى Devart أيضًا عدد من الحلول الجاهزة المجانية الأخرى ، ويمكن الاطلاع على قائمة كاملة منها هنا .

مصادر


Source: https://habr.com/ru/post/ar475212/


All Articles