27. september 2012 17:21 by admin in
.net, vs2010 vs2012
In my development work I get the following message quite a lot :
Cannot drop database "XXX" because it is currently in use. This usually means I have an existing website or tool with a connection to the database I want to drop. Especially with Entity Framework Code-First I tend to rewrite the whole DB quite often. Instead of killing the 'guilty' process I decided to create a VS shortcut to deal with it. So here's what I have now:
What does this do?
- Look for a App.Config or Web.Config of the selected project
- Look for connection strings in the configuration file
- Use the first connection string and try to connect to the corresponding master db
- Close existing connections to the database specified in 3
So HOW does it work?
For this purpose i created a small console application and integrated it into my Visual Studio as an external command.
This consists of a VS2012 solution but it should be easy to open it in VS2010 as nothing special is done. (For VS2010 just import the .cs files into a 'fresh' project) The heart of the application is the following:
Basically switching between SINGLE_USER and MULTI_USER closes all active connections.
Next (and final) step is to integrate the program into vs2012. The steps are the same on VS2010 and afaik VS2008. Here's how:
1 Add the program as external tool
Via Tools->External tools click add. Point to the point where you have connection-killer exe file and change the initial directory of the application. Move connection killer up so it is the first external tool (you'll see why later). It should look like this:
2 Create a short in the Solution Explorer context menu
- Go Tools->Customize and click the Commands tab.
- Click the context menu 'Project and Solution Context Menus | Project'
- Add command select category 'tools' and select command 'External Command 1'
- Click 'Modify Selection' and rename the menu item to kill connection or something
- Close the dialog and you're done