What are the challenges you face when working across database platforms? Take the survey

CommandLine Main:Unhandled Exception

Yann KahlounYann Kahloun Posts: 5
edited July 4, 2012 9:57AM in SQL Doc Previous Versions

We're having an issue with command line execution.
We're pretty sure the sqldoc extension file is ok, because, launching it within a .bat is working.

However using it within Cruise Control or Windows Task Planner for automation with the "System" account, produce an exception.

Stack (french) :
Main:Unhandled Exception
System.ArgumentNullException: La valeur ne peut pas être null.
Nom du paramètre : value
à System.IO.Directory.SetCurrentDirectory(String path)
à System.Environment.set_CurrentDirectory(String value)
à RedGate.SQLDoc.Engine.Project.Project.(String )
à RedGate.SQLDoc.Engine.Project.Project.set_FilePathOfHtml(String value)
à RedGate.SQLDoc.Engine.Project.Project..ctor()
à RedGate.SQLDoc.Engine.Project.Project.LoadFromDisk(String pathAndFileName)
à RedGate.SQLDoc.UI.CommandProcessor.RunProject()
à RedGate.SQLDoc.UI.CommandProcessor.Run()
à RedGate.SQLDoc.UI.Program.Main(String[] args)

Here is the conf part you probably want to see :
<?xml version="1.0" encoding="utf-8"?>
<Project Version="1" ApproxVals="0" DontUseDefaultCopyrightInfo="False" HtmlPath="D:\ContinuousIntegration\SqlDoc\Publish\" ProjectDescription="" Treeview="" OutputStyle="FramedHTML" Forced="False" NewDatabaseObjects="Enabled" IncludeSQLScript="True" IncludeTriggers="True" IncludeIndexes="True" IncludeFullIndexInfo="False" IncludeForiegnKeys="True" IncludeCheckConstraints="True" IncludePermissions="True" ThemeName="" ProjectName="nightly" AllowEditing="True" Server="XXX" Database="XXX" IntegratedSecurity="False" User="XXX" password="XXX">
<Database Version="1" Server="XXX" Database="XXX" IntegratedSecurity="False" DirectoryName="XXX" User="XXX" password="XXX">
<Objects />
<IncludeTimeStampInFileName value="False" />
<FramedHTML />
<IncludeTimeStampInFileName value="False" />
<IncludeTimeStampInFileName value="False" />
<ObjectExclusions />


  • Options
    Hi Yann,

    I believe whatever utility that you use to launch SQL Doc needs to specify a working directory. When you launch from command prompt or from Windows, this is usually fed to the program's running environment automatically. But that doesn't mean to say CruiseControl or whatever will.
  • Options

    Could you also post the command line and the parameters you are using?

    David Atkinson
    Red Gate
    David Atkinson
    Product Manager
    Redgate Software
  • Options
    I'm sorry, i couldn't answer quickly.

    We're actually using the following command line :
    sqldoc.exe" /project:"D:\ContinuousIntegration\SqlDoc\nightly.sqldoc"

    I guess I have to specify the working directory if i'm using SQLDoc via CruiseControl. Is there a specific parameter ?
  • Options
    I would recommend you put the .sqldoc file in source control, so it is checked out automatically as part of your CI process. This means it can be invoked in relative terms.

    You might want to try using the following switch to ensure the documentation output goes somewhere relative to the checkout folder.


    i.e., to put it in the current folder, and assuming you've put nightly.sqldoc in the root source control folder that is checked out by your CI process:

    sqldoc.exe /project:nightly.sqldoc /outputfolder:.

    Let me know if this fixes the problem.

    David Atkinson
    Product Manager
    Redgate Software
  • Options

    We tried the "ouputfolder" tag already and CruiseControl's still failing.
    Here's the other two things we tried :
    1/ Automated task using Windows Task Planner :
    Once we set an execution repository, the job is fine.
    2/ Using CCNet, we tried to override the default execution repository but the issue is still the same.

    Now, the issue seems to be more likely related to CCNet than to SqlDoc2.
  • Options
    Another thing worth trying is running the CruiseControl service with administrator privileges, as there is a known issue with SQL Doc which means it requires permissions to write temporary files to its installation folder. This is something we eventually plan to fix.

    Does the sqldoc command line work when you run it from a command prompt?

    David Atkinson
    Product Manager
    Redgate Software
  • Options
    I tried to run it using simple command line and it worked.
    Your last answer seems to be the way to solve my problem.

    Considering I'm not the CruiseControl owner, I can't change the user it is running with. Anyway, we found a workaround (using Windows Task Planner). It is not perfect, but that will have to do.

    Seems like we have to wait for that temp files issue you are talking about. Can you tell us more about it ?
  • Options
    All I can say is that the issue has internal ID SDOC-1481

    I can't say when this will be fixed, but hopefully it won't be too long!
    David Atkinson
    Product Manager
    Redgate Software
Sign In or Register to comment.