<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Henk Oberholzer</title>
        <link>http://geekswithblogs.net/HenkOberholzer/Default.aspx</link>
        <description />
        <language>en-US</language>
        <copyright>Henk Oberholzer</copyright>
        <managingEditor>henkoberholzer@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Henk Oberholzer</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/HenkOberholzer/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Outlook blocks access to certain attachments</title>
            <category>General</category>
            <link>http://geekswithblogs.net/HenkOberholzer/archive/2009/09/04/outlook-blocks-access-to-certain-attachments.aspx</link>
            <description>&lt;br /&gt;
OK, this post is more of a reminder for myself, rather than being a tutorial or interesting observation...&lt;br /&gt;
&lt;br /&gt;
When Microsoft Outlook blocks access to a certain attachment (by file type), the magic registry key that needs to be edited (and possibly also created), is:&lt;span style="font-weight: bold;"&gt; HKEY_CURRENT_USER\Software\Microsoft\Office&lt;span style="font-style: italic;"&gt;\&lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;12.0&lt;/span&gt;\Outlook\Security\&lt;/span&gt;&lt;span style="font-weight: bold;" class="userInput"&gt;Level1Remove&lt;/span&gt; (a string value). Note that the "12.0" part may be different depending on the version of Outlook you are using.&lt;br /&gt;
&lt;br /&gt;
Within this key, add the extension of the file types you want to unblock separated by semi-colons, for example: ".chm;.exe"&lt;br /&gt;
&lt;br /&gt;
Microsoft recommends restarting your computer to allow the changes to take effect, but simply restarting Outlook will probably be sufficient...&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134492"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134492" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/HenkOberholzer/aggbug/134492.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Henk Oberholzer</dc:creator>
            <guid>http://geekswithblogs.net/HenkOberholzer/archive/2009/09/04/outlook-blocks-access-to-certain-attachments.aspx</guid>
            <pubDate>Fri, 04 Sep 2009 16:40:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/HenkOberholzer/comments/134492.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/HenkOberholzer/archive/2009/09/04/outlook-blocks-access-to-certain-attachments.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/HenkOberholzer/comments/commentRss/134492.aspx</wfw:commentRss>
        </item>
        <item>
            <title>First Contract Project Completed!</title>
            <category>General</category>
            <link>http://geekswithblogs.net/HenkOberholzer/archive/2009/07/09/first-contract-project-completed.aspx</link>
            <description>&lt;br /&gt;
I've just completed my first project as an independent contractor and it feels great! Even managed to deliver well before the deadline after suffering some setbacks time-wise (although it did involve some late nights/early mornings).&lt;br /&gt;
&lt;br /&gt;
Without going into detail, the project allowed me to gain some experience in developing for Windows Compact Edition, some networking, creating a multi-threaded user interface, and integrating with Quickbooks (financial accounting software). I also worked with SQLite for the first time, and although I never did manage to find a proper O/R mapper to use, I was quite impressed with its performance and ease of use.&lt;br /&gt;
&lt;br /&gt;
Mental note: next time do better with keeping the specs and unit tests up to date!!&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133376"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133376" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/HenkOberholzer/aggbug/133376.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Henk Oberholzer</dc:creator>
            <guid>http://geekswithblogs.net/HenkOberholzer/archive/2009/07/09/first-contract-project-completed.aspx</guid>
            <pubDate>Thu, 09 Jul 2009 14:11:25 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/HenkOberholzer/comments/133376.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/HenkOberholzer/archive/2009/07/09/first-contract-project-completed.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/HenkOberholzer/comments/commentRss/133376.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Protecting your data – do you use EFS?</title>
            <category>General</category>
            <link>http://geekswithblogs.net/HenkOberholzer/archive/2009/07/04/protecting-your-data--do-you-use-efs.aspx</link>
            <description>&lt;br /&gt;
