آموزش جامع تابع FILE_NAME در SQL Server؛ از Syntax تا بهینهسازی
مقدمه و جایگاه تابع در SQL Server
تابع FILE_NAME یکی از ابزارهای مهم متادیتا در Microsoft SQL Server است و برای تبدیل شناسه فایل به نام منطقی قابل خواندن استفاده میشود. متادیتا دادهای درباره ساختار و وضعیت دادههاست؛ بنابراین پاسخ این تابع به محتوای رکوردهای تجاری وابسته نیست، بلکه به Context پایگاه داده، کاتالوگ سیستم، نوع ورودی و سطح دسترسی کاربر ارتباط دارد.
در پروژههای واقعی، FILE_NAME در خواناسازی خروجی DBCC، گزارش ظرفیت و رشد فایل، پایش I/O و تولید گزارشهای مدیریتی به کار میرود. استفاده حرفهای فقط نوشتن یک SELECT کوتاه نیست؛ باید تفاوت مقدار معتبر، صفر و NULL، اثر Metadata Visibility، نامگذاری Schema-qualified و هزینه اجرای تکراری تابع را نیز شناخت.
این راهنما از مثال پایه آغاز میکند و تا سناریوهای ممیزی، گزارشگیری و بهینهسازی پیش میرود. برای مشاهده نقشه کامل این خانواده، راهنمای جامع توابع متادیتا در SQL Server را نیز مطالعه کنید.
تعریف، Syntax و قرارداد خروجی FILE_NAME
FILE_NAME به زبان ساده تبدیل شناسه فایل به نام منطقی قابل خواندن را انجام میدهد. موتور SQL Server ورودی را در Context جاری تفسیر میکند و نتیجهای با نوع nvarchar(128) برمیگرداند. اگر ورودی به شیء معتبر اشاره نکند، property پشتیبانی نشود یا کاربر اجازه دیدن متادیتا را نداشته باشد، نتیجه میتواند NULL باشد.
نحو استاندارد
SELECT FILE_NAME ( file_id ) AS Result;
پارامترها
file_id شناسه فایل در پایگاه داده جاری است و باید به فایل داده یا Log موجود در همان Context اشاره کند.
نوع خروجی و معنای NULL
نوع اعلامشده خروجی nvarchar(128) است. برنامه مصرفکننده باید NULL را یک حالت مستقل بداند و پیش از تبدیل نوع یا تصمیمگیری، علت آن را بررسی کند. خروجی نام منطقی است نه مسیر فیزیکی؛ برای شناسه نامعتبر یا Context اشتباه NULL دریافت میشود.
| موضوع | توضیح فنی |
|---|
| کاربرد اصلی | تبدیل شناسه فایل به نام منطقی قابل خواندن |
| نوع خروجی | nvarchar(128) |
| Context | پایگاه داده یا نشست جاری، مطابق قرارداد تابع |
| حالت NULL | ورودی نامعتبر، نبود شیء یا نبود مجوز مشاهده متادیتا |
| کاربرد سازمانی | خواناسازی خروجی DBCC، گزارش ظرفیت و رشد فایل، پایش I/O و تولید گزارشهای مدیریتی |
اصل مهم: خروجی تابع FILE_NAME را داده امنیتی قابل اعتماد فرض نکنید مگر اینکه مستندات همان property و مجوزهای Context این برداشت را تأیید کنند.
مثالهای عملی مستقل و قابل اجرا
مثال 1: نام فایل شماره یک
در این سناریو میخواهیم نام فایل شماره یک را با تابع FILE_NAME پیادهسازی کنیم. Query زیر مستقل طراحی شده است؛ اگر به جدول پروژه اشاره دارد، نام Schema و شیء را با ساختار واقعی محیط خود هماهنگ کنید و پیش از اجرای عملیاتی سطح دسترسی را کنترل نمایید.
SELECT FILE_NAME(1) AS LogicalFileName;
| فیلد یا ستون | خروجی نمونه |
|---|
| LogicalFileName | a00b |
نکته کاربردی این مثال: فایل شماره یک معمولاً فایل داده اصلی پایگاه جاری است. نتیجه نمایشدادهشده نمونه است و شناسهها، نامها یا اندازهها ممکن است در سرور شما متفاوت باشند؛ معیار صحت، منطق Query و متادیتای واقعی محیط است.
مثال 2: نمایش نام همه فایلها
در این سناریو میخواهیم نمایش نام همه فایلها را با تابع FILE_NAME پیادهسازی کنیم. Query زیر مستقل طراحی شده است؛ اگر به جدول پروژه اشاره دارد، نام Schema و شیء را با ساختار واقعی محیط خود هماهنگ کنید و پیش از اجرای عملیاتی سطح دسترسی را کنترل نمایید.
SELECT file_id, FILE_NAME(file_id) AS LogicalFileName
FROM sys.database_files;
| فیلد یا ستون | خروجی نمونه |
|---|
| file_id | 1 |
| LogicalFileName | a00b |
نکته کاربردی این مثال: Context همان پایگاه داده تعیینکننده است. نتیجه نمایشدادهشده نمونه است و شناسهها، نامها یا اندازهها ممکن است در سرور شما متفاوت باشند؛ معیار صحت، منطق Query و متادیتای واقعی محیط است.
مثال 3: استفاده با جدول شناسه نمونه
در این سناریو میخواهیم استفاده با جدول شناسه نمونه را با تابع FILE_NAME پیادهسازی کنیم. Query زیر مستقل طراحی شده است؛ اگر به جدول پروژه اشاره دارد، نام Schema و شیء را با ساختار واقعی محیط خود هماهنگ کنید و پیش از اجرای عملیاتی سطح دسترسی را کنترل نمایید.
DECLARE @Ids TABLE(FileId int);
INSERT INTO @Ids SELECT file_id FROM sys.database_files;
SELECT FileId, FILE_NAME(FileId) AS LogicalName FROM @Ids;
| فیلد یا ستون | خروجی نمونه |
|---|
| FileId | 2 |
| LogicalName | a00b_log |
نکته کاربردی این مثال: شناسهها از کاتالوگ معتبر جمعآوری شدهاند. نتیجه نمایشدادهشده نمونه است و شناسهها، نامها یا اندازهها ممکن است در سرور شما متفاوت باشند؛ معیار صحت، منطق Query و متادیتای واقعی محیط است.
مثال 4: فیلتر فایل Log با نام حلشده
در این سناریو میخواهیم فیلتر فایل Log با نام حلشده را با تابع FILE_NAME پیادهسازی کنیم. Query زیر مستقل طراحی شده است؛ اگر به جدول پروژه اشاره دارد، نام Schema و شیء را با ساختار واقعی محیط خود هماهنگ کنید و پیش از اجرای عملیاتی سطح دسترسی را کنترل نمایید.
SELECT file_id, FILE_NAME(file_id) AS LogicalName
FROM sys.database_files
WHERE type = 1;
| فیلد یا ستون | خروجی نمونه |
|---|
| file_id | 2 |
| LogicalName | a00b_log |
نکته کاربردی این مثال: ستون type انتخاب فایل Log را تعیین میکند. نتیجه نمایشدادهشده نمونه است و شناسهها، نامها یا اندازهها ممکن است در سرور شما متفاوت باشند؛ معیار صحت، منطق Query و متادیتای واقعی محیط است.
مثال 5: ترکیب FILE_NAME و FILE_ID
در این سناریو میخواهیم ترکیب FILE_NAME و FILE_ID را با تابع FILE_NAME پیادهسازی کنیم. Query زیر مستقل طراحی شده است؛ اگر به جدول پروژه اشاره دارد، نام Schema و شیء را با ساختار واقعی محیط خود هماهنگ کنید و پیش از اجرای عملیاتی سطح دسترسی را کنترل نمایید.
SELECT FILE_ID(FILE_NAME(1)) AS RoundTripFileId;
| فیلد یا ستون | خروجی نمونه |
|---|
| RoundTripFileId | 1 |
نکته کاربردی این مثال: رفتوبرگشت صحت نگاشت را نشان میدهد. نتیجه نمایشدادهشده نمونه است و شناسهها، نامها یا اندازهها ممکن است در سرور شما متفاوت باشند؛ معیار صحت، منطق Query و متادیتای واقعی محیط است.
مثال 6: شناسه نامعتبر
در این سناریو میخواهیم شناسه نامعتبر را با تابع FILE_NAME پیادهسازی کنیم. Query زیر مستقل طراحی شده است؛ اگر به جدول پروژه اشاره دارد، نام Schema و شیء را با ساختار واقعی محیط خود هماهنگ کنید و پیش از اجرای عملیاتی سطح دسترسی را کنترل نمایید.
SELECT COALESCE(FILE_NAME(32767), N'فایل ناشناخته') AS SafeFileName;
| فیلد یا ستون | خروجی نمونه |
|---|
| SafeFileName | فایل ناشناخته |
نکته کاربردی این مثال: NULL را در گزارش به برچسب واضح تبدیل کنید. نتیجه نمایشدادهشده نمونه است و شناسهها، نامها یا اندازهها ممکن است در سرور شما متفاوت باشند؛ معیار صحت، منطق Query و متادیتای واقعی محیط است.
مثال 7: شناسه صفر
در این سناریو میخواهیم شناسه صفر را با تابع FILE_NAME پیادهسازی کنیم. Query زیر مستقل طراحی شده است؛ اگر به جدول پروژه اشاره دارد، نام Schema و شیء را با ساختار واقعی محیط خود هماهنگ کنید و پیش از اجرای عملیاتی سطح دسترسی را کنترل نمایید.
SELECT FILE_NAME(0) AS ZeroFileName;
| فیلد یا ستون | خروجی نمونه |
|---|
| ZeroFileName | NULL |
نکته کاربردی این مثال: شناسههای فایل از مقادیر معتبر کاتالوگ انتخاب شوند. نتیجه نمایشدادهشده نمونه است و شناسهها، نامها یا اندازهها ممکن است در سرور شما متفاوت باشند؛ معیار صحت، منطق Query و متادیتای واقعی محیط است.
مثال 8: گزارش رشد و اندازه فایل
در این سناریو میخواهیم گزارش رشد و اندازه فایل را با تابع FILE_NAME پیادهسازی کنیم. Query زیر مستقل طراحی شده است؛ اگر به جدول پروژه اشاره دارد، نام Schema و شیء را با ساختار واقعی محیط خود هماهنگ کنید و پیش از اجرای عملیاتی سطح دسترسی را کنترل نمایید.
SELECT FILE_NAME(file_id) AS LogicalName,
size * 8.0 / 1024 AS SizeMB, growth, is_percent_growth
FROM sys.database_files;
| فیلد یا ستون | خروجی نمونه |
|---|
| LogicalName | a00b |
| SizeMB | 512.000000 |
| growth | 8192 |
| is_percent_growth | 0 |
نکته کاربردی این مثال: رشد ثابت معمولاً پیشبینیپذیرتر از درصدی است. نتیجه نمایشدادهشده نمونه است و شناسهها، نامها یا اندازهها ممکن است در سرور شما متفاوت باشند؛ معیار صحت، منطق Query و متادیتای واقعی محیط است.
مثال 9: روش اشتباه برای مسیر و نسخه درست
در این سناریو میخواهیم روش اشتباه برای مسیر و نسخه درست را با تابع FILE_NAME پیادهسازی کنیم. Query زیر مستقل طراحی شده است؛ اگر به جدول پروژه اشاره دارد، نام Schema و شیء را با ساختار واقعی محیط خود هماهنگ کنید و پیش از اجرای عملیاتی سطح دسترسی را کنترل نمایید.
SELECT FILE_NAME(file_id) AS LogicalName, physical_name
FROM sys.database_files;
| فیلد یا ستون | خروجی نمونه |
|---|
| LogicalName | a00b |
| physical_name | D:\SQLData\a00b.mdf |
نکته کاربردی این مثال: برای مسیر فیزیکی باید physical_name را بخوانید. نتیجه نمایشدادهشده نمونه است و شناسهها، نامها یا اندازهها ممکن است در سرور شما متفاوت باشند؛ معیار صحت، منطق Query و متادیتای واقعی محیط است.
مثال 10: پرهیز از محاسبه اضافی در گزارش انبوه
در این سناریو میخواهیم پرهیز از محاسبه اضافی در گزارش انبوه را با تابع FILE_NAME پیادهسازی کنیم. Query زیر مستقل طراحی شده است؛ اگر به جدول پروژه اشاره دارد، نام Schema و شیء را با ساختار واقعی محیط خود هماهنگ کنید و پیش از اجرای عملیاتی سطح دسترسی را کنترل نمایید.
SELECT file_id, name AS LogicalName, size
FROM sys.database_files
ORDER BY file_id;
| فیلد یا ستون | خروجی نمونه |
|---|
| file_id | 1 |
| LogicalName | a00b |
| size | 65536 |
نکته کاربردی این مثال: وقتی name موجود است، اجرای FILE_NAME ضرورت ندارد. نتیجه نمایشدادهشده نمونه است و شناسهها، نامها یا اندازهها ممکن است در سرور شما متفاوت باشند؛ معیار صحت، منطق Query و متادیتای واقعی محیط است.
خطاهای رایج و روش عیبیابی
نخستین خطای رایج در FILE_NAME اجرای Query در پایگاه داده نادرست است. قبل از تحلیل نتیجه، DB_NAME()، نام Schema و شناسه ورودی را ثبت کنید. اگر خروجی NULL است، جداگانه وجود شیء، صحت نام، نوع شیء و مجوز VIEW DEFINITION یا مجوز مرتبط را بررسی کنید.
خطای دوم، چسباندن خروجی تابع به SQL پویا بدون اعتبارسنجی است. نامی که قرار است بهعنوان Identifier استفاده شود باید از منبع مورد اعتماد بیاید و با QUOTENAME محصور شود؛ مقدارهای تجاری نیز باید با sp_executesql پارامتری شوند. خروجی نام منطقی است نه مسیر فیزیکی؛ برای شناسه نامعتبر یا Context اشتباه NULL دریافت میشود.
- Context جاری را با SELECT DB_NAME() کنترل کنید.
- نامهای شیء را همراه Schema بنویسید و از حدس Schema پیشفرض دوری کنید.
- برای NULL پیام تشخیصی بسازید و آن را خودکار به صفر تبدیل نکنید.
- نتیجه را با نمای کاتالوگ مرتبط، مانند sys.objects، sys.columns یا sys.types، تطبیق دهید.
- مجوز مشاهده متادیتا را با کمترین سطح دسترسی لازم طراحی کنید.
ملاحظات کارایی و بهینهسازی Query
هزینه یک اجرای FILE_NAME معمولاً در مقایسه با خواندن دادههای بزرگ ناچیز است، ولی قرار دادن آن روی هر ردیف یک DMV یا کاتالوگ بزرگ میتواند CPU و زمان اجرای قابل مشاهده بسازد. وقتی ورودی ثابت است، مقدار را یکبار در متغیر ذخیره کنید. وقتی چند ویژگی از هزاران شیء لازم است، Join مستقیم به نماهای sys اغلب Plan شفافتری ایجاد میکند.
برای اندازهگیری واقعی، SET STATISTICS IO, TIME ON و Actual Execution Plan را در محیط آزمایشی فعال کنید. نسخه تابعی و نسخه Join را با داده و مجوز یکسان مقایسه کنید. از Scalar Function در سمت ستون شرط، اگر تبدیل مستقیم به شناسه یا Join ممکن است، پرهیز کنید تا Predicate سادهتر باقی بماند.
SET STATISTICS IO, TIME ON;
DECLARE @ContextName sysname = DB_NAME();
-- Query مبتنی بر متادیتا را اینجا اجرا و Plan واقعی را بررسی کنید.
SELECT @ContextName AS DatabaseContext;
SET STATISTICS IO, TIME OFF;
هدف بهینهسازی حذف کورکورانه تابع نیست؛ هدف آن است که تابع در نقطهای اجرا شود که اطلاعات لازم را با کمترین تکرار و روشنترین قرارداد فراهم کند. تغییر باید با اندازهگیری قبل و بعد تأیید شود.
بهترین روشها و کاربرد در پروژه سازمانی
- نام پایگاه داده و Schema را بخشی از قرارداد اجرای اسکریپت بدانید.
- خروجی FILE_NAME را بههمراه ورودی و Context در لاگ خطا ثبت کنید.
- برای Migration، شرط وجود را با نوع شیء مورد انتظار ترکیب کنید.
- در کد تولیدی، شاخه جداگانهای برای NULL و نبود مجوز در نظر بگیرید.
- برای گزارشهای انبوه، نماهای کاتالوگ را با نسخه تابعی Benchmark کنید.
- شناسههای داخلی را میان Development، Test و Production کپی نکنید.
- SQL پویا را با QUOTENAME و sp_executesql ایمن کنید.
- تست خودکار را پس از تغییر Schema و ارتقای نسخه SQL Server اجرا کنید.
یک کاربرد واقعی FILE_NAME، ساخت ماژول Metadata-driven برای خواناسازی خروجی DBCC، گزارش ظرفیت و رشد فایل، پایش I/O و تولید گزارشهای مدیریتی است. چنین ماژولی باید خروجی نسخهبندیشده، کنترل مجوز، ثبت زمان اجرا و تست بازگشت داشته باشد. در پروژههای حساس، نتیجه با منبع دوم مانند نمای کاتالوگ تطبیق داده میشود تا تغییرات غیرمنتظره سریع شناسایی شوند.
سؤالات متداول اختصاصی
۱. تابع FILE_NAME دقیقاً چه مسئلهای را حل میکند؟
FILE_NAME برای تبدیل شناسه فایل به نام منطقی قابل خواندن به کار میرود. مزیت آن این است که بهجای حدسزدن یا Hard-code کردن شناسهها و نامها، پاسخ را از متادیتای همان Context دریافت میکنیم. در یک سامانه حرفهای، خروجی باید همراه با کنترل NULL و ثبت Context مصرف شود تا نتیجه قابل اعتماد و قابل عیبیابی باشد.
۲. برای شروع استفاده از FILE_NAME چه پیشنیازی لازم است؟
کاربر باید در پایگاه داده درست متصل باشد، ورودی معتبر بدهد و اجازه مشاهده متادیتای شیء هدف را داشته باشد. بهتر است ابتدا نمونه ساده مقاله اجرا شود و سپس Query با نامهای واقعی Schema و اشیای سازمان جایگزین گردد. برای رشتههای فارسی نیز پیشوند N باید حفظ شود.
۳. آیا آموزش و پیادهسازی سازمانی FILE_NAME ارزش تجاری دارد؟
بله؛ استفاده صحیح از متادیتا زمان توسعه ابزارهای گزارشگیری، مهاجرت، ممیزی و نگهداری را کم میکند و خطای انسانی ناشی از مقادیر ثابت را کاهش میدهد. در دوره آموزشی یا مشاوره SQL Server میتوان این تابع را در قالب یک چارچوب Metadata-driven واقعی، همراه با تست و کنترل مجوزها، پیادهسازی کرد.
۴. FILE_NAME چگونه هزینه پروژههای پایگاه داده را کاهش میدهد؟
وقتی قواعد کشف Schema یکبار و درست نوشته شوند، همان کد در چند محیط و چند نسخه پایگاه داده قابل استفاده است. این کار دوبارهکاری در Deployment و گزارشسازی را کم میکند. البته صرف استفاده از تابع کافی نیست و باید قرارداد نامگذاری، ثبت خطا و آزمون تغییرات نیز در پروژه تعریف شود.
۵. تفاوت استفاده از FILE_NAME با خواندن مستقیم نماهای sys چیست؟
FILE_NAME برای دریافت یک ویژگی یا تبدیل مشخص، کوتاه و خواناست؛ در مقابل، نماهای کاتالوگ sys برای گزارش انبوه، فیلتر چندویژگی و Joinهای تحلیلی انعطاف بیشتری دارند. انتخاب درست به حجم داده، نیاز به جزئیات و شکل Plan بستگی دارد و در بسیاری از ابزارها هر دو روش کنار هم استفاده میشوند.
۶. آیا میتوان برای طراحی ابزار یا گزارش اختصاصی FILE_NAME مشاوره گرفت؟
بله؛ در یک خدمت تحلیل یا اجرای پروژه SQL Server ابتدا سناریو، مجوزها، نسخه موتور و اندازه کاتالوگ بررسی میشود. سپس Queryهای متادیتا با خروجی پایدار، لاگ خطا، تست خودکار و مستندات تحویل داده میشوند تا ابزار به یک نمونه نمایشی محدود نماند.
۷. رایجترین خطای FILE_NAME چیست؟
رایجترین خطا تفسیر NULL بهعنوان پاسخ منفی قطعی است؛ درحالیکه NULL ممکن است از ورودی نامعتبر، Context اشتباه یا نبود مجوز مشاهده متادیتا ناشی شود. خطای دیگر استفاده از نام بدون Schema یا فرض ثابت بودن شناسهها میان پایگاههای داده است. خروجی نام منطقی است نه مسیر فیزیکی؛ برای شناسه نامعتبر یا Context اشتباه NULL دریافت میشود.
۸. اجرای FILE_NAME چه اثری بر Performance دارد؟
یک فراخوانی منفرد معمولاً بسیار سبک است، اما اجرای تابع برای هر ردیف یک مجموعه بزرگ یا در شرطی که Join مستقیم کاتالوگ مناسبتر است میتواند هزینه اضافی بسازد. مقدارهای ثابت را یکبار در متغیر محاسبه کنید، Actual Execution Plan و STATISTICS IO را بررسی کنید و برای گزارشهای انبوه از نماهای sys استفاده آگاهانه داشته باشید.
۹. Best Practice اصلی برای FILE_NAME چیست؟
Context را صریح نگه دارید، نامها را Schema-qualified بنویسید، ورودی و خروجی NULL را کنترل کنید و شناسههای متادیتا را در محیط دیگر Hard-code نکنید. همچنین اگر خروجی وارد SQL پویا میشود، نام اشیا را با QUOTENAME محصور کنید و مقدارهای داده را پارامتری نگه دارید.
۱۰. FILE_NAME با کدام نسخههای SQL Server سازگار است؟
این تابع از توابع جاافتاده Transact-SQL است، اما دامنه propertyها، مجوزهای لازم و سطح پشتیبانی در SQL Server، Azure SQL Database، Managed Instance و سرویسهای تحلیلی میتواند متفاوت باشد. پیش از استقرار، مستندات نسخه هدف و Compatibility Level را بررسی و Query را در محیط آزمایشی همان پلتفرم اجرا کنید.
سؤالات مصاحبه SQL Server
۱. چرا FILE_NAME ممکن است NULL برگرداند؟
ورودی نامعتبر، Context نادرست، property ناسازگار یا محدودیت Metadata Visibility از علتهای اصلی هستند. پاسخ حرفهای باید روش تفکیک این علتها را نیز توضیح دهد.
۲. چه زمانی نمای sys را به FILE_NAME ترجیح میدهید؟
وقتی چند ستون متادیتا برای مجموعه بزرگی از اشیا لازم است، Join و فیلتر مستقیم کاتالوگ معمولاً خواناتر و قابلبهینهسازیتر است. برای یک تبدیل یا ویژگی منفرد، تابع میتواند سادهتر باشد.
۳. چرا شناسههای متادیتا نباید Hard-code شوند؟
زیرا شناسهها در پایگاه دیگر، پس از بازسازی شیء یا در محیط استقرار متفاوت میتوانند تغییر کنند. نام معتبر یا کاتالوگ باید در زمان اجرا شناسه را حل کند.
۴. Metadata Visibility چه اثری بر نتیجه دارد؟
کاربر معمولاً فقط متادیتای Securableهایی را میبیند که مالک آنهاست یا مجوز مرتبط دارد. بنابراین NULL الزاماً نبود شیء را ثابت نمیکند.
۵. چگونه کارایی Query متادیتا را میسنجید؟
نسخهها را با IO، TIME، Plan واقعی، تعداد ردیف و مجوز یکسان مقایسه میکنم و تکرار تابع، Predicate و Joinهای کاتالوگ را بررسی میکنم.
چکلیست نهایی
- Syntax تابع FILE_NAME با نوع ورودی صحیح نوشته شده است.
- Context پایگاه داده و Schema پیش از اجرا کنترل شدهاند.
- NULL، صفر و یک بر اساس قرارداد property از هم تفکیک شدهاند.
- هیچ شناسه داخلی بین محیطها Hard-code نشده است.
- نامهای واردشده به SQL پویا با QUOTENAME ایمن شدهاند.
- نسخه کاتالوگی برای گزارشهای انبوه بررسی و Benchmark شده است.
- مجوز مشاهده متادیتا با اصل حداقل دسترسی تنظیم شده است.
- تست پس از تغییر Schema و ارتقای SQL Server وجود دارد.
جمعبندی
FILE_NAME ابزاری دقیق برای تبدیل شناسه فایل به نام منطقی قابل خواندن است، به شرط آنکه Context، مجوز و معنای NULL جدی گرفته شود. مثالهای این مقاله نشان دادند چگونه از Query ساده به ممیزی سازمانی، مدیریت خطا و انتخاب روش کاراتر برسیم.
برای مقایسه این تابع با سایر اعضای خانواده و دسترسی به مقالههای مرتبط، به مقاله مادر توابع Metadata در SQL Server بازگردید. در پیادهسازی نهایی، مستندات نسخه هدف و Plan واقعی Query مرجع تصمیم باشند.