It might be that the ':' in the server name could be converted to a '?' as part of the placeholder handling. If that's the case, using placeholder syntax instead of building the SQL on the fly should work nicely.
Perhaps SQL server doesn't like the name with a colon in it? (I've never seen a server name with a colon in it.) If that's the case, you could rename the server or create an alias for the server.