2012-06-25 38 views
0

我已经创建了一个存储过程来将Excel文件转换为SQL Server 2008 R2。当我在Visual Studio 2008中测试它时,它完美运行。ASPX中的SQL存储过程没有执行

但是,当我在使用SqlDataSource控件的ASPX页面中使用存储过程时,存储过程不会执行并且不会发生任何转换,尽管没有错误消息显示。下面是ASPX代码:

<%@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" 
     AutoEventWireup="false" CodeFile="Processing.aspx.vb" Inherits="_Default" %> 
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
</asp:Content> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
     SelectCommand="MyStoredProcedure" 
     SelectCommandType="StoredProcedure"> 
    </asp:SqlDataSource> 
</asp:Content> 

的SQL Server存储过程的代码:

ALTER PROCEDURE dbo.MyStoredProcedure 
AS 

SELECT * 
INTO [dbo].[MySQLtable] 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=C:\MyExceltable;', 
       'SELECT * FROM [Sheet1$]') 
RETURN 

任何帮助将得到高度赞赏。

+2

'C:MyExceltable' < - 这句法似乎有点狡猾 –

回答

1

是否从服务器提供aspx页面?如果是这样,文件(MyExceltable)需要在服务器上而不是在用户的机器上。

+0

是在文件服务器也是如此。 – user1479393

+0

我还注意到,当我运行该页面时,我根本没有发现任何暂停,这意味着转换不会发生,因为它需要一点时间才能将Excel文件转换为SQL表格。另外,当我检查表格属性时,时间/日期没有改变。我为什么确信转换没有发生。 – user1479393

+0

您的存储过程是一个插入命令。 它将Excel文件中的记录插入表中。 它不适合选择命令。你应该做的是将存储过程改为SELECT * FROM OPENROWSET ... – viclim

1

您有:

SelectCommand="MyStoredProcedure" 

在你的SQL脚本来看,这应该是:

SelectCommand="StoredProcedureExcelToSQL" 
+0

已编辑的SQL脚本。谢谢。但仍然不行。 :( – user1479393