none
openrowset在存储过程直接运行可以,在UI-BLL-DAL则提示Ad Hoc Distributed Queries??--在线等 RRS feed

  • 问题

  • //--存储过程代码
    INSERT INTO test(tID,sName,pwd)
        SELECT [col1],[col2],dbo.fnPwdToMD5(3) FROM OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;HDR=Yes;IMEX=1;Database=D:\Info.xls', 'select * from [Sheet1$]')  
     
    //--errorCode:-----------------------

    行 2492:            Dim returnValue As Object
    行 2493: Try
    行 2494: returnValue = command.ExecuteScalar
    行 2495: Finally
    行 2496: If (previousConnectionState = System.Data.ConnectionState.Closed) Then



    设置了

    Ad Hoc Distributed Queries

    也不行??
    为什么??
    直接运行存储过程没问题,在BLL调用就错误??
    我用的是SQLEXPRESS
    2010年2月5日 14:08

全部回复

  • 自己顶

    google上的解决办法:在sql   server   2005   上使用openrowset需要打开2个开关:  
       
      1.   在注册表查找DisallowAdhocAccess   置为1  
      2.   打开ad   hoc高级选项  
       
      sp_configure   'show   advanced   options',   1;  
      GO  
      RECONFIGURE;  
      GO  
      sp_configure   'Ad   Hoc   Distributed   Queries',1  
      GO  
      RECONFIGURE;  
      GO  
      可惜还是不行
    2010年2月5日 14:27
  • 你好!

    错误信息是什么? OleDb 可以直接操作 excel  为什么不使用这个呢?

    知识改变命运,奋斗成就人生!
    2010年2月6日 2:11
    版主
  • 大哥!!!给我做主!!!

    我已经将 'Ad Hoc Distributed Queries'打开了 ,就是不行,直接运行存储过程没有问题(:

    windowsXP Pro+VS2005+SQLEXPRESS2005

    感觉代码简单,否则要打开Excel数据,读取,插入....

    而且容易出现数据类型错误,(数值,字符串同列)

    错误如下:

    “/”应用程序中的服务器错误。

    SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Data.SqlClient.SqlException: SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
    2010年2月6日 8:39