将表重命名为sp_help,无法重命名

spf*_*ler 8 sql sql-server sql-server-2005

不知何故,我们的一个表被意外地重命名为'sp_help'.

我们尝试使用sp_rename将其重命名为上一个表名,但是我们收到以下错误:

Msg 15225, Level 11, State 1, Procedure sp_rename, Line 332
No item by the name of 'MyDatabase.dbo.sp_help' could be found in the current database 'MyDatabase', given that @itemtype was input as '(null)'.
Run Code Online (Sandbox Code Playgroud)

我们还尝试在管理工作室中直接重命名它,但错误相同.有没有其他方法可以将此表重命名为以前的名称?

Ava*_*rkx 18

更改dbo.sp_help对象的元数据并执行SWITCH.

这是一个应该让你入门的测试用例:

CREATE TABLE dbo.t_Foo
(
    Bar         BIT
);
GO

EXECUTE dbo.sp_rename @objname = 'dbo.t_Foo', @newname = 'sp_help';
GO

CREATE TABLE dbo.t_Foo
(
    Bar         BIT
);
GO

ALTER TABLE [dbo].[sp_help]
SWITCH TO dbo.t_Foo;
GO

SELECT  *
FROM    dbo.t_Foo;
GO

DROP TABLE [dbo].[sp_help]
GO
Run Code Online (Sandbox Code Playgroud)

  • +1工作正常.无需弄乱DAC和系统表. (5认同)