SQL Server Management Studio - باستخدام مرشحات متعددة في قائمة الجدول؟

StackOverflow https://stackoverflow.com/questions/935849

سؤال

في الاستوديو الإداري، يمكنك النقر بزر الماوس الأيمن على مجموعة الجداول لإنشاء عامل تصفية لقائمة الجدول. هل اكتشف أي شخص طريقة لتضمين جداول متعددة في المرشح؟ على سبيل المثال، أود أن جميع الجداول مع "br_*" و "tbl_*" لتظهر.

أي شخص يعرف كيفية القيام بذلك؟

هل كانت مفيدة؟

المحلول

قد تكون قادرا على لف الملحق الخاص بك إلى SMSS التي تتيح لك أن تفعل ما تبحث عنه:

الوظيفة الفنية السوداء لكتابة SQL Server Management Studio 2005 الوظيفة الإضافية

تمديد الوظائف في SQL Server 2005 Management Studio مع الوظائف الإضافية

أول واحد هو على وجه التحديد للبحث وعرض جميع كائنات المخططات مع اسم معين حتى تتمكن من التوسع على ذلك من أجل ما تبحث عنه.

نصائح أخرى

رقم, ، لا يمكنك القيام بذلك. عندما نحصل أولا على استوديو الإدارة لقد جربت كل مزيج ممكن من كل ما يمكن أن تفكر فيه: _, %, *, ", ', &&, &, and, or, |, ||, ، إلخ...

لقد استخدمت الضفدع ل SQL Server (نسخة مجانية) التي لديها خيارات تصفية لطيفة للغاية.

أنا أستخدم SQL Server Management Studio V17.1 ولديه علة حقن SQL في بناء مرشح، حتى تتمكن من الهروب في الواقع

tbl.name like '%xxx%' 

واكتب الاستعلام الخاص بك (مع بعض القيود). على سبيل المثال لتصفية الجداول التي تنتهي ب "_arch"، "_hist"، "_purge" استخدمت قيمة التصفية التالية

_arch') and RIGHT(tbl.name, 5) != N'purge' and RIGHT(tbl.name, 4) != N'hist' and not(tbl.name like N'bbb

يمكنك استخدام Profiler SQL Server لرؤية الاستعلام الذي تم إنشاؤه وضبطه حسب الحاجة.

لست متأكدا مما إذا كان هذا الخطأ نفسه متاح في إصدارات Studio Management SQL السابقة أو متى سيتم إصلاحه، ولكن الآن أنا سعيد بالنتيجة.

في البداية يبدو أنه يمكن استخدام CONTAINS الاستعلام (على سبيل المثال "br_*" OR "tbl_*")، لكنه لا يبدو ل. يبدو أنه يدعم فقط قيمة ثم مرت إلى LIKE بند (على سبيل المثال 'app' يصبح '%app%').

كما قال آخرون، لا يمكنك القيام بذلك في SQL Server Management Studio (UP و بما في ذلك 2014).

سوف يعطيك الاستعلام التالي قائمة من الجداول المصفاة، إذا كان هذا هو كل ما تحتاجه:

SELECT
    CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) AS TABLE_SCHEMA_AND_NAME,
    TABLE_SCHEMA,
    TABLE_NAME
FROM
    INFORMATION_SCHEMA.TABLES
WHERE
    TABLE_SCHEMA IN ('X', 'Y', 'Z') -- schemas go here
ORDER BY
    TABLE_SCHEMA,
    TABLE_NAME;

لا تزال طريقة حقن SQL تعمل (إلى حد ما) اعتبارا من SSMS 2017 V17.8.1، على الرغم من أنها تضع الأقواس حول % رمز، لذلك سوف يفسر تلك حرفيا.

إذا كنت تستخدم الاسم -> يحتوي على مرشح، وعروض Profiler: ... AND dtb.name LIKE N'%MyDatabase1%')

لذلك، في الاسم-> يحتوي على حقل: MyDatabase1') OR (dtb.name LIKE 'MyDatabase2 يجب أن تفعل ذلك للحالات البسيطة.

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top