خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
تابع ()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 را مشاهده می کنید:
خروجی :
در اسکریپت زیر، این بار سه فایل برگردانده می شود:
حالا همین کوئری ها را در مورد دیتابیس دیگری انجام می دهیم:
خروجی :
در این مثال همانطور که مشاهده می کنید، هیچ فایل با ID 3 وجود ندارد و NULL برگردانده شده است.
خروجی :
خروجی :
با استفاده از این View، اگر database ID را مشخص نکنید، خروجی مربوطه به همه دیتابیس هایی که در این Instance دارید، خواهد بود. بنابراین در WHERE، دیتابیس مورد نظر را مشخص می کنیم. در این حالت برای بدست آوردن نام دیتابیس فعلی از تابع DB_ID استفاده شد.
در اسکریپت زیر، یک مثال ساده از تابع 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 دیدگاه)
دیدگاه خود را ثبت کنید: