SQL SERVER – Fix : Management Studio Error : Saving Changes in 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 the table to be re-created

Today, we will delve into a very simple issue that one of the Jr. Developers at my organization confronted. I have a preference for T-SQL. According to me, all the developers should always use T-SQL instead of Design feature of SQL Server Management Studio (SSMS). In fact, sound knowledge of T-SQL has the potential to make a huge difference in the development of the developer. One issue with using design mode of SSMS is that it sometimes adds too much overhead to the actual code and locks up the complete database. In the earlier version of SSMS, it was quite common to see that even on doing a small change the whole SSMS got hanged and went unresponsive till the operation was over.

The reason for SSMS to go unresponsive is that when some operations (i.e. adding column, changing datatype of any column, etc) happen, it has to do much more work than the actual operation. Let us now examine an operation where we will add a new column to an already existing table.

  • Transaction starts.
  • When a new column is added SSMS renames the existing table to temp table.
  • After that, it creates a new table with new specification.
  • Now, SSMS has two tables: copy of  previous table with data and empty table with new structure.
  • SSMS now starts moving older data from older table to newer table.
  • If there is any error, it rolls back transaction.
  • If there is no error, it commits all the previous operations.
  • Transaction ends.

This entire operation is very resource intensive and puts lock on SQL Server tables in operation, eventually hanging SSMS.

SQL Server 2008 SSMS has new a feature that averts this issue. SSMS prevents user from running any operation that goes through the above-mentioned process. Let us see an example for the same.

First, create table using the following script in any database.

CREATE TABLE dbo.Table_1
(
ID INT NOT NULL,
First VARCHAR(50) NOT NULL,
Second VARCHAR(50) NOT NULL,
Third VARCHAR(50) NOT NULL
)
ON [PRIMARY] GO

Once the table is created open the table in SSMS by clicking on the table name and selecting “Design.” Try to include another column to the existing table and click on save (CTRL+S). It will prevent it from saving and will emit the following error in popup.

Saving Changes in 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 the table to be re-created

SQL SERVER - Fix : Management Studio Error : Saving Changes in 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 the table to be re-created preventtable1

I like how SSMS takes stance of displaying warning message and stops user from going further to do operation, thereby preventing hanging of SSMS. However, this feature can cause inconvenience in a situation when one is required to save table using SSMS. If such situation arises, then this feature can be turned off by going to Menu >> Tools >> Options >> Designers >> Uncheck “Prevent Saving changes that require table re-creation”.

SQL SERVER - Fix : Management Studio Error : Saving Changes in 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 the table to be re-created preventtable

This restriction only applies to operation attempted using only SSMS. If modification of tables are attempted using T-SQL in Query Editor, it will work just fine!

Reference : Pinal Dave (https://blog.sqlauthority.com)

Database, SQL Error Messages, SQL Scripts, SQL Server Management Studio
Previous Post
SQLAuthority News – Gandhinagar SQL Server User Group Meeting – International Speaker Visiting
Next Post
SQLAuthority News – SQL Server Energy Event – Mark Your Calendar – May 20, 2009

Related Posts

71 Comments. Leave new

  • Thank you.

    Reply
  • wow. your page is a lifesaver. I have learn more reading here on your pages that I have in some of my classes. thank you so much for posting all this Knowledge.

    Reply
  • Thanks !

    Reply
  • Great! This was such a help. I was tired of deleting the table and recreating a new one every time I needed to add or change a column.

    Reply
  • I don’t understand the why there is a difference in safeguards between SSMS and T-SQL in the editor mode. So it won’t let me make a change in SSMS b/c I might screw something up, but if I do it using T-SQL then I’m always perfect? I will never make a mistake? Of course not. So why not block me from making changes using T-SQL as well?

    Second, if I make the change in SSMS, it could potentially hang the server for very large tables. But if I make the change using T-SQL it won’t hang the server? The change is just made instantaneously with no performance impact? If that is the case, why isn’t SSMS smart enough to take the change I made and create the T-SQL for me behind the scenes and execute it. Thus, there would be no performance impact. Again, this doesn’t make sense that SSMS affects performance but T-SQL can somehow magically change a database structure with no performance impact.

    Can you explain this better? I’m happy to know how to make the changes to me dev database with SSMS now, but the reasoning doesn’t seem right. Thanks.

    Reply
  • Afzaal ahmad
    March 7, 2012 4:28 pm

    Thanks it Work for me

    Reply
  • This worked perfectly. Kind of scary recreating the table when I only need to increase 1 fields size!

    Reply
  • Actually Toad for SQL Server does a whole lot of a better job when it comes to designing tables and altering them without having to drop them and re-create them. Too bad it costs money and is not included with SQL Server, MS should have come up with something comparable in quality, SSMS is really poor in features and slow compared to TOAD which is a mind blowing piece of software for SQL Server development.

    Reply
  • Thank you

    Reply
  • Panu Boonpromsook
    July 4, 2012 12:43 pm

    Thank you so much. I was stuck with this problems for couple day.

    Reply
  • Awesome. Thank you.

    Reply
  • Thank you very much.., u saved lot of time for us.

    Reply
  • Sushil Pugalia
    July 18, 2012 9:51 pm

    Thanks for this nice help.

    Reply
  • srikanth kollipara
    August 7, 2012 2:22 pm

    Thanks alot

    Reply
  • Thanks :)

    Reply
  • I see – not only me broke forehead on this problem because there are comments from 2009 to 2012:)! Thanks & thanks

    Reply
  • thanks pinal because of you thousands of hrs are saved daily……….great work

    Reply
  • thank u

    Reply
  • very good. thx you

    Reply
  • Burak TARHANLI
    January 7, 2013 6:44 pm

    Thank you, master! This is a great article, like all the others.

    Reply

Leave a Reply