我需要在我们的网站上创建用户数据的按需导出。用户单击导出按钮,经典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凭据?有一些更容易的选择或解决方法吗?
答案 0 :(得分:0)
我最终选择了一条完全不同的路线。我从纯ASP代码创建了CSV文件,只使用sproc来返回数据。