你看看你的存储过程能否用下面的语句调用, 如果可以的话, 便氢下面的调用语句做为我的存储过程的参数select * from openrowset('sqloledb' ,'Trusted_Connection=yes' ,'exec 库名..存储过程名')
谢谢老大,我已经搜索过这个方法,并使用过了,但是还是提示出错,我的语句是:exec p_exporttb @sqlstr='select * from openrowset(''sqloledb'',''Trusted_Connection=yes'',''exec qq..pr_getemail'')',@path='f:\zwmail\',@fname='sss.xls',@sheetname='ss'出错提示是: --------------------------------------(所影响的行数为 1 行)服务器: 消息 7391,级别 16,状态 1,行 1 该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。 OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。 [OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]
只不过,能否如此执行:
exec p_exporttb @sqlstr='exec pr_getemail'@sqlstr='exec pr_getemail',@path='f:\zwmail\',@fname='''@Vshpchd+''''.xls',@sheetname=''这样执行总是提示EXEC错误.
似乎不能用EXEC执行存储过程代替查询?
那如何把EXEC PR_GETEMAIL的结果导出为EXECL表格呢?
,'Trusted_Connection=yes'
,'exec 库名..存储过程名')
--------------------------------------(所影响的行数为 1 行)服务器: 消息 7391,级别 16,状态 1,行 1
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a]。
[OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]