Using dbcc upgrade_object – Sybase 15.0.2 User Manual

Page 127

Advertising
background image

CHAPTER 7 Troubleshooting

Installation Guide

113

Determining whether
select * should be
changed in views

If

dbcc upgrade_object

reports the existence of

select *

in a view, compare the

output of

syscolumns

for the original view to the output of the table, to

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

For example, suppose you have the following statement:

create view all_emps as select * from employees

Before upgrading the

all_emps

view, use the following 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")

Compare the output of the two queries. If the table contains more columns than
the view, and retaining the pre-upgrade results of the

select *

statement is

important, change the

select *

statement to a

select

statement with specific

column names. 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.

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

.

Another way to determine the difference between the columns in the view and
in the new tables is to run

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.

Using dbcc upgrade_object

Syntax

dbcc upgrade_object [ ( dbid | dbname

[, ['database.[owner].]compiled_object_name' |
'check' | 'default' | 'procedure' | 'rule' |
'trigger' | 'view'
[, 'force' ] ] ) ]

where:

Advertising