What's a good use case for SELECT * in production code?
I generally abhor SELECT * in production code, and I've been in a situation where its use led to massive amounts of rework later.  Your case does look like a fair use of it though.

The place where I find SELECT * to be a must - and its evil cousin "INSERT INTO tbl" without a column list - is in an archiving situation, where rows are being moved to another table that must have the same structure.

INSERT INTO SalesOrderArchive  -- Note no column list
SELECT *
  FROM SalesOrder
 WHERE OrderDate &lt; @OneYearAgo

DELETE FROM SalesOrder
 WHERE OrderDate &lt; @OneYearAgo


If a new column is added to SalesOrder in the future, but not to SalesOrderArchive, the INSERT will fail.  Which sounds bad, but it's actually a really good thing!  Because the alternative is much worse.  If all the columns were listed on the INSERT and the SELECT, then the INSERT would succeed, and so would the following DELETE (which is effectively "DELETE *").  Production code that succeeds doesn't get any attention, and it may be a long time before someone notices that the new column is not being archived, but being silently deleted altogether.