sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo usar FILEPROPERTY() en SQL Server

En SQL Server, puede usar FILEPROPERTY() función para devolver el valor de propiedad para un archivo de base de datos especificado. El valor devuelto es 1 o 0 (o NULL si la entrada no es válida).

Para usarlo, proporcione el nombre de archivo lógico del archivo y el valor de la propiedad que desea devolver.

Ejemplo 1:consulta básica

Aquí hay un ejemplo para demostrarlo.

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

Resultado:

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

El valor devuelto por SpaceUsed La propiedad es el número de páginas asignadas en el archivo. Por lo tanto, este ejemplo nos dice que el archivo WWI_Primary tiene asignadas 1152 páginas.

Si reviso el archivo de registro, obtengo un resultado diferente:

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

Resultado:

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

Ejemplo 2:obtener el nombre del archivo a partir de su ID

Si no está seguro del nombre del archivo, pero conoce su ID, puede usar FILE_NAME() función para devolver el nombre del archivo en función de su ID.

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

Resultado:

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

Aquí está de nuevo con el nombre del archivo también devuelto:

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

Resultado:

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

Ejemplo 3:devolver todos los valores de propiedad

Al momento de escribir, FILEPROPERTY() acepta cuatro valores de propiedad.

Aquí hay un ejemplo que devuelve los cuatro valores de propiedad para el WWI_Log archivo.

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       |
+--------------+-----------------+-------------+-------------+

Ejemplo 4:archivo inexistente

Esto es lo que sucede si especifica un archivo que no existe.

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

Resultado:

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

Ejemplo 5:valor de propiedad no válido

Obtenemos el mismo resultado cuando el archivo es correcto, pero especificamos un valor de propiedad no válido.

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

Resultado:

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