/Include:Identical different from /include:identical
Ausarb
Posts: 6
SQL Compare Command Line V9.0.0.79
I have a target DB that is the exact same as the source except for a single table in the target DB has an extra column. When I sync source to target I expect that the column in target should be removed. If I don't put any /Include or similar into the command line, it will delete the column as expected, but if I run it again and that column doesn't exist (the DB's are now 100% the same) I get a return code of 63, which blows up my CI build on Jenkins. According to the documentation, it says to add "/Include:Identical" to suppress that error code. When I do put that in, I no longer get the 63 RC when the DB's are the same, but it no longer updates the target DB by deleting the column when they are different.
BUT..... If I make it all lower case (/include:identical) it works as expected, both when the DB's are exactly the same and when the target starts out with the extra column. This also appears to be the same behavior as using the deprecated /allowIdenticalDatabases flag. Is this a bug or am I reading the documentation wrong? After a bit more poking, it isn't /Include that needs to be all lower case, but just :identical. My guess is that multiple pieces of code parsing the command line arguments, with the one suppressing code 63 being case insensitive.
Works: "C:\Program Files (x86)\Red Gate\SQL Compare 9\SQLCompare" /scr1:.\CCADatabase /server2:(local) /db2:TrunkJenkinsCCA /o:Default /include:identical /sync
Doesn't Work: "C:\Program Files (x86)\Red Gate\SQL Compare 9\SQLCompare" /scr1:.\CCADatabase /server2:(local) /db2:TrunkJenkinsCCA /o:Default /Include:Identical /sync
From the doc:
Thanks for this post for getting me in the right direction..
http://www.red-gate.com/messageboard/vi ... hp?t=13779
I have a target DB that is the exact same as the source except for a single table in the target DB has an extra column. When I sync source to target I expect that the column in target should be removed. If I don't put any /Include or similar into the command line, it will delete the column as expected, but if I run it again and that column doesn't exist (the DB's are now 100% the same) I get a return code of 63, which blows up my CI build on Jenkins. According to the documentation, it says to add "/Include:Identical" to suppress that error code. When I do put that in, I no longer get the 63 RC when the DB's are the same, but it no longer updates the target DB by deleting the column when they are different.
BUT..... If I make it all lower case (/include:identical) it works as expected, both when the DB's are exactly the same and when the target starts out with the extra column. This also appears to be the same behavior as using the deprecated /allowIdenticalDatabases flag. Is this a bug or am I reading the documentation wrong? After a bit more poking, it isn't /Include that needs to be all lower case, but just :identical. My guess is that multiple pieces of code parsing the command line arguments, with the one suppressing code 63 being case insensitive.
Works: "C:\Program Files (x86)\Red Gate\SQL Compare 9\SQLCompare" /scr1:.\CCADatabase /server2:(local) /db2:TrunkJenkinsCCA /o:Default /include:identical /sync
Doesn't Work: "C:\Program Files (x86)\Red Gate\SQL Compare 9\SQLCompare" /scr1:.\CCADatabase /server2:(local) /db2:TrunkJenkinsCCA /o:Default /Include:Identical /sync
From the doc:
-
- "/allowIdenticalDatabases has been deprecated. Please use /include:identical instead. /Include:Identical suppresses the exit code if the two data sources are identical. If /Include:Identical is not set, SQL Data Compare returns the error code 63."
- "The databases being compared are identical with respect to the data included in the comparison. Use /Include:Identical to suppress this error."
Thanks for this post for getting me in the right direction..
http://www.red-gate.com/messageboard/vi ... hp?t=13779
Comments