Für alle die es interessiert hier der Code von dem was ja angeblich nicht geht
use Datenbank
DECLARE @RowNumber INT;
IF OBJECT_ID('AA_Test') IS NOT NULL DROP TABLE AA_Test -- löschen Tabelle 'AA_Test' wenn diese existiert
SELECT ROW_NUMBER() OVER (ORDER BY dbo.Documents.CONTACT) as RowNumber, -- Zeilennummer in Tabelle schreiben (vergeben)
Verzeichnis, Altdatei, Neudatei -- Felder die in die Datei geschrieben werden sollen
INTO AA_Test FROM Documents -- kopieren in AA_Test von Documents
where DESCRIPTION like '%%' and Name like '%%'
DECLARE @variable nvarchar(255);DECLARE @cnt INT = 1; DECLARE @max INT; -- Variablen für "Variable", "Min", "Max" Zeileneinträge für den Loop
DECLARE @DBName sysname; DECLARE @DataPath nvarchar(500); DECLARE @DirTree TABLE (subdirectory nvarchar(255), depth INT) -- Variablen für Ordneranlage
set @max = (select sum([rows]+1) from sys.partitions where object_id=object_id('AA_Test') and index_id in (0,1)); -- Max Einträge in Variable @max schreiben
WHILE @cnt < @max
BEGIN -- Start des Loop
set @variable = (select Verzeichnis from AA_Test where rownumber = @cnt); -- Auslesen des Wertes "Verzeichnis" Aus Zeile 1
SET @DBName = @variable
SET @DataPath = 'X:\OneDrive\Dokumente\' + @DBName -- Ordnerpfad angeben in dem das Verzeichnis angelegt werden soll
IF NOT EXISTS (SELECT 1 FROM @DirTree WHERE subdirectory = @DBName)
EXEC master.dbo.xp_create_subdir @DataPath -- Neuanlage des Verzeichnisses
SET @cnt = @cnt + 1; -- Zeilennummer um 1 erhöhen und nach Zeile 12 springen
END;
PRINT 'Erledigt';
GO
DROP TABLE AA_Test -- löschen der Tabelle AA_Test die Zur Erzeugung der Zeilennummern erzeugt wurden