Preheat the oven to 350°F.
Mix the wet ingredients: In a large mixing bowl, beat together the sugar, vegetable oil, eggs, and vanilla extract until well incorporated. Scrape down the bowl as needed.
Add the sour cream and beat until well combined.
Combine the dry ingredients: In a separate bowl combine the remaining dry ingredients and sift together the flour, baking powder, and salt. Add half the dry ingredients, and half the milk, and beat on low speed just until the flour starts to incorporate. Repeat until all ingredients are added and combined. Use a spatula to scrape down the sides of the bowl and stir the batter from the bottom to the top to ensure it’s well mixed.
Pour the batter into a 9-inch by 13-inch pan and bake at 350°F for 28-32 minutes. Test the cake for doneness by inserting a toothpick into the center of the cake. If the toothpick comes out clean, your cake is done. Remove from the oven and allow to cool completely prior to frosting.
Cut the butter into pieces. Using the paddle attachment, whip the butter for 5-7 minutes, scraping down the bowl occasionally, and beating until the butter is whipped and fluffy.
Add the powdered sugar and mix on low speed until incorporated into the butter then add the vanilla extract and heavy cream and mix to combine. Beat for about 60 seconds.
Continuing beating, increase the speed to medium-high and beat for another 3-5 minutes to whip additional air into the frosting. Spread over cooled cake.