Мне нужно создать структуру папок. Для этого я написал длинный запрос, который мне кажется очень некрасивым:
declare @KundeVorname nvarchar(50)
declare @KundeNachname nvarchar(50)
declare @path nvarchar(255)
select @KundeVorname=a.firstname0 from ADDRESSES a where a.ID=10
select @KundeNachname=a.lastname0 from ADDRESSES a where a.ID=10
select @path='MD \\OUK-SRV-01\Arbeitsablage\'+@KundeNachname+'_'+@KundeVorname+'\01'+'" "'+'Legitimation\01'+'" "'+'Ausweis'
EXEC xp_cmdshell @path
select @path='MD \\OUK-SRV-01\Arbeitsablage\'+@KundeNachname+'_'+@KundeVorname+'\01'+'" "'+'Legitimation\02'+'" "'+'Aufenthaltsdokumente'
EXEC xp_cmdshell @path
select @path='MD \\OUK-SRV-01\Arbeitsablage\'+@KundeNachname+'_'+@KundeVorname+'\02'+'" "'+'OPTIN'
EXEC xp_cmdshell @path
..... и так далее
Должен быть способ создать цикл, чтобы я мог выполнить xp_cmdshell только один раз. Это может ускорить мой запрос. Не могли бы вы подсказать, какие изменения мне нужны?
Заранее спасибо!
Некоторую автоматизацию можно выполнить с помощью CURSOR или WHILE. Набор данных с командами для выполнения можно определить с помощью T-SQL, а затем выполнить построчно с помощью CURSOR. Это вряд ли поможет с производительностью, но ваш код будет, имхо, более поддерживаемым, потому что логика повторно используется в цикле


Вы имеете в виду КУРСОР? Однако использование SQL Server для создания всех ваших каталогов не кажется идеальным. На самом деле может быть более эффективно использовать SQL Server для создания сценария Powershell (используя
STRING_AGGилиFOR XML PATHи `STUFF), который вы можете вставить в Powershell ISE и выполнить.