tags:

views:

254

answers:

2

Is it possible to change a column type in a SQL Server 2008 database from varchar(255) to varchar(MAX) without having to drop the table and recreate?

SQL Server Management Studio throws me an error every time I try to do it using that - but to save myself a headache would be nice to know if I can change the type without having to DROP and CREATE.

Thanks

+5  A: 

You should be able to do it using TSQL.

Something like

ALTER TABLE [table] ALTER COLUMN [column] VARCHAR(MAX)
astander
this worked. thanks
JD
+2  A: 

'Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can't be re-created or enabled the option Prevent saving changes that require table to be re-created.' Option 'Prevent saving changes' is not enabled..

That's a new "feature" in SQL Server Management Studio 2008 which by default is turned on. Whenever you make a larger change, SSMS can only recreate the table by creating a new one and then moving over the data from the old one - all in the background (those changes include re-ordering of your columns amongst other things).

This option is turned off by default, since if your table has FK constraints and stuff, this way of re-doing the table might fail. But you can definitely turn that feature on!

alt text

It's under Tools > Options and once you uncheck that option you can do these kind of changes to table structure in the table designer again.

marc_s
Thanks marc_s. I already had this un-ticked and it was still stopping me from making the changes. The alter statements by astander above worked when I wrote them themselves. Thanks :)
JD
@JD: hmm... odd... usually that is the issue - glad you already have a solution, though!
marc_s