How to handle DropDown list where selected values could become invalid over time?

I use DropDowns linked to database columns where values might become outdated, such as people who are no longer Employees, or Printers that no longer exist. For situations like an issue tracking application, how should I deal with cases where a value stored in the database is no longer in the current DropDown list? In ASP.Net the application just "blows up", which is not acceptable.

I came up with two partial options so far:

  1. For Employees, there is a table which retains old values. However, if I want to allow only current Employees to be picked when creating new data, this is awkward. I tried adding an asterisk to the start of old Employee names and sorting those to the bottom of the list. This is a list with two columns: employee ID and Name. The ID is what is stored in the database column of the Issue record, for example.

  2. For Printers, the list has only one column, so I created a "Safe DropDown" User Control that will show the invalid value at the top of the displayed list. It doesn't blow up, and the value is available, but other users do not have it in their list of current Printers (the true list is not updated in any way). This approach would be harder to do with a two column list - what do I show as the 'name' of a missing entry?

I have not seen any guidance about what to do in cases like these. What is the recommended approach where old values must be displayed, but not selected for new records?