我们有一个Access应用程序前端连接到SQL Server 2000数据库。 我们希望能够以编程出口的一些看法,以任何格式,我们可以(理想的Excel,但分隔CSV /标签是罚款)的结果。 到现在为止,我们只是打F11,打开了看法,并创下文件 - >另存为,但我们开始得到的结果有超过16,000的结果,这不能出口。
我想某种服务器端的存储过程,我们可以触发将做到这一点。 我知道,做这个sp_makewebtask过程,但它需要在服务器上的管理权限,原因很明显,我们不能把那个给大家。
有任何想法吗?
你可能不能够给每个人的管理权限,但也许你可以:
创建一个特殊的用户,例如“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
`
如果你想要做的访问,你可以查看链接作为一个链接表,然后使用TransferSpreadsheet方法的一切,你可以说,“表”导出为CSV文件
编辑:
当你想要做服务器端检查了这一点
http://www.mssqltips.com/tip.asp?tip=1633
我以前用这个和它的工作就好了
你可能想看看SSIS - 它允许创建服务器端软件包将数据导出在服务器端。
另一种方法是用鼠标右键单击您的数据库,并通过数据导出向导运行(这是使用下面SSIS)。
另一个选择是创建命令行实用程序(SQLCMD)将数据导出到平面文件。