0

ここに画像の説明を入力してください

システムのバグをこの異常まで追跡しました。少なくとも、スキーマが類似しているが等しくない15個のカタログのシステムの異常です。

[INFORMATION_SCHEMA]。[VIEWS]の[TABLE_NAME]が[VIEW_DEFINITION]の値と異なる原因は何ですか?

SQLServerのビューやシステムテーブルについて何も理解していないように思われます。

4

1 に答える 1

3

ビューの名前を変更した場合、名前は変更されますが、定義は変更されません。

これは、右クリックしたり、を使用したりするのではなく、 DROP/CREATEまたはスクリプトとして実行する必要があります。ALTERsp_rename

これは、実際にはすべてのモジュールで予想される動作です。簡単なストアドプロシージャを使用した簡単なテストは次のとおりです。

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

結果:

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;

いずれにせよ、とにかく使用するべきではありませINFORMATION_SCHEMAん...

于 2012-05-22T16:38:42.977 に答える