Sweatt was called up from Manitoba of the American Hockey League to fill in for the injured Kevin Bieksa and he paid instant dividends. His wrist shot with 7:29 left to play got the best of Pekka Rinne and snapped a 1-1 deadlock.
The game was scoreless heading into the third period but Nashville took the lead 37 seconds into the stanza on Shea Weber's goal. Alex Burrows tied it 1:58 before Sweatt scored his game-winner.
Roberto Luongo made 26 saves for the Canucks, who go into the all-star break with 71 points -- best in the Western Conference and tied with Philadelphia for most in the NHL.
Vancouver has won its last two games after losing four in a row.
Rinne took the loss with 33 saves.
Teacher apologizes for showing sexual image of herself in class
Interpol investigating stolen passports on missing flight