Question

enter image description here

J'ai repéré un bug dans mon système lié à cette anomalie - du moins c'est une anomalie dans mon système de 15 catalogues avec des schémas similaires mais inégaux.

Qu'est-ce qui fait que [TABLE_NAME] dans [INFORMATION_SCHEMA].[VIEWS] est différent de la valeur dans [VIEW_DEFINITION] ?

Cela me fait penser que je ne comprends pas quelque chose aux vues ou aux tables système dans SQL Server....

Était-ce utile?

La solution

Si vous avez renommé la vue, le nom change, mais pas la définition.

Vous devriez le faire en tant que DROP/CREATE ou un ALTER script, pas en cliquant avec le bouton droit ou en utilisant sp_rename.

Il s'agit en fait du comportement attendu pour tous les modules.Voici un test rapide utilisant une simple procédure stockée :

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'));

Résultats:

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;

Dans tous les cas, vous ne devriez pas utiliser INFORMATION_SCHEMA de toute façon...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top