SQL Schema更改为"dbo.dbo".改变表名后

use*_*630 -1 sql schema winsql

我试图用一个新的表名来改变一个表.我成功更改了名称,但架构也从"dbo"更改.成为"dbo.dbo.".当我尝试从新表中选择数据时,它在消息框中显示该表无效,因此我无法对新表执行任何操作.

有谁知道如何将表格更改回原始架构?我使用WINSQL和sql server 2008.谢谢,

swa*_*eck 11

我的猜测是你实际上只是将表重命名[dbo.tablename]为其完全限定名称[dbname].[dbo].[dbo.tablename].当您右键单击以重命名SSMS中的表名时会发生这种情况,并且我认为WinSQL正在执行相同的操作(尽管我不知道为什么在包含SSMS时使用该工具).右键单击时,它会删除架构名称,这会让您认为您需要完全限定新名称,但事实并非如此.

你应该是安全的右键点击表名称重命名为新表名.

但是,您可以运行:

select * 
    from sys.schemas
 where name = 'dbo.dbo';
Run Code Online (Sandbox Code Playgroud)

只是为了确认您没有创建新架构.

编辑

为了完整起见,我将纳入@billinkc的评论:

运行此查询以获取表的确切模式:

select 
    s.name as SchemaName, 
        t.name as TableName
from sys.schemas s
    join sys.tables t 
    on s.schema_id = t.schema_id
where t.name = 'tablename'
Run Code Online (Sandbox Code Playgroud)

  • +1我认为这可能是最安全的假设,也是唯一一个基于问题中的信息对我有意义的假设. (2认同)
  • 或者,`SELECT S.name AS SchemaName,T.name As TableName FROM sys.schemas AS S INNER JOIN sys.tables AS T ON T.object_id = S.object_id WHERE T.name like'%MyTable'`将显示精确架构和表的名称 (2认同)