Information theft is a BIG thing and it’s only going to get bigger in the foreseeable future. Now, a lot of people talk the talk – but my question to you today is: do you walk the walk? Can you honestly say that in the event of your notebook OR desktop being stolen today, that you wouldn’t be worried about your data getting into the wrong hands? If your answer wasn’t a resounding “YES, I would not be worried”, then take the time to think about your security strategy today!&lt;br /&gt;
&lt;br /&gt;
As a developer, I have a lot of information I need to protect, like:&lt;br /&gt;
&lt;br /&gt;
1. Checked out source code (projects checked out of version control). This could be an end-to-end system complete with business rules, entire databases, detailed specifications, quotes, and basically anything an attacker or rival company would just love to get their hands on.&lt;br /&gt;
&lt;br /&gt;
2. Databases. Mostly part of and similar to point 1, but likely to be in a different location on disk.&lt;br /&gt;
&lt;br /&gt;
3. Emails, Tasks, Calendars, Contacts.&lt;br /&gt;
&lt;br /&gt;
4. Virtual machine files. In my case this would include the hard disk files for VirtualBox machines, which might contain any of the before mentioned data.&lt;br /&gt;
&lt;br /&gt;
5. Personal Files – Financial data, pictures, documents, etc.&lt;br /&gt;
&lt;br /&gt;
My strategy is to use EFS to encrypt most of my day-to-day files – point 1, 2, and 3 from above. I use a combination of EFS and Truecrypt file containers for my personal data. My virtual machine files are not being encrypted at the moment – so I try to keep sensitive data out of there. I have a password manager to manage the multitude of passwords I have, this is great cause I can generate 20 character long passwords randomly and I never even need to know what they are (just copy and paste). Obviously, the password manager is protected by a loooong random password and a keyfile which is kept separate from the password database.&lt;br /&gt;
&lt;br /&gt;
The major problem with all this encryption is performance. It slows everything down, which is the only reason why my virtual machine files aren’t encrypted at all. Unfortunately, one doesn’t really have a choice – either encrypt and accept the performance penalty, or leave unencrypted. The other problem which reared its head just the other day, was when I tried to access my files from my wife's computer – it just wouldn’t show the EFS files. Then I realised that XP Home doesn’t support EFS. As I would like my files to be fairly portable, this has meant that I’m now rethinking my encryption strategy. I’m now contemplating encrypting my entire data partition with Truecrypt – which should be fine except for the added nuisance of having yet another partition (which can't be resized)...&lt;br /&gt;
&lt;br /&gt;
What strategy do you use?&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133252"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=133252" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/HenkOberholzer/aggbug/133252.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Henk Oberholzer</dc:creator>
            <guid>http://geekswithblogs.net/HenkOberholzer/archive/2009/07/04/protecting-your-data--do-you-use-efs.aspx</guid>
            <pubDate>Sat, 04 Jul 2009 16:49:21 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/HenkOberholzer/comments/133252.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/HenkOberholzer/archive/2009/07/04/protecting-your-data--do-you-use-efs.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/HenkOberholzer/comments/commentRss/133252.aspx</wfw:commentRss>
        </item>
        <item>
            <title>MSSqlSchemaDoc Version 2.1 Released</title>
            <category>Microsoft.Net</category>
            <category>Data Storage</category>
            <link>http://geekswithblogs.net/HenkOberholzer/archive/2009/02/25/mssqlschemadoc-version-2.1-released.aspx</link>
            <description>&lt;br /&gt;
After accidentally breaking compatibility with Sql2005, this release should restore that compatibility while also fixing one or two other minor bugs...&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129664"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=129664" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/HenkOberholzer/aggbug/129664.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Henk Oberholzer</dc:creator>
            <guid>http://geekswithblogs.net/HenkOberholzer/archive/2009/02/25/mssqlschemadoc-version-2.1-released.aspx</guid>
            <pubDate>Wed, 25 Feb 2009 05:38:50 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/HenkOberholzer/comments/129664.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/HenkOberholzer/archive/2009/02/25/mssqlschemadoc-version-2.1-released.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/HenkOberholzer/comments/commentRss/129664.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Using "sp_GetBindToken" and "sp_BindSession" in SQL Server</title>
            <category>Data Storage</category>
            <link>http://geekswithblogs.net/HenkOberholzer/archive/2009/01/27/using-sp_getbindtoken-and-sp_bindsession-in-sql-server.aspx</link>
            <description>&lt;br /&gt;
