Como o nome do modo de exibição ficar fora de sincronia com a definição do modo de exibição?
-
13-12-2019 - |
Pergunta
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....
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...