Twee nieuwe opgeslagen procedures geïntroduceerd in SQL Server 2019 zijn sys.xp_copy_file
en sys.xp_copy_files
, waarmee u bestanden kunt kopiëren.
Vóór SQL Server 2019 zou u xp_cmdshell
. moeten gebruiken , die een Windows-opdrachtshell voortbrengt en een tekenreeks doorgeeft voor uitvoering. Met de nieuwe opgeslagen procedures die in SQL Server 2019 zijn geïntroduceerd, kunt u bestanden kopiëren zonder afhankelijk te zijn van xp_cmdshell
.
Voorbeeld 1 – Kopieer 1 bestand
U kunt sys.xp_copy_file
. gebruiken om een enkel bestand te kopiëren. Door deze opgeslagen procedure te gebruiken, kunt u ook het nieuwe bestand een naam geven.
Voorbeeld op Linux:
EXEC master.sys.xp_copy_file '/var/opt/mssql/data/samples/albums.csv', '/var/opt/mssql/data/samples/albums2.csv';
Ik heb deze code met succes uitgevoerd op mijn Mac, die SQL Server 2019 op Linux gebruikt.
Om bestanden naar een Windows-systeem te kopiëren, moet u de Windows-padconventie gebruiken.
Voorbeeld op Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums.csv', 'D:\mssql\data\samples\albums2.csv';
Voorbeeld 2 – Meerdere bestanden kopiëren
U kunt sys.xp_copy_files
. gebruiken om meerdere bestanden te kopiëren.
Voorbeeld op Linux:
EXEC master.sys.xp_copy_files '/var/opt/mssql/data/samples/albums*.csv', '/var/opt/mssql/data/samples/final';
Hier ben ik in dezelfde map als het vorige voorbeeld. In dit geval heb ik alle bestanden gekopieerd die beginnen met albums
en eindigen met .csv
. Ik gebruik de asterisk (*
) jokerteken om bestanden te selecteren die mogelijk andere tekens bevatten na de albums
onderdeel.
Dit voorbeeld kopieert de bestanden naar de /var/opt/mssql/data/samples/final
directory.
Voorbeeld op Windows:
EXEC master.sys.xp_copy_file 'D:\mssql\data\samples\albums*.csv', 'D:\mssql\data\samples\final';
Bestanden verwijderen
SQL Server 2019 introduceerde ook de sys.xp_delete_files
opgeslagen procedure, waarmee u bestanden kunt verwijderen. Zie Bestanden verwijderen in SQL Server 2019 voor voorbeelden van het verwijderen van de bestanden die in dit artikel zijn gemaakt.