sql >> Database >  >> RDS >> Sqlserver

Een logbestand toevoegen aan een SQL Server-database (T-SQL)

Wanneer u een database in SQL Server maakt met behulp van de standaardopties, worden één gegevensbestand en één logbestand gemaakt. Het gegevensbestand slaat de gegevens en database-objecten op (zoals tabellen, weergaven, opgeslagen procedures, enz.). Het logbestand slaat de informatie op die nodig is om alle transacties in de database te herstellen. Als u een groeiende database heeft, bevindt u zich mogelijk in de situatie dat u een nieuw logbestand (en/of gegevensbestand) moet toevoegen.

Net zoals u meer gegevensbestanden kunt toevoegen aan een bestaande database in SQL Server, kunt u ook meer logbestanden toevoegen. De syntaxis verschilt echter enigszins, afhankelijk van of u een gegevensbestand of een logbestand maakt. Voor het toevoegen van een gegevensbestand is ADD FILE . vereist terwijl het toevoegen van een logbestand ADD LOG FILE . vereist .

Dit artikel laat zien hoe u T-SQL kunt gebruiken om een ​​logbestand toe te voegen aan een bestaande database in SQL Server.

Voorbeeld

Om een ​​logbestand aan een bestaande database toe te voegen, gebruikt u de ALTER DATABASE statement met de ADD LOG FILE argument. Geef de details van het nieuwe logbestand op en voer het statement uit.

Hier is een voorbeeld:

USE master;  
GO

ALTER DATABASE Solutions   
ADD LOG FILE 
(  
    NAME = Solutions_log_2,  
    FILENAME = '/var/opt/mssql/data/Solutions_log2.ldf',  
    SIZE = 10MB,  
    MAXSIZE = 100MB,  
    FILEGROWTH = 5%  
);
GO

Hiermee wordt een logbestand toegevoegd met de logische naam Solutions_log_2 naar de Solutions databank. We specificeren dat het fysieke pad /var/opt/mssql/data/Solutions_log2.ldf is . Merk op dat dit pad de Linux/Mac-syntaxis gebruikt. Als u Windows gebruikt, moet u de toepasselijke syntaxis gebruiken (backslashes in plaats van forward slashes).

Controleer het resultaat

U kunt het resultaat controleren door de volgende query uit te voeren:

USE Solutions;  
GO

SELECT name, physical_name  
FROM sys.database_files;  
GO

Resultaat:

name             physical_name                         
---------------  --------------------------------------
Solutions        /var/opt/mssql/data/Solutions.mdf     
Solutions_log    /var/opt/mssql/data/Solutions_log.ldf 
Solutions_dat_2  /var/opt/mssql/data/Solutions_dat2.ndf
Solutions_dat_3  /var/opt/mssql/data/Solutions_dat3.ndf
Solutions_log_2  /var/opt/mssql/data/Solutions_log2.ldf

We kunnen het nieuwe logbestand zien naast het originele logbestand (evenals verschillende gegevensbestanden).

In dit voorbeeld selecteer ik slechts twee kolommen van de sys.database_files bekijken om weer te geven. U kunt ook de asterisk (* ) om desgewenst alle kolommen terug te geven.


  1. FOUT 1698 (28000):Toegang geweigerd voor gebruiker 'root'@'localhost'

  2. Externe sleutel met meerdere kolommen in MySQL?

  3. 2 manieren om in Oracle naar hoofdletters te converteren

  4. SQL DELETE met INNER JOIN