Créer Une Vue Avec Le Sql Dynamique

Je suis en train de créer une Base de données dynamique de création de script.

Il y a beaucoup d'étapes et de nous créer cette base de données souvent de sorte que le script ressemble à quelque chose comme ça.

 DECLARE @databaseName nvarchar(100) = 'DatabaseName'
 EXEC('/*A lot of database creation code built off of @databaseName*/')

Tout est bon, sauf pour un point de vue que nous créons dans cette base de données.

Le problème tel que je le comprends provient de trois règles SQL concernant la commande EXEC

  1. Contextes d'UTILISATION sont uniquement actif pour la vie de l'EXEC
  2. "CRÉER une VUE" doit être la première instruction dans un traitement de requêtes
  3. ALLER n'est pas vraiment une Commande SQL et en tant que tel n'est pas autorisé dans le sql dynamique
  4. Sur CRÉER une VUE, vous pouvez spécifier uniquement le bas de Schéma.

Voici donc trois choses que j'ai essayé sans succès.

--1.Results in my view not being created in my database
EXEC ('USE [' + @databaseName + ']')
EXEC ('CREATE VIEW')

--2.Results in a 'CREATE VIEW' must be the first statement in a query batch
EXEC 
('
    USE [' + @databaseName + ']
    CREATE VIEW
')

--3.Results in Incorrect syntax near 'GO'
EXEC 
('
    USE [' + @databaseName + ']
    GO
    CREATE VIEW
')

--4.Results in 'CREATE/ALTER VIEW' does not allow specifying the database name as a prefix to the object name.
EXEC ('CREATE VIEW [' + @databaseName + '].[dbo].[ViewName]')

Des suggestions? Je pense que cela devrait être un bon cas d'utilisation, mais Google n'était pas en mesure de m'aider.

OriginalL'auteur Mark Rucker | 2014-01-16