2012-12-09 2 views
2

Comment puis-je créer plusieurs vues dans l'instruction CREATE SCHEMA?Créer plusieurs vues dans un schéma - SQL Server

Je veux créer un SCHEMA, et créer deux vues à l'intérieur de celui-ci dans la même déclaration, de sorte que toutes ces déclarations fonctionnent comme une seule unité? Réussir ou échouer ensemble!

De MSDN:. http://msdn.microsoft.com/en-us/library/ms189462.aspx

« CREER SCHEMA peut créer un schéma, les tables et les vues qu'il contient, et grant, revoke, ou refuser des autorisations sur tout sécurisable dans une seule instruction créer des transactions SCHEMA sont atomiques Si une erreur se produit lors de l'exécution d'une instruction CREATE SCHEMA, aucune des sécurités spécifiées n'est créée et aucune autorisation n'est accordée.

,

Comment puis-je faire cela? J'ai essayé ceci:

CREATE SCHEMA [MYSCHEMA] AUTHORIZATION [dbo] 
    CREATE VIEW [VIEW1] 
    AS 
     SELECT [ID] 
       ,[NAME] 
       FROM [dbo].[TABLE1] 
     /* Here is the Problem */ 
     GO 

     CREATE VIEW [VIEW2] 
     AS 
     SELECT [ID] 
       ,[NAME] 
       FROM [dbo].[TABLE2] 
     GO 

Si j'inclure une déclaration GO juste après la première création de la vue, puis exécution du script mais la deuxième vue VIEW2 est créé sous le schéma dbo, pas sous MYSCHEMA, et ne fonctionne pas comme une seule unité non plus.

Si je retire le GO après la première vue, il donne une erreur disant

CREER VIEW doit être la première instruction d'un lot

pour la deuxième déclaration CREATE VIEW.

Comment résoudre ce problème et créer les deux vues dans le cadre de l'instruction CREATE SCHEMA?

+0

Si vous voulez mettre '' View1' dans MySchema' - préfixe juste le nom de la vue avec le schéma lors de la création: CREATE VIEW MySchema.View1 AS ... ' –

+0

@marc_s, oui, je sais que, mais alors ils ne vont pas agir comme une seule unité. Faire mon chemin fera en sorte que tout soit créé ou que rien ne se passe. Ce qui est important pour moi dans ce cas. – BuddhiP

+0

@marc_s, extrait de MSDN "CREATE SCHEMA peut créer un schéma, les tables et les vues qu'il contient, et les autorisations GRANT, REVOKE ou DENY sur tout élément sécurisable dans une seule instruction.Les transactions CREATE SCHEMA sont atomiques. l'exécution d'une instruction CREATE SCHEMA, aucun des sécurables spécifiés n'est créé et aucune autorisation n'est accordée. ", c'est ce que je cherchais. – BuddhiP

Répondre

4
CREATE SCHEMA [MYSCHEMA] AUTHORIZATION [dbo] 

CREATE VIEW [VIEW1] AS SELECT [ID], [NAME] FROM [dbo].[TABLE1] 
CREATE VIEW [VIEW2] AS SELECT [ID], [NAME] FROM [dbo].[TABLE2] 
GO 
+1

Je ne sais pas pourquoi vous avez une downvote, cela fonctionne. Je viens de tester cela sur SQL Server 2008 r2 – Taryn

+0

@bluefeet: étonnamment - oui, cela semble fonctionner très bien, et il semble créer ces vues dans le nouveau schéma. Vous n'arrêtez jamais d'apprendre :-) –

+0

Merci les gars :) Je l'ai testé avant de poster. – kgu87

Questions connexes