Мне нужно экспортировать из кода (C #) с помощью хранимой процедуры (в SQL Server 2017) некоторые файловые объекты внутри базы данных (двоичный формат) и сохранить их в каталоге сервера, на котором запущено веб-приложение. Я использую команду BCP внутри хранимой процедуры. У меня проблемы при попытке вставить параметры в хранимую процедуру.
Эта хранимая процедура без параметров работает нормально; где я могу извлечь файл с idDoc = 20167 и назвать его «tt1.pdf» в каталоге «e \ temp \ sql2017»
CREATE PROCEDURE [dbo].[spDocumentiBCP_1]
AS
BEGIN
DECLARE @sql VARCHAR(1000)
SET @sql = 'BCP "SELECT binario FROM Database1.dbo.TbDocumentibin
WHERE idDoc=20167"
QUERYOUT e:\temp\sql2017\tt1.pdf -T -f e:\TEMP\sql2017\blob1.fmt -S PCNAME\sql2017 '
EXEC master.dbo.xp_CmdShell @sql
END
Я пытался вставить параметры в хранимую процедуру, но получаю ошибки.
Это пример хранимой процедуры, которая мне нужна, но я не знаю, как использовать параметры в этом случае внутри BCP:
CREATE PROCEDURE [dbo].[spDocumentiBCP_1]
(@idDoc INT,
@filename VARCHAR(150))
AS
BEGIN
DECLARE @sql VARCHAR(500)
SET @sql = 'BCP "SELECT binario FROM Database.dbo.TbDocumentibin where idDoc=@idDoc"
QUERYOUT e:\temp\sql2017\@nomefile -T -f
e:\TEMP\sql2017\blob1.fmt -S
PCNAME\sql2017 '
EXEC master.dbo.xp_CmdShell @sql
END
Я должен экспортировать файл-блоб из БД и сохранить его в выбранном каталоге (на сервере, на котором выполняется веб-приложение) с конкретным именем. Теперь проблема заключается в использовании параметров внутри хранимой процедуры с помощью команды BCP.