我的数据库中有一个表格显示为"revised-alert"
(带双引号)。显而易见的是,连字符不应该用在表名中,但是我已经吸取了教训,但我希望继续重命名或从中获取数据并放弃它。
尝试重命名表并查询表时出现以下错误:
重命名错误消息:
错误:没有名称的项目 'DB_12345_dev.dbo。“修订警报”'可以在当前找到 数据库'DB_12345_dev',假设@itemtype输入为'(null)'。 错误代码:15225
exec sp_rename
@objname = 'DB_12345_dev.dbo."revised-alert"',
@newname = 'revisedalert'
QUERY ERROR MESSAGE:
错误:无效的对象名称“DB_12345_dev.dbo.revised-alert”。错误 代码:208
select *
from DB_12345_dev.dbo."revised-alert"
答案 0 :(得分:1)
我在我的测试实例中创建了一个"revised-alert"
表,然后运行了profiler来捕获执行的命令,如果我通过右键单击重命名表 - >在SSMS中重命名。看起来您可能需要在包含引号的名称周围添加对象分隔符[
]
。
/* create a test table for demonstration purposes */
select 1 as val into dbo.["revised-alert"]
/* select to show table exists */
select * from dbo.["revised-alert"]
EXEC dbo.sp_rename @objname = N'[dbo].["revised-alert"]', @newname = N'revisedalert', @objtype = N'OBJECT'
/* select from renamed table */
select * from dbo.revisedalert
答案 1 :(得分:0)
您是否尝试过以下操作:
exec sp_rename @objname = 'DB_12345_dev.dbo.[revised-alert]', @newname = 'revisedalert'
答案 2 :(得分:0)
如果您只想从此表中获取数据,那么您可以使用简单的
来完成select * from "revised-alert"
OR 最好使用此
创建一个包含“modified-alert”中所有数据的新表select * into NewTable from "revised-alert"