SQL Server - 定义中的视图名称与实际视图名称不同

问题描述:

我在SQL服务器中遇到了一个奇怪的问题。我有一个名为“SPH_F2V_VEB_FIN-04-GLA-07 - 反转和取消GL张贴”的数据库视图,但是当运行以下查询时,我得到了一个名称已更改的定义。SQL Server - 定义中的视图名称与实际视图名称不同

SELECT object_definition (OBJECT_ID(N'dbo.SPH_F2V_VEB_FIN-04-GLA-07 - Reversed and Cancelled GL Postings')) 

输出:

CREATE VIEW [dbo].[SPH_F2V_VEB_FIN-04-GLA-07 - Reversed & Cancelled GL Postings] AS 

SELECT 
    --GL1.[Business Unit], 
    GL1.[Company Code], 
    GL1.Description, 
.... 

如果你注意到,名称变更为 “SPH_F2V_VEB_FIN-04-GLA-07 - 反&取消GL过帐”,改变“和”“&”。起初,这似乎是关系到“和”一个SQL转换问题,或者什么的,但是我试了几个观点与“和”“&”,他们似乎工作正常。

那么,这可能会发生什么?我甚至对数据库如何允许这一点持怀疑态度。任何想法将深受赞赏!

+0

@GordonLinoff - 我检查了数据库,'&'的视图不存在。所以这只是一个观点。 –

如果您使用sp_rename重命名视图,可能会发生这种情况。

最好删除并创建它来重命名它。

重命名存储过程,函数,视图或触发器不会 变化在sys.sql_modules目录视图的定义 列中的相应对象名的名称。因此,我们建议 sp_rename不能用于重命名这些对象类型。相反,请删除 并用其新名称重新创建该对象。

+0

你说得对。所以,他们说,**警告发生在法术之后** –