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


استفاده از تابع ()FILE_IDEX در SQL Server

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

نرم افزار سامانه مودیان راهکار
لطفا به مثال ساده زیر توجه کنید:



USE WideWorldImportersDW;
SELECT FILE_IDEX('WWI_Primary') AS Result;

+----------+
| Result |
|----------|
| 1 |
+----------+

در مثال فوق، یک خروجی ولی در مصال زیر سه خروجی را از کوئری مربوطه دریافت خواهیم کرد:

USE WideWorldImportersDW;
SELECT
FILE_IDEX('WWI_Primary') AS WWI_Primary,
FILE_IDEX('WWI_Log') AS WWI_Log,
FILE_IDEX('WWI_UserData') AS WWI_UserData;

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

در مثال دیگر به دیتابیس دیگری سوئیچ می کنیم و سپس خروجی را بررسی می کنیم:

USE Music;
SELECT
FILE_IDEX('Music') AS Music,
FILE_IDEX('Music_Log') AS Music_Log,
FILE_IDEX('Music_UserData') AS Music_UserData;

+---------+-------------+------------------+
| Music | Music_Log | Music_UserData |
|---------+-------------+------------------|
| 1 | 2 | NULL |
+---------+-------------+------------------+

نام فایل در این دیتابیس متفاوت است و در مورد ستون سوم، هیچ فایلی با این نام وجود ندارد. پس ورودی نامعتبر بوده و ستون سوم مقدار NULL را در خود دارد.

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

USE WideWorldImportersDW;
SELECT file_id
FROM sys.database_files
WHERE name = 'WWI_Primary';

+-----------+
| file_id |
|-----------|
| 1 |
+-----------+

Using sys.master_files
همان مثال فوق را با sys.master_files انجام می دهیم:

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

+-----------+
| file_id |
|-----------|
| 1 |
+-----------+

این view می تواند اطلاعات از تمام دیتابیس ها را برمیگرداند. پس در قسمت WHERE، دیتابیس جاری را با استفاده از تابع DB_ID در کوئری قرار می دهیم.


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

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

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


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