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

Devolver todos los grupos de archivos para la base de datos actual en SQL Server

En SQL Server, puede consultar sys.filegroups vista de catálogo del sistema para devolver una lista de todos los grupos de archivos para la base de datos actual.

Esta vista contiene una fila para cada espacio de datos que es un grupo de archivos. En otras palabras, sus resultados contienen una fila por grupo de archivos.

Ejemplo 1:uso de la base de datos de WideWorldImporters

Aquí hay un ejemplo para demostrar. Este ejemplo utiliza la base de datos de muestra WideWorldImporters proporcionada por Microsoft.

USE WideWorldImporters;
SELECT 
data_space_id,
name,
type_desc
FROM sys.filegroups;

Resultado:

+-----------------+-------------------+---------------------------------+
| data_space_id   | name              | type_desc                       |
|-----------------+-------------------+---------------------------------|
| 1               | PRIMARY           | ROWS_FILEGROUP                  |
| 2               | USERDATA          | ROWS_FILEGROUP                  |
| 3               | WWI_InMemory_Data | MEMORY_OPTIMIZED_DATA_FILEGROUP |
+-----------------+-------------------+---------------------------------+

Ejemplo 2:cambiar de base de datos

En este ejemplo, cambio a una base de datos diferente y vuelvo a ejecutar la consulta.

USE Music;
SELECT 
data_space_id,
name,
type_desc
FROM sys.filegroups;

Resultado:

+-----------------+---------+----------------+
| data_space_id   | name    | type_desc      |
|-----------------+---------+----------------|
| 1               | PRIMARY | ROWS_FILEGROUP |
+-----------------+---------+----------------+

Esta base de datos (llamada Música) solo tiene un grupo de archivos.

Ejemplo 3:devolver todas las columnas

En los ejemplos anteriores, seleccioné columnas específicas para devolver. En este ejemplo, uso un asterisco (* ) para devolverlos todos.

SELECT * FROM sys.filegroups;

Resultado (usando salida vertical):

name                  | PRIMARY
data_space_id         | 1
type                  | FG
type_desc             | ROWS_FILEGROUP
is_default            | 1
is_system             | 0
filegroup_guid        | NULL
log_filegroup_id      | NULL
is_read_only          | 0
is_autogrow_all_files | 0

En este caso, utilicé la salida vertical para mostrar los resultados verticalmente (para que no se vea obligado a desplazarse horizontalmente).

Ejemplo 4:incluir la ruta del archivo

Puede unirse a sys.database_files view para devolver la ruta del archivo físico.

SELECT
df.name AS [DB File Name],
df.size/128 AS [File Size (MB)],
fg.name AS [File Group Name],
df.physical_name AS [File Path]
FROM sys.database_files AS df
INNER JOIN sys.filegroups AS fg
ON df.data_space_id = fg.data_space_id;

Resultado (usando salida vertical):

DB File Name    | Music
File Size (MB)  | 8
File Group Name | PRIMARY
File Path       | /var/opt/mssql/data/Music.mdf

El grupo de archivos PRIMARIO es el grupo de archivos predeterminado en el que residen el archivo de datos y el archivo de registro, a menos que especifique un grupo de archivos diferente. Consulte Cómo agregar un grupo de archivos a una base de datos de SQL Server para crear un nuevo grupo de archivos.