标签: invalid-object-name

使用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
查看次数

无效的对象名称“CHANGETABLE”

我刚刚通过打开ALLOW_SNAPSHOT_ISOLATION来启用更改跟踪,执行此查询以打开数据库的更改跟踪

ALTER DATABASE [DatabaseName] 
SET CHANGE_TRACKING = ON (CHANGE_RETENTION = 2 DAYS,AUTO_CLEANUP = ON)
Run Code Online (Sandbox Code Playgroud)

并最终将其启用

ALTER TABLE [TableName] 
ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = OFF)
Run Code Online (Sandbox Code Playgroud)

现在当我打电话时

SELECT * 
FROM CHANGETABLE(CHANGES, 0)
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

对象名称“CHANGETABLE”无效。

数据库版本是SQL Server 2012。如何CHANGETABLE无效以及如何使其工作?我认为它可以开箱即用,因为它是一个系统功能。它甚至在 SQL Server Management Studio 中突出显示。我在打开更改跟踪和调用之间修改了一些数据CHANGETABLE()

t-sql sql-server change-tracking invalid-object-name sql-server-2012

4
推荐指数
1
解决办法
1708
查看次数

恢复SQL Server 2008数据库后,“无效的对象名称”

我要切换虚拟主机并备份数据库。由于新主机的某些限制,我无法还原.bak文件,只能发送给他们,以便他们还原。一旦他们恢复了它,我就运行了我的应用程序

System.Data.SqlClient.SqlException: Invalid object name "<table name>"

每当我尝试从应用程序查询表时。但是,使用相同的用户名和密码通过Management Studio登录并查询表没有问题。

我正在使用SQL Server 2008运行MVC 3站点

有谁知道为什么在尝试运行我的应用程序时为什么会出现这些异常?

编辑:

更多信息:

我在旧数据库中使用的用户名是Kimpo54321,因此我创建的所有表都带有这样的前缀Kimpo54321。因此,我尝试将其添加到我的Web应用程序中的第一个查询中,这样就可以SELECT * FROM Kimpo54321.<tablename>使查询毫无例外地通过。

现在,我不必在应用程序中的前面为每个表名加上前缀,也不想将其应用于所有查询。有没有办法解决这个问题?

编辑:

我运行此命令是为了为每个表获取一条更改模式行,并将所有内容更改为dbo它,最后使其正常工作。thnx aaron为我指出了正确的方向,找到了答案

SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + o.Name 
    FROM sys.Objects o 
    INNER JOIN sys.Schemas s on o.schema_id = s.schema_id 
    WHERE s.Name = 'yourschema'
    And (o.Type = 'U' Or o.Type = 'P' Or o.Type = 'V')
Run Code Online (Sandbox Code Playgroud)

sql-server asp.net exception sql-server-2008 invalid-object-name

2
推荐指数
1
解决办法
3655
查看次数