Я пытаюсь создать группу файлов с FileStream следующим образом:Использование переменной в запросе
declare @filepath varchar(800)
set @filepath = convert(sysname, SERVERPROPERTY('InstanceDefaultDataPath')) + N'MyDb_Files.ndf'
print @filepath
alter database MyDb add file (name = 'MyDb_Files', filename = filepath) to filegroup MyDb_Files;
go
Когда я запускаю это я получаю ошибку:
The path 'filepath' cannot be used for FILESTREAM files.
Но если я заменю
filename = filepath
от
filename = "[Output I get from print @filepath]"
Тогда он отлично работает ... Поэтому использование переменной кажется проблемой.
Почему?
UPDATE
Я попытался следующие:
declare @sql nvarchar(800)
set @sql =
'
declare @filepath nvarchar(800)
set @filepath = concat(convert(sysname, SERVERPROPERTY("InstanceDefaultDataPath")), "MyDb.ndf")
alter database MyDb add file (name = "MyDb_Files", filename = @filepath to filegroup MyDb_Files;
'
exec (@sql)
Но я получаю сообщение об ошибке: Неправильный синтаксис около '@filepath'.
Что я делаю сейчас неправильно?
Не должно быть 'filename = @ filepath'? –
Когда я использую это, я получаю сообщение об ошибке «неправильный sintax около пути к файлу. Ожидающий идентификатор, целое число, строка или text_lex ... Как исправить это? –
А ... затем попробуйте что-то по строкам' set @strSql = '< ваш полный оператор alter> '', за которым следует 'EXEC @ strSql'? –