使用BCP导出为CSV的存储过程

时间:2015-02-03 23:35:53

标签: sql-server stored-procedures asp-classic export-to-csv bcp

我需要在我们的网站上创建用户数据的按需导出。用户单击导出按钮,经典ASP代码执行通过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='''+@randomString+'''" '
                    + '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,并且授予从网站连接到SQL的帐户的权限。我有点不知道如何继续。

是否可以在对BCP的调用中包含sysadmin凭据?有一些更容易的选择或解决方法吗?

1 个答案:

答案 0 :(得分:0)

我最终选择了一条完全不同的路线。我从纯ASP代码创建了CSV文件,只使用sproc来返回数据。