0

Мне нужно создать экспорт пользовательских данных по требованию на нашем веб-сайте. Пользователь нажимает кнопку экспорта, классический ASP-код выполняет хранимую процедуру, которая генерирует файл через BCP, и пользователю предлагается загрузить его.хранимая процедура для экспорта в CSV с BCP

Я создал sproc, и его работа безупречно выполняется в SSMS. Уловка позволяет ему работать с сайта с ограниченными правами, предоставляемыми учетной записи, подключающейся к SQL с сайта. Вот отрывок:

-- INSERT TEMP DATA 
    INSERT INTO t_users_tempExport 
     SELECT * FROM #tempExport 

    -- show advanced options 
    EXEC sp_configure 'show advanced options', 1 
    RECONFIGURE 

    -- enable xp_cmdshell 
    EXEC sp_configure 'xp_cmdshell', 1 
    RECONFIGURE 

    -- hide advanced options 
    EXEC sp_configure 'show advanced options', 0 
    RECONFIGURE 


-- EXPORT TO CSV 
    DECLARE @sql varchar(8000) 
    SELECT @sql = 'bcp "select * FROM DBNAME.dbo.tempExport WHERE scopeID='''[email protected]+'''" ' 
        + 'queryout C:\temp\exportResidents_'+CONVERT(varchar(max),@userID)+'.csv -c -t, -T -S' 
        + @@servername 
    EXEC master..xp_cmdshell @sql 


-- RETURN FILE NAME 
    SELECT 'C:\temp\export_'+CONVERT(varchar(max),@userID)+'.csv' AS fileName 

Вопрос заключается в том, что я не могу позволить xp_cmdshell с privledges предоставленных учетной записи, которая соединяется с SQL с сайта. Я как бы не понимаю, как действовать дальше.

Можно ли включить учетные данные sysadmin в вызове BCP? Есть ли более простой вариант или работа вокруг?

+0

Не удалось ли вызывать команду BCP из ASP вместо вызова хранимой процедуры? – Spock

ответ

0

В итоге я перешел совсем другим путем. Я создал CSV-файл из чистого ASP-кода, используя sproc для возврата данных.

Смежные вопросы