보기 이름이 뷰 정의와 함께 동기화를 어떻게 제거합니까?
-
13-12-2019 - |
문제
나는이 이상으로 내 시스템에서 버그를 추적했습니다. 적어도 그것은 유사하지만 불평등 한 스키마를 가진 15 개의 카탈로그 시스템의 나의 시스템에서의 이상입니다.
[information_schema]에서 [table_name]의 원인이됩니다. [View]가 [View_Definition]의 값과 다른 값과 다를 수 있습니까?
SQL Server에서보기 또는 시스템 테이블에 대해 뭔가를 이해하지 못한다고 생각합니다 ... .
해결책
보기의 이름을 변경 한 경우 이름이 변경되지만 정의는 그렇지 않습니다.
DROP
/ CREATE
또는 ALTER
를 마우스 오른쪽 버튼으로 클릭하거나 사용하지 않아도됩니다.
모든 모듈에 대해 실제로 예상되는 동작입니다.간단한 저장 프로 시저를 사용하여 빠른 테스트가 있습니다.
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;
.
어쨌든 sp_rename
를 사용하면 안됩니다 ...
제휴하지 않습니다 StackOverflow