views:

342

answers:

1

I really like the new SQL Server Database projects in Visual Studio 2010. I also like using the "Generate DROP statements for objects that are in the target database but that are not in the database project" option in the deployment properties.

However, I do not want to manage Stored Procedures and Functions using this interface; I have another tool for that. Every time I do a build and deploy, VS will drop my stored procedures that I have created with my external program. I would like to essentially "ignore" stored procedures and functions.

Is there a way to ignore stored procedures and functions when building SQL Server Database projects?

I won't be able to use the "Generate DROP statements..." option if I want to use my external tool for stored procedures and functions.

+2  A: 

VSDB stores the definition of procedures and functions in plain SQL files. My recommendation would be to have the 'other tool' drop the procedures and functions as SQL files straight into the VSDB project, then build your VS DB project and deploy. This way, you get a free check of the procedures and functions against the schema, since the VS DB build will validate them.
Even better, have the 'other tool' create the SQL definitions as part of a custom build step during the VS DB solution build.

I understand that not perhaps the 'other tool' is likely not going to cooperate and want to deploy its output straight into the database (ie. connect and create the procedures) but if you can modify it to generate SQL files instead, then it's worth pursuing an integration with VS DB and have a uniform deployment.

Having VS DB 'ignore' your procedures and functions may work, but you can run into all sort of problems because while VS DB deploys new schema for tables and such, it may drop and re-create them, thus breaking dependencies from your 'other tool' procedures and functions, breaking access rights needed and who know what else. Not to mention that if you have only one function with SCHEMABINDING, it will prevent the VS DB deployment altogether. And since scalar functions usually require SCHEMABINDING to prevent spools...

Remus Rusanu
That sounds like the way to go, thank you.
Carter