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

时间:2017-04-22 11:53:33

标签: sql sql-server sql-server-2014

我在SQL服务器上遇到了一个奇怪的问题。我在db中有一个名为“SPH_F2V_VEB_FIN-04-GLA-07 - 反转和取消GL过帐”的视图,但是当运行以下查询时,我得到了一个名称已更改的定义。

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转换问题或与“和”相关的东西,但我尝试了几个视图“和”“&”,他们似乎按预期工作。

那么,这可能会发生什么?我甚至对DB如何允许这一点持怀疑态度。任何想法都会深深感激!!

1 个答案:

答案 0 :(得分:5)

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

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

  

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