Taylor Heinicke took a sack Thursday night, but it actually felt kind of good.

It had been nearly two years since the Vikings quarterback played in a game. But he was back on the field for the 17-10 win at Buffalo in the preseason opener.

“It was good to go out there in live action and get hit a little bit,’’ Heinicke said. “But it was fun. It was a good time.”

Heinicke had last appeared Sept. 3, 2015, in the preseason finale at Tennessee, playing well enough that Minnesota kept him on the 53-man roster all season, even though he never was active.

Related Articles Now with Colts, Jonathan Taylor continues to torment Minnesota

John Shipley: Trust your eyes, this is not a good Vikings team

For second straight week, early safety derails Vikings’ chances

Bob Sansevere: Vikings, looking horrendous, need to use Dalvin Cook more

Vikings drop to 0-2 with ugly 28-11 loss to Colts in Indianapolis Last year, though, Heinicke suffered a torn tendon just before training camp when he was locked out of an apartment and his left foot went through a window when he tried to break in. He missed the entire preseason and after being restored to the active didn’t get into a game.

In his return, Heinicke completed 3 of 8 passes against the Bills for 20 yards in third- and fourth-quarter action. He had an interception, saying he “threw it right to” safety Joe Powell.

“I think I needed to calm down a little bit,” Heinicke said. “I think I was a little antsy at first, excited. It was the first time getting on the field in two years, but it wasn’t as clean as I would have liked. So I’m just going to go watch film and try to get better from it.”

Heinicke entered the game with 8:37 left in the third quarter and played the rest of it. On his third play, he picked up an aborted snap and scrambled for 19 yards.

Later on that drive, Heinicke threw a 2-yard touchdown pass to rookie Rodney Adams for a 17-3 Vikings lead.

Still, Heinicke, listed as third string, likely fell further behind in the battle for the backup job behind Case Keenum, who completed 11 of 16 passes for 121 yards. Starter Sam Bradford was just happy to see Heinicke back on the field.

“For him to get back out there is a big step,’’ Bradford said. “I think he’s a good player… The way he handled that first snap, where it was low … that was impressive to keep his composure like that.’’

BOWER IMPRESSES

Defensive end Tashawn Bower was disappointed to not be drafted in April. Now, he’s trying to show that NFL teams made a mistake.

Bower said he “definitely’’ has had a chip on his shoulder since signing with the Vikings after the draft.

Bower looked good in training camp and in his preseason debut. He had a sack, another quarterback hit and a pass defended.

“When it’s your time to make a play, the quarterback gets flushed to you, or you beat your guy one-on-one, so it just came,’’ said Bower, who played at LSU.

Bower is listed third on the depth chart at right end. The Vikings don’t have a lot of depth at defensive end after Everson Griffen, Danielle Hunter and Brian Robison, so Bower has a shot to make the team.

“I think I did all right (in camp),’’ Bower said. “I think there’s still things I need to work on and things that I can improve on every single day.’’

SMITH NOT PLEASED

The Vikings’ first-team defense played two series and didn’t give up any points. Safety Harrison Smith, though, wasn’t satisfied.

Smith, ever the perfectionist, said he missed an assignment that led to big run by the Bills. He apparently was referring to a 15-yard jaunt by Jonathan Williams on the second series.

“I definitely made an error in the run game,’’ said Smith, a two-time Pro Bowl selection. “I got to fix it.’’

The first-team defense also allowed Williams to break a 17-yard run on Buffalo’s first possession. However, the Vikings were playing the run soft with the Bills facing third and 31.