Before making changes directly to a production database (inserts, updates, and deletes) I always start a transaction: "BEGIN TRAN".&lt;br /&gt;
&lt;br /&gt;
If at any time during the change I see results which I didn't expect or if I accidentally run an update statement without a "WHERE"-clause ;-) I can simply rollback the changes and start over: "ROLLBACK TRAN".&lt;br /&gt;
&lt;br /&gt;
Problem: After making some initial changes, I want to run an additional script to apply the next set of changes. I don't want to run the new script in the existing window because I want to preserve the result set from the first script. I can't open a new query window because it did not take part in the transaction which was started in the first query, so the query in the second window will be blocked until the first transaction is committed or rolled back.&lt;br /&gt;
&lt;br /&gt;
What to do? Enter "sp_BindSession". By providing "sp_BindSession" with the appropriate token, I can "join" the transaction from the first query window. The required token can be retrieved from within the transaction by executing "sp_GetBindToken" (which returns a transaction ID). Neat, huh?&lt;br /&gt;
&lt;br /&gt;
PS: A BIG THANKS to Paul Rony from SplendidCRM Software for answering my post on SQL Server Central with this info!&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128992"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128992" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/HenkOberholzer/aggbug/128992.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Henk Oberholzer</dc:creator>
            <guid>http://geekswithblogs.net/HenkOberholzer/archive/2009/01/27/using-sp_getbindtoken-and-sp_bindsession-in-sql-server.aspx</guid>
            <pubDate>Tue, 27 Jan 2009 06:56:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/HenkOberholzer/comments/128992.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/HenkOberholzer/archive/2009/01/27/using-sp_getbindtoken-and-sp_bindsession-in-sql-server.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/HenkOberholzer/comments/commentRss/128992.aspx</wfw:commentRss>
        </item>
        <item>
            <title>MSSqlSchemaDoc Version 2.0 Released</title>
            <category>Microsoft.Net</category>
            <category>Data Storage</category>
            <link>http://geekswithblogs.net/HenkOberholzer/archive/2008/11/13/mssqlschemadoc-version-2.0-released.aspx</link>
            <description>&lt;br /&gt;
I finally finished the next iteration of MSSqlSchemaDoc by adding a facility for the user to add custom comments and notes to document the database objects.&lt;br /&gt;
&lt;br /&gt;
The application creates objects documenting the structure of each database object (as per version 1), but will now also generate blank templates (separate from the schema) where user comments can be added. Comments are also preserved when re-generating.&lt;br /&gt;
&lt;br /&gt;
The reason for keeping the user comments separate from the schema documentation is so that source control and versioning can run independently between schema changes and documentation changes. When looking for a schema change in a commit log, I sure don't want to have to trawl through all the comment changes!&lt;br /&gt;
&lt;br /&gt;
Why not check it out and let me know what you think?&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126993"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126993" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/HenkOberholzer/aggbug/126993.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Henk Oberholzer</dc:creator>
            <guid>http://geekswithblogs.net/HenkOberholzer/archive/2008/11/13/mssqlschemadoc-version-2.0-released.aspx</guid>
            <pubDate>Thu, 13 Nov 2008 12:59:27 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/HenkOberholzer/comments/126993.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/HenkOberholzer/archive/2008/11/13/mssqlschemadoc-version-2.0-released.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/HenkOberholzer/comments/commentRss/126993.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Documenting a Microsoft SQL Server Database</title>
            <category>Microsoft.Net</category>
            <category>Data Storage</category>
            <link>http://geekswithblogs.net/HenkOberholzer/archive/2008/10/14/documenting-a-microsoft-sql-server-database.aspx</link>
            <description>&lt;br /&gt;
