Deleting multiple columns from multiple objects

Is there a way to delete from multiple tables/views a column with a specific
name? For example, a database has 50 tables and 25 views all have a column
named ColumnA. Is it possible to write a simple script that will delete
every column named ColumnA from the database?

Seems to be it would be possible and I can somewhat vision it using
sysobjects but without wanting to spend too much time generating the script
(when I could in shorter time manually delete) thought I'd pose the question.

Thanks.
doverj [ Mi, 02 April 2008 01:40 ] [ ID #1933805 ]

Re: Deleting multiple columns from multiple objects

Hi,

for the tables you could create a script using a cursor and do some
dynamic sql in it with ALTER TABLE ... DROP COLUMN ... getting table
names from sys.tables or INFORMATION_SCHEMA.TABLES. Regarding views I
see no proper way of automating it.

However developing and testing of that will most likely take as much
time as doing it manually (using a script window and simply replace
the table name) for 50 tables. Further scripting delete actions for
your database objects can be dangerous. If you make a mistake in it
you quickly loose a lot of things which you did not want to...

brgds

Philipp Post
Philipp Post [ Mi, 02 April 2008 16:30 ] [ ID #1933820 ]

Re: Deleting multiple columns from multiple objects

doverj (u42617 [at] uwe) writes:
> Is there a way to delete from multiple tables/views a column with a
> specific name? For example, a database has 50 tables and 25 views all
> have a column named ColumnA. Is it possible to write a simple script
> that will delete every column named ColumnA from the database?
>
> Seems to be it would be possible and I can somewhat vision it using
> sysobjects but without wanting to spend too much time generating the
> script (when I could in shorter time manually delete) thought I'd pose
> the question.

SELECT 'ALTER TABLE ' + o.name + ' DROP COLUMN nisse'
FROM sysobjects o
JOIN syscolumns c ON o.id = c.id
WHERE o.type = 'U'
AND c.name = 'nisse'

For the views, I'm afraid manual editing is the only option. Hm, I think
Red Gate has a refactoring tool, but I have not looked into it.


--
Erland Sommarskog, SQL Server MVP, esquel [at] sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downlo ads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books .mspx
Erland Sommarskog [ Mi, 02 April 2008 23:46 ] [ ID #1933831 ]
Datenbanken » comp.databases.ms-sqlserver » Deleting multiple columns from multiple objects

Vorheriges Thema: XML vs. Relational Data
Nächstes Thema: boot camp