Determining Whether to Change select * in Views

Determine whether columns have been added to or deleted from the table since the view was created.

Perform these queries when dbcc upgrade_object reports the existence of select * in a view:

  1. Compare the output of syscolumns for the original view to the output of the table.
    In this example, you have the following statement:
    create view all_emps as select * from employees
    Warning!   Do not execute a select * statement from the view. Doing so upgrades the view and overwrites the information about the original column information in syscolumns.
  2. Before upgrading the all_emps view, use these queries to determine the number of columns in the original view and the number of columns in the updated table:
    select name from syscolumns 
      where id = object_id("all_emps")
    select name from syscolumns 
      where id = object_id("employees")
  3. Compare the output of the two queries by running sp_help on both the view and the tables that comprise the view.
    This comparison works only for views, not for other compiled objects. To determine whether select * statements in other compiled objects need to be revised, review the source text of each compiled object.
    If the table contains more columns than the view, retain the preupgrade results of the select * statement. Change the select * statement to a select statement with specific column names.
  4. If the view was created from multiple tables, check the columns in all tables that comprise the view and rewrite the select statement if necessary.