I've just completed the first release of MSSqlSchemaDoc on codeplex!&lt;br /&gt;
&lt;br /&gt;
The application is used to extract the schema of a SQL database into XML files (one per object). I decided not to use SMO (Sql Management Objects) since they are quite slow when extracting this level of data (they issue multiple queries per object, instead of just the one or two that I do).&lt;br /&gt;
&lt;br /&gt;
It all works by defining classes which represent database objects, like tables, views, etc. These classes are decorated with attributes which control how the objects get serialized to XML. XSD schemas specify the expected structure of the XML and are used to validate each serialized object.&lt;br /&gt;
&lt;br /&gt;
Some of the work that still needs to be done:&lt;br /&gt;
&lt;br /&gt;
- Creating XSL stylesheets to convert the XML into HTML reports&lt;br /&gt;
- Reversing the process to create the database from the XML files&lt;br /&gt;
- Support for CLR types, procedures, etc&lt;br /&gt;
- Support for SQL Server 2000&lt;br /&gt;
&lt;br /&gt;
Check out the project at &lt;a href="javascript:void(0);/*1223972098047*/"&gt;http://www.codeplex.com/MSSqlSchemaDoc &lt;/a&gt;and maybe even lend a hand in the development :-)&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125827"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125827" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/HenkOberholzer/aggbug/125827.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Henk Oberholzer</dc:creator>
            <guid>http://geekswithblogs.net/HenkOberholzer/archive/2008/10/14/documenting-a-microsoft-sql-server-database.aspx</guid>
            <pubDate>Tue, 14 Oct 2008 08:18:42 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/HenkOberholzer/comments/125827.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/HenkOberholzer/archive/2008/10/14/documenting-a-microsoft-sql-server-database.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/HenkOberholzer/comments/commentRss/125827.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Enumerating Embedded Resources</title>
            <category>Microsoft.Net</category>
            <link>http://geekswithblogs.net/HenkOberholzer/archive/2008/10/06/enumerating-embedded-resources.aspx</link>
            <description>&lt;br /&gt;
On a recent project I used a resource file to store a collection of XML schema files. When validating my XML, I needed to add all the schemas to my XmlDocument object. Instead of hard-coding each schema file's name, I decided to load the resources programmatically.&lt;br /&gt;
&lt;br /&gt;
Here's a snippet of the code I ended up with:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XmlSchemaSet schemaSet = new XmlSchemaSet();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Assembly assembly = Assembly.GetExecutingAssembly();&lt;br /&gt;
ResourceManager resMan = XmlSchemaResources.ResourceManager;&lt;br /&gt;
&lt;br /&gt;
foreach (string resource in assembly.GetManifestResourceNames())&lt;br /&gt;
{&lt;br /&gt;
    if (resource == string.Concat(resMan.BaseName, ".resources"))&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        ResourceReader resReader = new ResourceReader(assembly.GetManifestResourceStream(resource));&lt;br /&gt;
        IDictionaryEnumerator enumerator = resReader.GetEnumerator();&lt;br /&gt;
&lt;br /&gt;
        while (enumerator.MoveNext())&lt;br /&gt;
        {&lt;br /&gt;
            string key = enumerator.Key.ToString();&lt;br /&gt;
            schemas.Add(null, new XmlTextReader(resMan.GetString(key), XmlNodeType.Document, null));&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
xmlDocument.Schemas.Add(schemaSet);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Simple enough, but it took a good couple of hours to get the combinations right!  &lt;img src="/Providers/BlogEntryEditor/FCKeditor/editor/images/smiley/msn/teeth_smile.gif" alt="" /&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125659"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125659" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/HenkOberholzer/aggbug/125659.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Henk Oberholzer</dc:creator>
            <guid>http://geekswithblogs.net/HenkOberholzer/archive/2008/10/06/enumerating-embedded-resources.aspx</guid>
            <pubDate>Mon, 06 Oct 2008 13:02:06 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/HenkOberholzer/comments/125659.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/HenkOberholzer/archive/2008/10/06/enumerating-embedded-resources.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/HenkOberholzer/comments/commentRss/125659.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>