Why would drush sql-sync fail to work?
There's not enough here to tell what's wrong, but there are a couple of things you can do to isolate the problem. Start with drush @uat sql-conf and drush @dev sql-conf; this is what Drush will use to look up the database records for the two sites.  If one of these fails to print the right information, that could cause sql-sync to fail.  Next, try drush sa --with-db @uat and again for @dev, and see if the database record matches what you saw with sql-conf.  If, for example, you copied a database record into your @dev alias and specified the wrong database (one different than the one specified in settings.php), then sql-sync might be successfully copying your production database to some other db on the dev machine.

If neither of these things work, you can try adding first -v (verbose output) and then -d (debug mode -- really a lot of output) and see if there is anything there that might help you find the problem.

Update: Did you make a typo in your update?  drush sql-sync @dev @uat pushes dev to uat, which seems like the opposite operation.  If drush sql-sync @uat @dev works on dev and not on uat, I would recommend carefully comparing your alias files on the two machines and see if there are any differences.  Especially check your 'databases' record in your alias definition, if you have any, and run the diagnostic tests I recommend above.  As a workaround, from uat you could run drush @dev sql-sync @uat @dev, which would remotely run drush sql-sync @uat @dev on the dev machine.