我如何从dplyr :: tbl获取详细的数据库错误消息?

Jon*_*son 8 r dplyr dbplyr

我正在使用R来绘制我从数据库中提取的一些数据(Stack Exchange数据转储,具体而言):

dplyr::tbl(serverfault, 
           dbplyr::sql("
select year(p.CreationDate) year,
       avg(p.AnswerCount*1.0) answers_per_question,
       sum(iif(ClosedDate is null, 0.0, 100.0))/count(*) close_rate
from Posts p
where PostTypeId = 1
group by year(p.CreationDate)
order by year(p.CreationDate)
"))
Run Code Online (Sandbox Code Playgroud)

该查询在SEDE上运行正常,但我在R控制台中收到此错误:

Error: <SQL> 'SELECT *
FROM (
select year(p.CreationDate) year,
       avg(p.AnswerCount*1.0) answers_per_question,
       sum(iif(ClosedDate is null, 0.0, 100.0))/count(*) close_rate
from Posts p
where PostTypeId = 1
group by year(p.CreationDate)
order by year(p.CreationDate)
) "zzz11"
WHERE (0 = 1)'
  nanodbc/nanodbc.cpp:1587: 42000: [FreeTDS][SQL Server]Statement(s) could not be prepared. 
Run Code Online (Sandbox Code Playgroud)

我估计"声明无法准备".意味着SQL Server由于某种原因不喜欢查询.不幸的是,它并没有暗示出现了什么问题.根据错误消息,在查询了一点后,我注意到它被包含在子选择中.复制并执行由链中的一个库构建的完整查询,SQL Server为我提供了这个更具信息性的错误消息:

除非还指定了TOP,OFFSET或FOR XML,否则ORDER BY子句在视图,内联函数,派生表,子查询和公用表表达式中无效.

现在解决方案很明显:删除(或注释掉)order by子句.但是R控制台中的详细错误消息在哪里?我正在使用Rstudio,如果重要的话.如果我可以在我正在处理的代码旁边获得完整的异常,那么它将帮助我更快地修复bug.(而且为了清楚起见,我经常从dplyr :: tbl获得神秘的错误,并且通常使用二进制搜索调试来修复它们.)