以下两个都给了我错误消息Invalid object
,但它们是正确的名称。任何想法可能是什么问题?
select * from TrainingDB.FileTables.employes
Msg 208,Level 16,State 1,Line 1 无效的对象名称' TrainingDB.FileTables.employes'。
select * from employes
Msg 208,Level 16,State 1,Line 1 无效的对象名称'雇员'。
我正在使用2014年开发版
更新 我断开连接,重新连接一个新的查询,这次是通过右键单击TrainingDB,而不是我之前做过的新查询的主要按钮,现在就是intellisense现在正在进行的选择*来自雇员现在可以工作。
谢谢大家,如果没有你的帮助,我可能会被困住几个小时。
答案 0 :(得分:1)
看起来您正在错误的服务器上执行查询。因此,您可以检查执行查询的服务器。(假设您在问题中提到的数据库和表名称是正确的。)
答案 1 :(得分:1)
检查数据库表名称拼写。并检查您正在使用的数据库。您可以通过
进行检查 DatabaseName.dbo.tablename
你也应该在sql server management studio中使用Intellisense。为了避免这些问题。您可以在dbforge-sqlcomplete
下载它答案 2 :(得分:1)
错误消息是直的。引擎在该本地PERIOD中找不到该表。
如果对象退出有疑问,可以试试这个片段:
use TrainingDB
GO
declare
@columnName nvarchar(128) = N'MyColumnName'
,@tableName nvarchar(128) = N'employes'
,@schemaName nvarchar(128) = N'FileTables'
select su.name, so.name--, sc.name
from sys.sysusers su
join sys.sysobjects so on so.uid = su.uid
-- join sys.syscolumns sc on sc.id = so.id
where so.xtype = N'U'
and su.name = @schemaName
and so.name = @tableName
-- and sc.name = @columnName
正如您所看到的,这可用于测试架构,表格以及是否删除注释,即使列存在。
如果你仍然找不到对象,之前的答案已经指出了一些动机:错误的服务器,错误的数据库,错误的数据库版本(缺少表格),整理使对象名称区分大小写,错误拼写,缺乏权限等