Advanced code visualization add-in for Visual Studio
July 24th, 2007My friend Jon has released a new exciting product for C, C++ and C# Visual Studio developers. It’s called codekana and it enhances the Visual Studio experience boosting your productivity.
I’ve been using a beta version of codekana for several weeks and once you have used it for just some hours you just can’t go on without it. The color-coded flow control, the graphical outlines and the smart highlighting adds another level of ‘quick understanding’ to your code. But don’t take my word on this; just try it out for a couple of days or so and then press Ctrl-Shift-Alt-K to deactivate codekana. It’s a weird sensation. Press Ctrl-Shift-Alt-K to bring life to your code again.
This add-in could look as a nice-to-have one until you try it, then, it becomes a must-have.
By the way, it’s only $39 for limited time!
Problem dropping a user in SQL 2005
May 15th, 2007Today I’ve encountered a problem trying to drop a user from a database. I kept getting this error:
Msg. 15138 The database principal owns a database role and cannot be dropped
So it looked like the user owned a database schema. To find out the schemas that a user owns I’ve used this query:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA WHERE schema_owner = ‘UserName’
UserName was the owner of the dbo_owner schema, so to return the schema to the original owner I’ve executed this other query:
ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo
Then I’ve been able to drop the user without problems.
ExecutionEngineException nightmare
March 28th, 2007Last week, a potential customer of dtsdoc reported a new error. It was an ExecutionEngineException. Let me tell you that this is one of the worse exceptions you can get from a .NET application.
To begin with, this exception cannot be catched, which means you don’t get a nice call stack or any other useful info to track down the problem.
If you dig in MSDN you will find this explanation: “The exception that is thrown when there is an internal error in the execution engine of the common language runtime.”, not very helpful.
Finally if you google about it, you’ll find lots of exasperated people looking for answers but almost no solutions at all. One thing that seems to share all those posts is that they are trying to do some kind of interop with COM objects.
To make a long story short, it was a bug in the Microsoft DTS libraries that dtsdoc uses to inspect and document DTS packages. The bug is fixed in SQL Server 2000 Service Pack 4, so updating those libraries solved the problem.
So, if you run into some RuntimeExecutionException, check your unmanaged libraries first, chances are that any of those libraries has a bug.
vi power for die-hard Windows users
February 7th, 2007I’ve been enjoying the vi input model since Jon released the first version of ViEmu for Visual Studio and, just like he warned me, at first it was a bit difficult to change my typing habits. However, soon I began to appreciate the vi way of doing things and I started to take advantage of its power and speed. I probably only use 30% of its commands but I’m a lot more productive than before and what is more important, I enjoy typing!
Now, he has just released ViEmu for Microsoft Word and ViEmu for Microsoft Outlook! There’s only one word: AMAZING!
Congratulations!
dbdesc 2.1 available
January 30th, 2007A new version of dbdesc is now available. This version improves a lot the successful extended property editor that was introduced in version 2.0. A special ‘thank you’ to all of you who have sent me feedback and suggestions, and specially to Tom Pester who has dedicated a lot of effort in helping me polish this version up.
As I mentioned earlier, the bulk of improvements are in the extended properties editor. Now you can add descriptions to most SQL Server objects like stored procedure/UDF parameters, user-defined types, assemblies, etc. The usability has been improved too; now your changes are committed to the database in real-time and it’s a lot easier to navigate through the editor.

Close to the title of each main group of objects there’s a percentage indicating how many objects are annotated; very useful if your goal is to annotate every object. You can also hide the objects that already have descriptions and leave only those without comments.
You can see the full change log in the download page.
Firebird 2.0 is finally out
November 17th, 2006
This week, the Firebird project has finally released version 2.0 final.
Although this version comes with lots of improvements and changes, I think that dbdesc should be able to document 2.0 databases without problems. I will try to find time this very weekend to test it.
Here are the release notes and download page.
UPDATE: Even though you can connect with a Firebird 2.0 server to document a database, using the local (embedded) connection does not work because it needs the new fbembed.dll version. I’ve uploaded a maintenance release (2.0.1) to address this issue. Installer size has grown a little (~1 MB) because of the updated Firebird libraries.
Dealing with Spam
October 18th, 2006Steph, founder of LandLordMax Property Management Software, has posted a very descriptive post about the problems of dealing with email spam.
I just can not imagine receiving thousands of spam emails every single day. I’m not even close to that amount of emails. I used to receive less than one hundred per day (fingers crossed!).
To deal with them, I use SpamAssassin. It is setup to tag and redirect emails to a special account. Periodically, my email client downloads those emails to a SPAM folder and I inspect those tagged emails once a day. The inspection is pretty straightforward as most of the times the subject line is enough to decide if it is spam or not.
This system is working for me, but again, I receive a moderate amount of email each day.
dbdesc 2.0 released!
October 6th, 2006
This week I finally managed to release dbdesc 2.0. This version adds a couple of features that will make dbdesc much more useful.
The first one is that you can choose exactly which objects you want to document. Until now you had the option to not document tables, views, etc. but it was an all or nothing option.
The second one is that dbdesc has a built-in extended property editor. Now, it is very easy to add descriptions to your objects (a really painful and time-consuming task using the Enterprise Manager or the Query Analyzer). The editor allows you to manage not only the classic MS_Description but to add and manage your own extended properties.
By the way, this version coincides (more or less) with the first anniversary of dbdesc. I have lots of exciting features planned to keep improving the product but, as always, I look forward to hear your comments and suggestions.
Upgraded to WordPress 2.0.4 and new theme
September 2nd, 2006
I’ve finally managed to upgrade my blog to the latest version of WordPress (I was still running 1.5.2!). I’ve also updated the blog theme to match the look of my products.
Just to be sure to not break anything and because I had a VM with MySQL and Apache that I setup some time ago, I first tried the upgrade locally. The upgrade process has been straightforward as my blog was not heavily customized nor I was using any plug-in. I’ve been able to upgrade directly from 1.5.2 to 2.0.4.
The feed has been refreshed so you will probably receive my latest posts again. Sorry about that! I think everything is working but if you detect any problem please send me an email (contact at dbdesc.com).
Database tag clouds
August 28th, 2006I’m always more than happy to see how dbdesc users customize dbdesc templates for their own needs. Last week, Jasper Verweij posted a comment sharing his idea of building tag clouds using database objects.
It’s indeed a very useful idea because it shows which objects are “more important” on your database. After a couple of email exchanges he was able to put in place a tagcloud of referenced tables. That is, the more referenced a table is, the bigger is its name. This picture shows the effect:
This is just a proof of concept. He is working on more tagclouds… In his own words:
The next thing I’ll try to make, is a flexible function to make the tagcloud functionality available for various items of a database, like:
- Tagcloud by UDF dependencies
- Tagcloud by SP dependencies
- Tagcloud Tables by View
- Tagcloud Tables by Table Size
- Tagcloud Tables by Row count
- Tagcloud Tables by Index Size
-Tagcloud by data type (which datatypes are used the most)
etc.After this setup another trick could be tried: combination of tagclouds. A big table (with loads of rows) with a primary key which used a lot as foreign key might be more important than a table which has 5 rows and 1 foreign key.
If anyone is interested in the code to add this tag clouds to dbdesc templates just drop me an email.





