小编Sas*_*aei的帖子

使用ODBC从R查询SQL Server数据库时,对象名称无效

我已经在R中建立了连接:

conn <- dbConnect(odbc::odbc(),
                 Driver = "SQL Server",
                 Server = "...",
                 Database = "AdventureWorks2012")
Run Code Online (Sandbox Code Playgroud)

默认的ODBC驱动程序是AdventureWorks2012。我可以看到数据集很好,例如,以下代码可以正常运行:

dbGetQuery(conn, "SELECT TOP 10 * FROM Person.Person")
Run Code Online (Sandbox Code Playgroud)

另一方面,跑步

dbReadTable(conn, "Person.Person")
Run Code Online (Sandbox Code Playgroud)

产量:

Error: <SQL> 'SELECT * FROM "Person.Person"'
  nanodbc/nanodbc.cpp:1587: 42S02: [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Person.Person'. 
Run Code Online (Sandbox Code Playgroud)

相似,正在运行

data <- tbl(conn, "Person.Person")
Run Code Online (Sandbox Code Playgroud)

产量:

Error: <SQL> 'SELECT *
FROM "Person.Person" AS "zzz12"
WHERE (0 = 1)'
  nanodbc/nanodbc.cpp:1587: 42S02: [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'Person.Person'.
Run Code Online (Sandbox Code Playgroud)

另外,我很困惑WHERE (0 = 1):无法弄清楚它的来源!!!

(1)该表确实存在于数据库中。(2)我已经用正确的模式限定了名称。(3)我已将ODBC中的默认数据库设置为AdventureWorks2012。

感谢您的帮助和见解。谢谢 ...

> …
Run Code Online (Sandbox Code Playgroud)

sql sql-server odbc r invalid-object-name

5
推荐指数
1
解决办法
2423
查看次数

F#查询表达式:不能使用"for"!

无论出于何种原因,我都不能在查询表达式中使用"for"构造.我得到的是以下错误.代码我正是我以前选择的工作 - >"错误:只有在计算表达式构建器定义'For'方法时才可以使用此控件构造"

#r "System.Data.Linq.dll"
#r "FSharp.Data.TypeProviders.dll"

open FSharp.Linq
open FSharp.Data.TypeProviders

[<Literal>]
let connectionString' = @"
    data source = ...;
    initial catalog = NORTHWND;
    Integrated Security = SSPI"

type NorthwndDb =
    SqlDataConnection<connectionString', Pluralize = true>

let db' = NorthwndDb.GetDataContext()

let curstomerSortedByCountry =
    query { for c in db'.Customers do
                sortBy c.Country
                select (c.Country, c.CompanyName) } 
    |> Seq.cache
Run Code Online (Sandbox Code Playgroud)

f# for-loop query-expressions

3
推荐指数
1
解决办法
111
查看次数