Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come utilizzare FILEPROPERTY() in SQL Server

In SQL Server puoi utilizzare FILEPROPERTY() funzione per restituire il valore della proprietà per un file di database specificato. Il valore restituito è 1 o 0 (o NULL se l'input non è valido).

Per utilizzarlo, fornisci il nome del file logico del file e il valore della proprietà che desideri restituire.

Esempio 1 – Query di base

Ecco un esempio da dimostrare.

USE WideWorldImporters;
SELECT FILEPROPERTY('WWI_Primary', 'SpaceUsed') AS Result;

Risultato:

+----------+
| Result   |
|----------|
| 1152     |
+----------+

Il valore restituito da SpaceUsed proprietà è il numero di pagine allocate nel file. Pertanto, questo esempio ci dice che il file WWI_Primary ha 1152 pagine allocate.

Se controllo il file di registro, ottengo un risultato diverso:

SELECT FILEPROPERTY('WWI_Log', 'SpaceUsed') AS Result;

Risultato:

+----------+
| Result   |
|----------|
| 14762    |
+----------+

Esempio 2:ottenere il nome del file dal suo ID

Se non sei sicuro del nome del file, ma ne conosci l'ID, puoi utilizzare FILE_NAME() funzione per restituire il nome del file in base al suo ID.

SELECT FILEPROPERTY(FILE_NAME(3), 'SpaceUsed') AS Result;

Risultato:

+----------+
| Result   |
|----------|
| 52872    |
+----------+

Eccolo di nuovo con il nome del file restituito:

SELECT 
  FILE_NAME(3) AS [File Name],
  FILEPROPERTY(FILE_NAME(3), 'SpaceUsed') AS [Space Used];

Risultato:

+--------------+--------------+
| File Name    | Space Used   |
|--------------+--------------|
| WWI_UserData | 52872        |
+--------------+--------------+

Esempio 3 – Restituisci tutti i valori delle proprietà

Al momento della scrittura, FILEPROPERTY() accetta quattro valori di proprietà.

Ecco un esempio che restituisce tutti e quattro i valori delle proprietà per il WWI_Log file.

DECLARE @file_name varchar(50) = 'WWI_Log';
SELECT 
  FILEPROPERTY(@file_name, 'IsReadOnly') AS IsReadOnly,
  FILEPROPERTY(@file_name, 'IsPrimaryFile') AS IsPrimaryFile,
  FILEPROPERTY(@file_name, 'IsLogFile') AS IsLogFile,
  FILEPROPERTY(@file_name, 'SpaceUsed') AS SpaceUsed;

Risultato:

+--------------+-----------------+-------------+-------------+
| IsReadOnly   | IsPrimaryFile   | IsLogFile   | SpaceUsed   |
|--------------+-----------------+-------------+-------------|
| 0            | 0               | 1           | 14763       |
+--------------+-----------------+-------------+-------------+

Esempio 4 – File inesistente

Ecco cosa succede se specifichi un file che non esiste.

SELECT FILEPROPERTY('OOPS', 'SpaceUsed') AS Result;

Risultato:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Esempio 5 – Valore della proprietà non valido

Otteniamo lo stesso risultato quando il file è corretto, ma specifichiamo un valore di proprietà non valido.

SELECT FILEPROPERTY('WWI_Log', 'Oops') AS Result;

Risultato:

+----------+
| Result   |
|----------|
| NULL     |
+----------+