SQL Server Management Studio - باستخدام مرشحات متعددة في قائمة الجدول؟
-
06-09-2019 - |
سؤال
في الاستوديو الإداري، يمكنك النقر بزر الماوس الأيمن على مجموعة الجداول لإنشاء عامل تصفية لقائمة الجدول. هل اكتشف أي شخص طريقة لتضمين جداول متعددة في المرشح؟ على سبيل المثال، أود أن جميع الجداول مع "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_
أو كل ما تريد تصفية عليه.