【问题标题】:SQL Server - View name in definition is different from actual view nameSQL Server - 定义中的视图名称与实际视图名称不同
【发布时间】:2017-04-22 11:53:33
【问题描述】:

我在 SQL Server 中遇到了一个奇怪的问题。我在数据库中有一个名为“SPH_F2V_VEB_FIN-04-GLA-07 - Reversed and Canceled GL Postings”的视图,但是当运行以下查询时,我得到了一个名称已更改的定义。

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 过帐”,将 “and” 更改为 “&”。一开始好像是sql转换的问题或者与"and"有关的东西,但是我用"and""&"试了几个视图>,他们似乎按预期工作。

那么,这怎么可能发生呢?我什至对 DB 如何允许这样做持怀疑态度。任何想法将不胜感激!

【问题讨论】:

  • @GordonLinoff - 我检查了数据库,带有“&”的视图不存在。所以这只是一种观点。

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


【解决方案1】:

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

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

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

【讨论】:

  • 你是对的。所以,他们说,警告出现在咒语之后
猜你喜欢
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多