Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

I have a whole bunch of views that I need to create. Many of these views depend on other views.

If I create a view that depends on a view not yet created, I get an Invalid Object error.

Rather than go through the whole lot and work out the dependencies and then deal with creating them all in the correct order, is there a way I can just switch this checking off until all the views are created?

It is possible to delete a dependant view after the view is installed, so it is possible for the database to be in a state where a view exists that depends on a non-existent object. I need it to accept being in this state during creation..

share|improve this question
1  
Oracle has CREATE FORCE VIEW for exactly this use case, but I don't believe SQL Server has any equivalent. –  Gaius Nov 18 '11 at 14:32
    
@Gaius - it seems SQL Server only has an equivalent for Stored Procedures, not Views. –  Mongus Pong Nov 18 '11 at 14:38
add comment

2 Answers 2

To my knowledge it's not possible to create a view that is missing objects referenced in that view.

Why is it such a pain to know what the dependencies are on your views? You are CREATING them, right?

Do they already exist in another database? If so you can use SSMS or SMO to script them out in dependency order and bypass this issue.

share|improve this answer
    
Darn it.. Yeah its just sheer laziness / efficiency (depending on how you look at it). –  Mongus Pong Nov 18 '11 at 12:16
    
tsort is your friend. –  Mike Sherrill 'Cat Recall' Nov 20 '11 at 10:01
add comment

If you have access to adatabase that the views exist within you can query sys.views to determine the order in which they where created. Query below should help with this, add a predicate to filter the list if it helps.

SELECT v.name   
FROM sys.views v
ORDER BY v.create_date
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.