|  | Posted by rcamarda on 06/27/07 15:25 
On Jun 27, 10:40 am, Erland Sommarskog <esq...@sommarskog.se> wrote:> rcamarda (robert.a.cama...@gmail.com) writes:
 > > I need to alter fields in all my tables of a given database, and I
 > > would to do this via a t-sql script.
 > > Example, I want to change all fields called SESSION_ID to char(6). The
 > > field is usually varchar(10), but the data is always 6 characters in
 > > length. I have serveral fields that are fixed length that I want to
 > > move from varchar to char.
 >
 > > I believe I can find all the tables where the field exists using
 > > select * from INFORMATION_SCHEMA.columns where column_name =
 > > 'SESSION_Id'
 > > but I dont know how to take this into an ALTER TABLE , ALTER COLUMN
 > > that can be automated
 >
 > SELECT 'ALTER TABLE ' + o.name + ' ALTER COLUMN ' + c.name + ' char(6) NULL'
 > FROM   sys.objects o
 > JOIN   sys.columns c ON o.object_id = c.object_id
 > WHERE  c.name = 'SESSION_ID'
 >
 > Run, copy and paste result. If you want it entirely packed, run a cursor
 > over the query and run with EXEC().
 >
 > Beware that this is likely to cause SQL Server to rebuild the table, so it
 > could take some time if tables are large.
 >
 > --
 > Erland Sommarskog, SQL Server MVP, esq...@sommarskog.se
 >
 > Books Online for SQL Server 2005 athttp://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books...
 > Books Online for SQL Server 2000 athttp://www.microsoft.com/sql/prodinfo/previousversions/books.mspx
 
 Thank you Erland!
  Navigation: [Reply to this message] |