ALTER VIEW

15/02/2007 - 13:15 por J.A. García Barceló | Informe spam
Buenos dias grupo:

Tengo algunas tablas y vistas que participan de la replicación entre 2
servidores (transaccional inmediata)
Algunas de estas vistas tienen WITH SCHEMABINDING para poder tener índices
sobre ellas.
Cuando tengo que hacer cambios en las tablas del publicador, me avisa de que
se perderán esos índices y la vista dejará de tener la opcion SCHEMABINDING
etc... ok ok, y luego vuelvo a modificar la vista y a recrear los índices y
todo vuelve a estar en marcha en el publicador.

Sin embargo, cuando vuelvo a republicar la tabla para que el subscriptor se
sincronice, tengo el mismo problema por lo que, en el pre-snapshot scripts
tengo que hacer un ALTER VIEW para quitarle el schemabinding, y el
post-snapshot script volver a dejar la vista con el schemabinding activo y
recrear los índices.

Y ahora la cosa rara: para hacer el presnapshot script, primero verifico si
la vista en cuestión existe antes de hacer el alter view:

USE [myDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[miconsulta]') IS NOT NULL
ALTER VIEW [dbo].[miconsulta]
AS
...
GO

Pero obtengo el siguiente error:

Mens. 156, Nivel 15, Estado 1, Línea 2
Sintaxis incorrecta cerca de la palabra clave 'VIEW'.

Sencillamente no lo entiendo. Hay alguna restricción por la que un ALTER
VIEW no pueda ir detras de un IF ?!?!?!

J.A. García Barceló
http://jagbarcelo.blogspot.com
 

Leer las respuestas

#1 Maxi
15/02/2007 - 13:47 | Informe spam
Hola, ponele Begin y End dentro del if


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"J.A. García Barceló" escribió en el mensaje
news:
Buenos dias grupo:

Tengo algunas tablas y vistas que participan de la replicación entre 2
servidores (transaccional inmediata)
Algunas de estas vistas tienen WITH SCHEMABINDING para poder tener índices
sobre ellas.
Cuando tengo que hacer cambios en las tablas del publicador, me avisa de
que se perderán esos índices y la vista dejará de tener la opcion
SCHEMABINDING etc... ok ok, y luego vuelvo a modificar la vista y a
recrear los índices y todo vuelve a estar en marcha en el publicador.

Sin embargo, cuando vuelvo a republicar la tabla para que el subscriptor
se sincronice, tengo el mismo problema por lo que, en el pre-snapshot
scripts tengo que hacer un ALTER VIEW para quitarle el schemabinding, y el
post-snapshot script volver a dejar la vista con el schemabinding activo y
recrear los índices.

Y ahora la cosa rara: para hacer el presnapshot script, primero verifico
si la vista en cuestión existe antes de hacer el alter view:

USE [myDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[miconsulta]') IS NOT NULL
ALTER VIEW [dbo].[miconsulta]
AS
...
GO

Pero obtengo el siguiente error:

Mens. 156, Nivel 15, Estado 1, Línea 2
Sintaxis incorrecta cerca de la palabra clave 'VIEW'.

Sencillamente no lo entiendo. Hay alguna restricción por la que un ALTER
VIEW no pueda ir detras de un IF ?!?!?!

J.A. García Barceló
http://jagbarcelo.blogspot.com


Preguntas similares