Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 将查询结果集从SQL Server 2005导入MS Excel_Sql Server 2005_Excel - Fatal编程技术网

Sql server 2005 将查询结果集从SQL Server 2005导入MS Excel

Sql server 2005 将查询结果集从SQL Server 2005导入MS Excel,sql-server-2005,excel,Sql Server 2005,Excel,我尝试执行此存储过程,该过程旨在将已创建的excel工作表的格式复制到另一个excel工作表中;前者作为模板。然后,存储过程将使用SQL查询的结果集填充新的excel工作表 执行时,会出现以下错误: Insert ExcelSource...[ExcelTable$] ( A,B,C ) select convert(varchar(200),USER_ID), FIRST_NAME, Convert (varchar(20),CREATEDTIME) from SERV..AaU

我尝试执行此存储过程,该过程旨在将已创建的excel工作表的格式复制到另一个excel工作表中;前者作为模板。然后,存储过程将使用SQL查询的结果集填充新的excel工作表

执行时,会出现以下错误:

    Insert ExcelSource...[ExcelTable$]  ( A,B,C ) select convert(varchar(200),USER_ID), FIRST_NAME, 
Convert (varchar(20),CREATEDTIME) 
from SERV..AaUser
OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "ExcelSource" returned message "Cannot start your application. The workgroup information file is missing or opened exclusively by another user.".
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "ExcelSource" reported an error. Authentication failed.
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "ExcelSource".
存储过程的语法为:

    Create proc sp_write2Excel (@fileName varchar(100),

                                   @NumOfColumns tinyint,

                                   @query     varchar(200))

as

begin

        declare @dosStmt  varchar(200) 

        declare @tsqlStmt varchar(500) 

        declare @colList  varchar(200) 

        declare @charInd  tinyint 



        set nocount on



        -- construct the  columnList A,B,C ... 

        -- until Num Of columns is reached.



        set @charInd=0

        set @colList = 'A'

        while @charInd < @NumOfColumns - 1

        begin 

          set @charInd = @charInd + 1

          set @colList = @colList + ',' + char(65 + @charInd)

        end 



        -- Create an Empty Excel file as the target file name by copying the template Empty excel File

        set @dosStmt = ' copy C:\emp\empty.xls ' + @fileName

        exec master..xp_cmdshell @dosStmt



        -- Create a "temporary" linked server to that file in order to "Export" Data

        EXEC sp_addlinkedserver 'ExcelSource', 

        'Jet 4.0',

        'Microsoft.Jet.OLEDB.4.0',

        @fileName,

        NULL,

        'Excel 5.0'



        -- construct a T-SQL statement that will actually export the query results

        -- to the Table in the target linked server 

        set @tsqlStmt = 'Insert ExcelSource...[ExcelTable$] ' +  ' ( ' + @colList + ' ) '+ @query



        print @tsqlStmt



        -- execute dynamically the TSQL statement

        exec (@tsqlStmt)



        -- drop the linked server 

        EXEC sp_dropserver 'ExcelSource' 

        set nocount off

end 
Create proc sp_write2Excel(@fileName varchar(100),
@努莫夫丁,
@查询varchar(200))
像
开始
声明@dossmt varchar(200)
声明@TSQLSMTVARCHAR(500)
声明@colList varchar(200)
声明@charInd tinyint
不计较
--构造列列表A、B、C。。。
--直到达到列数。
设置@charInd=0
set@colList='A'
而@charInd<@NumOfColumns-1
开始
设置@charInd=@charInd+1
设置@colList=@colList+,'+char(65+@charInd)
终止
--通过复制模板空Excel文件,创建一个空Excel文件作为目标文件名
set@dossmt='复制C:\emp\empty.xls'+@fileName
exec master..xp_cmdshell@dossmt
--创建一个链接到该文件的“临时”服务器,以便“导出”数据
EXEC sp_addlinkedserver“ExcelSource”,
“Jet 4.0”,
“Microsoft.Jet.OLEDB.4.0”,
@文件名,
无效的
“Excel 5.0”
--构造一个实际导出查询结果的T-SQL语句
--到目标链接服务器中的表
set@tsqlsmt='Insert ExcelSource…[ExcelTable$]'+'('+@colList+')+@query
打印@tsqlsmt
--动态执行TSQL语句
exec(@tsqlsmt)
--删除链接的服务器
EXEC sp_dropserver“ExcelSource”
抵消
终止
非常感谢您的听众和期待的帮助

干杯,
Tunde

Excel是否与SQL Server实例安装在同一台计算机上?有可能飞机司机的办公室不见了

编辑:


我想我误读了这篇文章——听起来文件已经打开了。Excel文件一次只能由一个用户打开,SQL Server要求以独占方式访问此文件。使用可能有助于确定是什么捆绑了文件。

是的,它们都安装在同一台机器上。谢谢,我已作为SQl sERVER上的sa和计算机上的管理员登录。