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

Gau*_*mal 3 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'))
Run Code Online (Sandbox Code Playgroud)

输出:

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

SELECT 
    --GL1.[Business Unit],
    GL1.[Company Code],
    GL1.Description,
....
Run Code Online (Sandbox Code Playgroud)

如果您注意到,名称更改为"SPH_F2V_VEB_FIN-04-GLA-07 - 已撤消和取消GL过帐",将"和"更改为"&".起初它似乎是一个sql转换问题或与"和"相关的东西,但我用"和""&"尝试了几个视图,它们似乎按预期工作.

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

Mar*_*ith 5

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

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

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