您可能无法给每个人的管理权限,但也许你可以:
创建一个特殊的用户,例如'WebTaskUser',有权从所需的视图中读取 并执行sp_makewebtask存储的 过程。你会授予一个用户权限 - 而不是给每个人。
然后创建一个允许用户执行的包装存储过程,同时包含对sp_makewebtask过程执行特定预定义调用的代码,每个视图只执行一次,仅为该单个sp_makewebtask过程授予执行权限,到一个用户帐户 - 并非所有的管理权限都被授予 - 只能执行到一个帐户:-)。
测试和优化存储过程根据自己的喜好从SSMS, 访问,VBA,或什么最适合你
当你快乐与PROC,授出任何进一步的必要 权限用户或用户角色,因此他们可以将其作为 好好执行。
`
--Example code to create user, and add permissions I might be able to add later
USE [some_database_x];
CREATE PROCEDURE EXPORT_VIEWS_TO_EXCEL
@TARGET_FOLDER NVARCHAR(100) DEFAULT 'C:\temp';
@FILE_TAG NVARCHAR(20) DEFAULT '';
@VIEWNAME NVARCHAR(100);
WITH EXECUTE AS 'WebTaskUser'
AS
BEGIN
IF @VIEWNAME IS NOT NULL
BEGIN
DECLARE @myOUTPUTFILE NVARCHAR(100);
SET @myOUTPUTFILE = @TARGET_FOLDER + '\' + @VIEWNAME + COALESCE(@FILE_TAG,'');
DECLARE @myQUERY NVARCHAR(150);
IF @VIEWNAME = 'mydb.dbo.firstview'
BEGIN
SET @myQUERY = 'Select * from mydb.dbo.firstview',
END
IF @VIEWNAME = 'mydb.dbo.secondview'
BEGIN
SET @myQUERY = 'Select * from mydb.dbo.secondview'
END
EXECUTE sp_makewebtask
@outputfile = @OUTPUTFILE,
@query = @myQUERY,
@colheaders = 1, @FixedFont = 0, @lastupdated = 0, @resultstitle='My Title'
END
RETURN 0;
END
GO
`
你有没有考虑在这些线路上的东西:http://stackoverflow.com/questions/10812424/writing-copyfromrecordset-to-range/10814046#10814046 ?使用从SQL Server链接的表或视图,您也可以使用各种传输选项,TransferSpreadsheet,Transfertext等。 – Fionnuala 2013-01-05 17:28:24