Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como usar FILEPROPERTY() no SQL Server


No SQL Server, você pode usar o FILEPROPERTY() função para retornar o valor da propriedade para um arquivo de banco de dados especificado. O valor retornado é 1 ou 0 (ou NULL se a entrada for inválida).

Para usá-lo, forneça o nome do arquivo lógico do arquivo e o valor da propriedade que você deseja retornar.


Exemplo 1 – Consulta básica


Aqui está um exemplo para demonstrar.
USE WideWorldImporters;
SELECT FILEPROPERTY('WWI_Primary', 'SpaceUsed') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| 1152     |
+----------+

O valor retornado pelo SpaceUsed propriedade é o número de páginas alocadas no arquivo. Portanto, este exemplo nos informa que o arquivo WWI_Primary possui 1152 páginas alocadas.

Se eu verificar o arquivo de log, recebo um resultado diferente:
SELECT FILEPROPERTY('WWI_Log', 'SpaceUsed') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| 14762    |
+----------+

Exemplo 2 – Obtendo o nome do arquivo de seu ID


Se você não tem certeza do nome do arquivo, mas sabe seu ID, você pode usar o FILE_NAME() função para retornar o nome do arquivo com base em seu ID.
SELECT FILEPROPERTY(FILE_NAME(3), 'SpaceUsed') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| 52872    |
+----------+

Aqui está novamente com o nome do arquivo também retornado:
SELECT 
  FILE_NAME(3) AS [File Name],
  FILEPROPERTY(FILE_NAME(3), 'SpaceUsed') AS [Space Used];

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

Exemplo 3 – Retornar todos os valores de propriedade


No momento da escrita, FILEPROPERTY() aceita quatro valores de propriedade.

Aqui está um exemplo que retorna todos os quatro valores de propriedade para o WWI_Log Arquivo.
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;

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

Exemplo 4 – Arquivo inexistente


Veja o que acontece se você especificar um arquivo que não existe.
SELECT FILEPROPERTY('OOPS', 'SpaceUsed') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| NULL     |
+----------+

Exemplo 5 – Valor de propriedade inválido


Obtemos o mesmo resultado quando o arquivo está correto, mas especificamos um valor de propriedade inválido.
SELECT FILEPROPERTY('WWI_Log', 'Oops') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| NULL     |
+----------+