CommandLine Main:Unhandled Exception

Documents SQL Server 2005 and 2008 databases.

Moderators: JonathanWatts, David Atkinson, Michelle Taylor

CommandLine Main:Unhandled Exception

Postby Yann Kahloun » Thu Feb 16, 2012 12:53 pm

Hi,

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) :
CommandLine
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">
<Items>
<Database Version="1" Server="XXX" Database="XXX" IntegratedSecurity="False" DirectoryName="XXX" User="XXX" password="XXX">
<Objects />
</Database>
</Items>
<OutputStyleOptions>
<StandardHTML>
<IncludeTimeStampInFileName value="False" />
</StandardHTML>
<FramedHTML />
<CompiledHelp>
<IncludeTimeStampInFileName value="False" />
</CompiledHelp>
<Word>
<IncludeTimeStampInFileName value="False" />
</Word>
</OutputStyleOptions>
<ObjectExclusions>
<ObjectExclusions />
</ObjectExclusions>
</Project>
Yann Kahloun
 
Posts: 4
Joined: Thu Feb 16, 2012 12:44 pm

Postby Brian Donahue » Fri Feb 17, 2012 4:12 pm

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.
Brian Donahue
 
Posts: 6669
Joined: Mon Aug 23, 2004 10:48 am

Postby David Atkinson » Fri Feb 17, 2012 5:37 pm

@Yann

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

David Atkinson
Red Gate
David Atkinson
 
Posts: 1124
Joined: Mon Dec 05, 2005 4:54 pm
Location: Twitter: @dtabase

Postby Yann Kahloun » Wed Jul 04, 2012 10:17 am

I'm sorry, i couldn't answer quickly.

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

@Brian
I guess I have to specify the working directory if i'm using SQLDoc via CruiseControl. Is there a specific parameter ?
Yann Kahloun
 
Posts: 4
Joined: Thu Feb 16, 2012 12:44 pm

Postby David Atkinson » Wed Jul 04, 2012 10:39 am

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.

/outputfolder:<outputfolder>

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
David Atkinson
 
Posts: 1124
Joined: Mon Dec 05, 2005 4:54 pm
Location: Twitter: @dtabase

Postby Yann Kahloun » Wed Jul 04, 2012 1:10 pm

Hi,

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.
Yann Kahloun
 
Posts: 4
Joined: Thu Feb 16, 2012 12:44 pm

Postby David Atkinson » Wed Jul 04, 2012 2:29 pm

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
David Atkinson
 
Posts: 1124
Joined: Mon Dec 05, 2005 4:54 pm
Location: Twitter: @dtabase

Postby Yann Kahloun » Wed Jul 04, 2012 2:40 pm

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 ?
Yann Kahloun
 
Posts: 4
Joined: Thu Feb 16, 2012 12:44 pm

Postby David Atkinson » Wed Jul 04, 2012 2:57 pm

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
 
Posts: 1124
Joined: Mon Dec 05, 2005 4:54 pm
Location: Twitter: @dtabase


Return to SQL Doc 2

Who is online

Users browsing this forum: No registered users and 1 guest