ApexSQL Doc: SQL Server Documentation Tool
ApexSQL Doc allows you to include not only database objects in a documentation but also certain server level parts, such as the ones depicted below.
Next setting you can customize is the “Database Details” option. By enabling this option you can document certain database information such as owner, creation date, compatibility level, total size at time of documentation and database settings like “Auto Shrink” and others.
The Treeview Item with the most sub items by far is the “Object Types” item.
You probably have noticed the “Bitwise Set” textbox. It will change with every checkbox you activate or deactivate. The value shown in that box comes in handy when you want to use the Command Line Interface of ApexSQL Doc. I’ll have more to say about the Command Line in just a moment.
For database objects like Functions or Stored Procedures you can choose to document their options, parameters, permissions, and properties. For User-Defined Functions that return a table you can additionally choose to document what this table structure looks like.
Speaking of tables…
Most of the options shown are pretty much self-explaining. However, some of them require a little bit of explanation.
You select this option, when you want to have documented options like “QUOTED_IDENTIFIER” or “ANSI_NULLS”.
Statistical Data Analysis
This option documents the statistical information of the tables. Documentation includes Page Statistics, Extent Statistics and Row Statistics. It is not too hard to guess, that including this option, will increase the time the documentation process takes. So, you might want to carefully evaluate if you need this option at all (it is the only option disabled by default of this settings page of ApexSQL Doc) or consider including this option when you decide the run by documentation task via the Command Line in a job scheduled for times of less or none database activity.
Suppose you initially use ApexSQL Doc to document all of your existing databases. In that case you certainly appreciate the “Import” and “Export” buttons. They allow you to export the current selection to an XML file, which in turn you can load into any other project or save for such documentation purposes as to illustrate the evolution of a database over time. Using this feature is not only less time-consuming, but also less prone to errors as you are less in danger to forget to select some settings. Note, that “current selection” not only includes the list of object types chosen at this step, but also includes the filters on these objects types, which I am about to define now.