Sql server 使用RODBC时返回字符(0)

Sql server 使用RODBC时返回字符(0),sql-server,r,rodbc,Sql Server,R,Rodbc,我试图将一些数据从SQL数据库直接导入R。我已经建立了连接,没有问题,但是提取数据有点困难。我会尽可能清楚地说明这一点,因为由于一些敏感信息,我认为我无法使其重现。当我运行以下行时,我得到了我想要的数据: myconn <- odbcConnect("COMPANYNAME", uid = "support", pwd = "password111?") sqlQuery(myconn, "SELECT * FROM Metrics") 其中companyname\u clientnam

我试图将一些数据从SQL数据库直接导入R。我已经建立了连接,没有问题,但是提取数据有点困难。我会尽可能清楚地说明这一点,因为由于一些敏感信息,我认为我无法使其重现。当我运行以下行时,我得到了我想要的数据:

myconn <- odbcConnect("COMPANYNAME", uid = "support", pwd = "password111?")
sqlQuery(myconn, "SELECT * FROM Metrics")
其中companyname\u clientname是数据库。我得到的不是我想要的数据,而是

character(0)

我知道引入“USE companyname\u clientname”是个问题,我只是不知道为什么或者如何解决它。如果有什么可以让您更容易地帮助我的话,请告诉我,我会解决的。

我也有同样的问题。
字符(0)
似乎是使用SQL的循环的结果,RODBC没有完成循环


正确的解决方案是在SQL语句的开头添加
setnocounton
。如果是同一个问题,它就应该这样做。

如果其他人遇到此问题,
字符(0)
也可能是SQL中警告的结果,例如

Warning: Null value is eliminated by an aggregate or other SET operation.

这可以通过在SQL脚本的顶部包含
将ANSI\U警告设置为OFF
来解决。

我也遇到了同样的问题,并发现有两个原因:

  • 正如其他人指出的,在查询开始时设置NOCOUNT-ON需要
  • 仅此一点并不能解决返回字符(0)的问题。我发现我的SQL查询还有一个输出变量的打印语句,用于调试。删除PRINT语句后,成功返回了一个输出,在我的例子中是一个临时表
    希望这能帮助别人

    ODBC连接将只支持某种“最低公分母”SQL语法。我对sql server不是很熟悉;companyname\u clientname.Metrics的
    是否等效?不幸的是,它不是等效的。你所说的“最小公分母”SQL语法是什么意思?我的意思是ODBC实际上适用于所有的SQL数据库,所以特定于某个数据库的许多语言扩展都不起作用。除了简单的旧选择、插入、更新和删除之外,我不会指望任何东西。如果任何东西都能起作用,我猜它会改变你在
    odbcConnect
    中连接到的数据库的名称,但那只是猜测。是的,我会尝试通过
    odbcConnect
    我实际上已经尝试过了,它在某处的另一个帖子里。不幸的是,它没有解决我的问题。另一个原因是
    USE
    语句对我有效。谢谢。对我来说,这是存储过程中的
    打印
    语句。
    
    Warning: Null value is eliminated by an aggregate or other SET operation.