Most DBAs don’t get to jump into programming often, but I came from a development background, so I try to use some legitimate code every once in a while. It helps me keep that skill-set fresh. Recently, in my company, we had a need for a unified solution for dealing with archiving, deleting, compressing, and so forth of various types of files. Having an application that can be passed a bunch of parameters and can be triggered by a simple scheduled task is very useful in many aspects of IT.
We used to use ABAKT for these sort of operations, but the project was abandoned a long time ago and we wanted something that we could add to as we needed. So, I had a few hours of downtime one weekend and decided to write one. Everything went very well with the project and it worked almost flawlessly. There was just one problem I ran into that stumped me for a couple days.
The problem cropped up when I was trying to pass a UNC to the application that had a space in it. Such as:
\\someserver.mydomain\theShare\folder\some folder with spaces\anotherFolder\
Initially, I thought, well that’s no problem, just encapsulate the string in double-quotes and we are fine, as so:
"\\someserver.mydomain\theShare\folder\some folder with spaces\anotherFolder\"
However, the command line interface interprets that last \” as an escaped double-quote and NOT a closing double-quote to the beginning of the UNC. This, in turn, causes my C# argument parser to see the string as 4 parameters, rather than 1 long one. The parameters passed to my C# application would be:
- \\someserver.mydomain\theShare\folder\some
- folder
- with
- spaces\anotherFolder”
The way this issue presented really threw me off track several times. I couldn’t figure out why my parameters were so messed up. My solution was to escape out the last backslash, this worked perfectly:
"\\someserver.mydomain\theShare\folder\some folder with spaces\anotherFolder\\"
A little deviation from SQL stuff, but some useful information I wish I could have found when i was working on this project.
0 Comments.