Como o nome do modo de exibição ficar fora de sincronia com a definição do modo de exibição?

StackOverflow https://stackoverflow.com//questions/10706260

  •  13-12-2019
  •  | 
  •  

Pergunta

enter image description here

Eu rastreou um erro no meu sistema esta anomalia - pelo menos é uma anomalia no meu sistema, de 15 de catálogos com o semelhante, mas desigual esquemas.

O que faz com que o [TABLE_NAME] em [INFORMATION_SCHEMA].[VISTAS] para ser diferente do valor em [VIEW_DEFINITION]?

Isso me faz pensar que eu não entendo algo sobre pontos de Vista ou as Tabelas de Sistema do SQL Server....

Foi útil?

Solução

Se tiver mudado o nome do modo de exibição, o nome muda, mas a definição não.

Você deve fazer isso como um DROP/CREATE ou um ALTER script, não com o botão direito do mouse ou usando as sp_rename.

Na verdade este é o comportamento esperado para todos os módulos.Aqui está um teste rápido usando um simples procedimento armazenado:

CREATE PROCEDURE dbo.proc_foo
AS
    SELECT 1;
GO

-- rename it to proc_bar

EXEC sys.sp_rename N'dbo.proc_foo', N'proc_bar', N'OBJECT';
GO

-- check the definition from various sources

SELECT od = OBJECT_DEFINITION(OBJECT_ID(N'dbo.proc_bar')),
    info_s = (SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES 
              WHERE ROUTINE_NAME = N'proc_bar' AND SCHEMA_NAME = N'dbo'),
    sql_m = (SELECT definition FROM sys.sql_modules 
             WHERE [object_id] = OBJECT_ID(N'dbo.proc_bar'));

Resultados:

od                             info_s                         sql_m
-----------------------------  -----------------------------  -----------------------------
CREATE PROCEDURE dbo.proc_foo  CREATE PROCEDURE dbo.proc_foo  CREATE PROCEDURE dbo.proc_foo
AS                             AS                             AS
    SELECT 1;                      SELECT 1;                      SELECT 1;

Em qualquer caso, você não deve estar usando INFORMATION_SCHEMA enfim...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top