خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


تابع ()File_Name در SQL Server

تابع ()File_Name در SQL Server
در SQL Server می توانید از تابع FILE_NAME برای نمایش نام منطقی یک فایل دیتابیس استفاده کنید. برای این منظور باید file ID را به این تابع پاس دهید. این ID ای است که مربوط به ستون file_id در View های سیستمی sys.master_files یا sys.database_files وجود دارد. این View ها همچنین حاوی نام منطقی فایل(logical file name) هستند ، اما تابع FILE_NAME شما را از کوئری برای این View ها نجات می دهد.

نرم افزار سامانه مودیان راهکار
در اسکریپت زیر، یک مثال ساده از تابع FILE_NAME را مشاهده می کنید:



USE WideWorldImportersDW;
SELECT FILE_NAME(1) AS Result;

خروجی :

+-------------+
| Result |
|-------------|
| WWI_Primary |
+-------------+

در اسکریپت زیر، این بار سه فایل برگردانده می شود:

USE WideWorldImportersDW;
SELECT
FILE_NAME(1) AS [File 1],
FILE_NAME(2) AS [File 2],
FILE_NAME(3) AS [File 3];

+-------------+----------+--------------+
| File 1 | File 2 | File 3 |
|-------------+----------+--------------|
| WWI_Primary | WWI_Log | WWI_UserData |
+-------------+----------+--------------+

حالا همین کوئری ها را در مورد دیتابیس دیگری انجام می دهیم:

USE Music;
SELECT
FILE_NAME(1) AS [File 1],
FILE_NAME(2) AS [File 2],
FILE_NAME(3) AS [File 3];

خروجی :

+----------+-----------+----------+
| File 1 | File 2 | File 3 |
|----------+-----------+----------|
| Music | Music_log | NULL |
+----------+-----------+----------+

در این مثال همانطور که مشاهده می کنید، هیچ فایل با ID 3 وجود ندارد و NULL برگردانده شده است.

Using sys.database_files

همانطور که بالاتر هم گفته شد، با استفاده از تابع FILE_NAME، از کوئری نویسی برای View های سیستمی sys.master_files و sys.database_files نجات پیدا می کنید. مثلا اگر تابع FILE_NAME وجود نمی داشت، بدین طریق می توانستیم به نتایج فوق رسید:

SELECT name
FROM sys.database_files
WHERE file_id = 2;

خروجی :

+-----------+
| name |
|-----------|
| Music_log |
+-----------+

Using sys.master_files

اگر ما از sys.master_files استفاده می کنید، باید کد خاصی را برای مشخص کردن دیتابیس مربوطه هم اضافه کنید:

SELECT name
FROM sys.master_files
WHERE file_id = 2
AND database_id = DB_ID();

خروجی :

+-----------+
| name |
|-----------|
| Music_log |
+-----------+

با استفاده از این View، اگر database ID را مشخص نکنید، خروجی مربوطه به همه دیتابیس هایی که در این Instance دارید، خواهد بود. بنابراین در WHERE، دیتابیس مورد نظر را مشخص می کنیم. در این حالت برای بدست آوردن نام دیتابیس فعلی از تابع DB_ID استفاده شد.


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز