表隐藏在 SQL Server 数据库中?

问题描述 投票:0回答:3

我突然将数据传输到表格中,我遇到了一个我职业生涯中从未见过的疯狂问题。

消息 208,级别 16,状态 1,第 1 行
对象名称“dbo.Table_Report”无效。

然后我尝试创建一个具有相同名称的表,但我又遇到了休闲错误

消息 2714,级别 16,状态 6,第 2 行
数据库中已经有一个名为“Table_Report”的对象。

出了什么问题我需要尽快将数据发送到表中,但我做不到,至少我不能删除表

无法删除表 'Table_Report',因为它不存在或您没有权限。

注意:我对数据库有管理员权限。

你们能看看哪里出了问题吗??

sql-server sql-server-2008 tsql sql-server-2008-r2
3个回答
0
投票
select Schema_name(schema_id) from sys.tables where name ='Table_report';

结果是哪个模式? 如果你想移动它,请这样做:

ALTER SCHEMA dbo
TRANSFER SchemaSource.Table_report;

http://msdn.microsoft.com/en-us/library/ms173423%28v=sql.105%29.aspx


0
投票

我们最近在工作中遇到了这个问题,可能发生的事情是有人在他们的用户名下创建了一个名为 Table_report 的表(而不是作为 DBO - 数据库所有者)。你应该尝试:

Drop Table Table_report

然后重新运行您的查询。

编辑:您应该能够运行以下查询以查找数据库中的所有现有表并找出附加到表的用户名

select ss.name ,st.* from sys.tables st
inner join sys.schemas ss
 on ss.schema_id = st.schema_id

0
投票

我知道这已经有将近十年的历史了,但希望它能帮助其他在搜索过程中登陆它的人。

Table_Report 可以是任何类型的对象。搜索 sys.objects(首先)。如果有一个名为“Table_Report”的对象,这也将返回模式名称,“type_desc”列将让您知道对象类型是什么。当然,代码需要在你要搜索的数据库中执行。

 SELECT SchemaName = OBJECT_SCHEMA_NAME(object_id)
        ,*
   FROM sys.objects
  WHERE name = 'Table_Report'
;

我也同意@GBoehm 在此线程的评论中所说的内容。在确定不会让其他人的东西失控之前,不要丢弃任何物品。您不希望您的工作成为生成简历的事件。 :D

© www.soinside.com 2019 - 2024. All rights reserved.