He generado una secuencia de comandos que crea todos los usuarios y esquemas para esta base de datos y cuando envuelvo las instrucciones CREATE con una comprobación IF EXISTS, encuentro que no permite ejecutar la llamada CREATE SCHEMA en el bloque BEGIN/END. Se queja de que es una sintaxis inválida. Sin embargo, puedo ejecutar el comando por sí mismo. Una muestra del código está debajo. Estoy usando SQL Server 2008 y Management Studio R2. ¿Por qué esta sintaxis inválida?¿Por qué no puedo usar "create schema" en un bloque begin/end en SQL Management Studio?
--DROP SCHEMA [acme]
IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'acme'))
BEGIN
CREATE SCHEMA [acme] AUTHORIZATION [dbo]
END
me he aclarado que puedo envolver la declaración CREATE SCHEMA con EXECUTE para permitir la declaración de trabajar. Consulte EJECUTAR ('CREATE SCHEMA [acme] AUTHORIZATION [dbo]') http://msdn.microsoft.com/en-us/library/ms189462.aspx – Brennan
Esto es una mierda ... seguramente no estamos saturando nuestro código con declaraciones EXEC sin sentido? –