با توجه به نسخه SQL Server روش جستجو و بازگرداندن لیستی از تمام جدولهای ایجاد شده توسط کاربر کمی متفاوت است. در این مطلب به طور خلاصه پرسوجوهایی را بررسی خواهیم کرد که میتوانند برای بازیابی لیست جدولها در همه نسخهها استفاده شوند.
نسخه 2000
برای نسخههای قدیمیتر SQL Server (مانند SQL Server 2000، اگرچه این روش در SQL Server 2005 برای سازگاری با نسخههای قبلی نیز پشتیبانی میشود)، باید از یک View به نام SYS.SYSOBJECTS استفاده نمایید. این View شامل یک ردیف برای هر شی میباشد که در بانک اطلاعاتی ایجاد شده است، از جمله Viewها، stored procedureها و جدولها. جدولهایی که کاربر ایجاده کرده است نیز قابل تفکیک از جدولهای سیستمی هستند.
در SYSOBJECTS ستونهای دیگری نیز وجود دارد زیرا باید اطلاعاتی در مورد هر چیزی که در طول زمان به بانک اطلاعاتی اضافه شده است را در خود نگهداری نماید. بنابراین، برای یافتن لیستی از جدولهای ایجاد شده توسط کاربر (و تفکیک آن از جدولهای سیستم)، باید نتایجی را پیدا کنیم که در آن ستون xtype (که نوع شی را برای آن ردیف مشخص میکند) برابر با مقدار U است که به معنای جدولهای کاربر است. دستور TSQL حاصل باید به شکل زیر باشد:
1SELECT
2 *
3FROM
4 SYSOBJECTS
5WHERE
6 xtype = 'U';
7GO
از آنجایی که SYSOBJECTS بخشی از فضای نام SYS است، هنگام پرسوجو از SYSOBJECTS، تعیین اینکه SYSOBJECTS بخشی از فضای نام سراسری SYS است، غیر ضروری است، بنابراین میتوانیم آن را همانطور که در مثال بالا نشان داده شده است حذف نماییم.
مثال بالا لیستی از نتایج تمامی جدولها ایجاد شده توسط کاربر را باز میگرداند. از آنجایی که تعداد ستونهایی که هنگام پرسوجو از همه ستونها بازگردانده میشود بسیار زیاد است، ممکن است بخواهید نتایج را تنها با مشاهده ستون نام و cdate (تاریخ ایجاد) محدود کنید:
1SELECT
2 name,
3 crdate
4FROM
5 SYSOBJECTS
6WHERE
7 xtype = 'U';
8GO
نسخه 2005 به بالا
فهرست کردن نام تمام جدولها در SQL Server در نسخههای 2005 به بالا با استفاده از یک View به نام INFORMATION_SCHEMA امکانپذیر است که به طور خودکار در SQL Server ساخته میشود. این View به شما این امکان را میدهد که به راحتی طیف گستردهای از metadata از اشیاء موجود در SQL Server را مشاهده نمایید از جمله اطلاعاتی در مورد ستونها، stored procedureها، و حتی جدولها. در هنگام استفاده از این View چهار ستون بازگردانده میشود، که مهمترین ستون آن TABLE_TYPE است که تعیین میکند موجودیت آن سطر یک جدول یا یک View است.
برای برگرداندن همه جدولها و Viewها در یک پرسوجو، عبارت TSQL زیر را اجرا کنید:
1SELECT
2 *
3FROM
4 INFORMATION_SCHEMA.TABLES;
5GO
برای برگرداندن همه جدولها و Viewهای یک بانک اطلاعاتی در یک پرسوجو، عبارت TSQL زیر را اجرا کنید:
1SELECT
2 *
3FROM
4 databaseName.INFORMATION_SCHEMA.TABLES;
5GO
اگر میخواهید فقط جدولهای کاربر را مشاهده نمایید عبارت TSQL زیر را اجرا کنید:
1SELECT
2 *
3FROM
4 databaseName.INFORMATION_SCHEMA.TABLES
5WHERE
6 TABLE_TYPE = 'BASE TABLE';
7GO