¿Cómo ver el nombre de salir de la sincronización con la definición de la vista?
-
13-12-2019 - |
Pregunta
He rastreado un error en mi sistema esta anomalía - al menos es una anomalía en mi sistema, de 15 de catálogos con similar pero desigual esquemas.
Lo que hace que el [NOMBRE_TABLA] en [INFORMATION_SCHEMA].[OPINIONES] a ser diferente al valor en [VIEW_DEFINITION]?
Esto me hace pensar que yo no entiendo algo acerca de las Vistas o Tablas del Sistema en SQL Server....
Solución
Si ha cambiado el nombre de la vista, el cambio de nombre, pero la definición no.
Usted debe hacer esto en un DROP
/CREATE
o un ALTER
guión, no por derecho-clic o usando sp_rename
.
Este es en realidad el comportamiento esperado para todos los módulos.Aquí es una prueba rápida mediante un sencillo procedimiento almacenado:
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;
En cualquier caso, usted no debería estar usando INFORMATION_SCHEMA
de todos modos...