خطای save change is not permitted sql server | دلایل بروز و چگونگی رفع آن

خطای save change is not permitted sql server | دلایل بروز و چگونگی رفع آن

معرفی زبان SQL و نرم‌افزار SQL Server Management Studio

زبان SQL یا Structured Query Language یک زبان استاندارد برای ساخت و ایجاد تغییر در پایگاه داده است. SQL بر اساس روابط جبر و دیفرانسیل و انتگرال چندگانه طراحی شده است. شرکت مایکروسافت در نرم‌‎افزار Microsoft SQL Server از سیستم مدیریت پایگاه داده رابطه‌ای برای ذخیره و بازیابی داده با دستور دیگر برنامه‌های کامپیوتر استفاده می‌کند. برنامه‌نویس‌ها از دیتابیس Microsoft SQL Server Management Studio به منظور پیکربندی، مدیریت و اداره تمام اجزا و داده‌های موجود در Microsoft SQL Server استفاده می‌کنند. یکی از خطاهای رایج در این زمینه خطای save vhange is not permitted sql server است.

این خطا هنگام ذخیره تغییرات جدول در SQL Server Management Studio (SSMS) ظاهر می‌شود. طبق محتوای پیام خطا "ذخیره تغییرات مجاز نیست"، پس از ظاهر شدن این خطا تمام تغییراتی که در جدول انجام داده‌اید به حالت اولیه برمی‌گردد. شاید از خود بپرسید چرا با وجود آنکه تمام مجوزهای لازم برای دسترسی و انجام این عملات DDL در جدول را داشتید امکان انجام آن را وجود ندارد؟ مزایا و معایب این مجوز چیست؟ در این مطلب با هم به بررسی علت این مشکل و روش برطرف کردن آن می‌پردازیم.

 

علائم بروز خطای save change is not permitted sql server

خطای save change is not permitted sql server در هنگام ذخیره تغییرات جدول با استفاده از Designer در SQL Server Management Studio ظاهر می‌شود. متن پیام خطا عبارت است از: "ذخیره تغییرات مجاز نیست". تغییراتی که انجام داده‌اید نیازمند حذف جدول بالا و ایجاد مجدد آن است. این امکان وجود دارد که تغییراتی که در جدول ایجاد کرده‌اید امکان‌پذیر نباشد یا گزینه "جلوگیری از ذخیره تغییرات" را فعال کرده‌اید که ایجاد دوباره جدول را غیر ممکن می‌کند."

این مشکل زمانی بروز پیدا می‌کنید که شما یک یا چند مورد از تغییرات زیر را در جدول ایجاد کرده باشید:

  • تنظیمات Aloow Nulls را برای یک ستون تغییر داده‌اید
  • ترتیب ستون‌ها در جدول را عوض کرده‌اید
  • نوع ستون داده را تغییر داده‌اید
  • یک ستون جدید اضافه کرده‌اید
  • شما filegroup جدول را تغییر دادید یا اطلاعات text/image را عوض کرده‌اید

چرا خطای save change is not permitted sql server ظاهر می‌شود؟

خطای save change is not permitted sql server به دلیل فعال بودن پیش‌فرض گزینه Prevent saving changes that require the table re-creation در محیط SQL Server Management Studio ظاهر می‌شود. به این ترتیب زمانی که ساختار یک جدول را به گونه‌ای تغییر می‌دهید که ابرداده آن عوض می‌شود و در ادامه قصد دارید جدول را ذخیره کنید، این جدول جدید باید بر اساس تغییرات اخیر دوباره ساخته شود. این کار می‌تواند منجر به از دست رفتن ابرداده شود و به طور مستقیم داده‌ها نیز در طول ساخت دوباره از بین بروند. اگر شما گزینه Prevent saving changes that require the table recreation را در بخش Designer محیط SQL Server Management Studio (SSMS) Options فعال کنید در اینجا متن خطایی که در بخش پیشین به آن اشاره شد نمایش داده می‌شود.

چگونه خطای save change is not permitted sql server را برطرف کنیم؟

برای حل این مشکل باید از دستورات ALTER TABLE Transact-SQL برای ایجاد تغییرات در ساختار ابرداده یک جدول استفاده کنید. برای مثال برای تغییر ستون MyDate از نوع datetime در جدولی به نام MyTable به صورتی که بتوان پذیرش مقادیر NULL را ممکن ساخت باید از کد زیر استفاده کنید:

alter table MyTable alter column MyDate7 datetime NULL

اطلاعات بیشتر درباره خطای save change is not permitted sql server

شما می‌توانید با برخی روش‌ها گزینه Prevent saving changes that require the table re-creation را تغییر دهید. باید توجه داشته باشید که با این کار دیگر درباره تغییر در ساختار ابرداده به شما هشدار داده نمی‌شود و ممکن است اطلاعات جدول را پس از ذخیره ناخواسته از دست دهید.

برای تغییر این گزینه مراحل زیر را دنبال کنید:

  1. وارد محیط نرم‌افزار SQL Server Management Studio شوید
  2. منو Tools را انتخاب کنید و بر روی Options کلیک کنید
  3. در صفحه Options گزینه Designers را انتخاب کنید
  4. در نهایت تیک Prevent saving changes that require the table re-creation را بردارید و پایان تغییرات را تایید کنید

خطر غیرفعال کردن گزینه Prevent saving changes that require table re-creation

هرچند غیرفعال کردن گزینه Prevent saving changes that require table re-creation به شما کمک می‌کند تا مجبور به ساخت یک جدول جدید نشوید، اما تغییراتی ایجاد می‌کند که در نهایت به از بین رفتن داده‌ها می‌انجامد. برای مثال فرض کنید که ویژگی Change Tracking را در SQL Server به منظور ردیابی تغییرات جدول فعال کرده‌اید. در این صورت هنگامی که موجب تغییر در جدول می‌شوید پیام خطا که در بخش‌های بالا ذکر شد از طرف مایکروسافت نمایش داده می‌شود. با غیرفعال کردن این گزینه دیگر در هنگام ایجاد تغییرات در جدول هشدار دریافت نخواهید کرد. به همین دلیل به شما پیشنهاد می‌کنیم برای رفع این خطا گزینه مذکور را به طور کامل غیرفعال نکنید.

برای اطمینان از فعال بودن ویژگی Change Tracking برای جدول مراحل زیر را انجام دهید:

  1. در نرم‌افزار SQL Server Management Studion به دنبال گزینه جدول در Object Explorer بگردید
  2. بر روی گزینه جدول کلیک راست کنید و سپس گزینه Properties را انتخاب کنید
  3. در دیالوگ باکس Table Properties گزینه Change Tracking را کلیک کنید. اگر گزینه مذکور برای جدول فعال یا غیرفعال باشد می‌توان آن را در این بخش مشاهده کرد

استفاده از دستورات Transact-SQL

شما در هنگام فعال بودن ویژگی Change Tracking می‌توانید با استفاده از دستورات Transact-SQL برای تغییر ساختار ابرداده جدول استفاده کنید. با اینحال در برخی شرایط می‌توان تیک گزینه را برداشت تا بتوان راحتتر با SSMS Designers کار کرد.

در زیر این شرایط را با هم مرور می‌کنیم:

  • شما در محیط آزمایشی حضور دارید و نگران داده‌ها نیستید
  • نیاز به انجام برخی عملیات دارید که از طریق T-SQL امکان‌پذیر نیستند. برای مثال می‌خواهید یک ستون جدید در بین دیگر ستون‌ها ایجاد کنید. در این شرایط باید از قبل جدول را به خوبی تجزیه و تحلیل کنید تا برای بروز خطا یا ساخت جدول جدید همه چیز آماده باشد
  • اطمینان دارید که هیچ نوع داده مرتبط مثل تغییر مسیر داده‌ها که به جدول شما مربوط باشد وجود ندارد
  • از قدرت سخت‌افزاری سیستم اطمینان دارید و می‌دان بدون صرف زمان اضافی به نتیجه برسید

اهمیت برطرف کردن خطای SQL در مدیریت پایگاه داده

بروز خطای save change is not permirred sql server می‌تواند تمام زحمات شما حین وارد کردن داده‌ها یا ایجاد تغییر در جدول را به باد بدهد. بنابراین باید با شناخت این خطا، دلایل ایجاد آن و چگونگی رفع آن کاملا آشنا باشید تا با هیچگونه مشکلی مواجه نشوید.



سوالات متداول
سوال:

خطای Save Change Is Not Permitted SQL Server چیست؟

پاسخ: این خطا زمانی رخ می‌دهد که شما سعی می‌کنید تغییراتی در ساختار یک جدول SQL Server ایجاد کنید که مستلزم حذف و ایجاد مجدد جدول است. به عنوان مثال، اگر سعی کنید یک فیلد جدید به جدول اضافه کنید که دارای نوع داده‌ای متفاوت از فیلدهای موجود در جدول است، این خطا رخ می‌دهد.

سوال:

آیا این خطا در سایر نسخه‌های SQL Server نیز رخ می‌دهد؟

پاسخ: بله، این خطا در تمام نسخه‌های SQL Server رخ می‌دهد.

سوال:

آیا راه‌حل دیگری برای رفع خطای "Saving changes is not permitted" در SQL Server وجود دارد؟

پاسخ: بله، راه‌حل دیگری نیز وجود دارد که می‌توانید برای رفع این خطا استفاده کنید. این راه‌حل شامل ایجاد یک نسخه پشتیبان از جدول و سپس اعمال تغییرات مورد نظر روی نسخه پشتیبان است. پس از اعمال تغییرات، می‌توانید جدول اصلی را با نسخه پشتیبان جایگزین کنید.

تو پیشگامیت، میتونی سوالات رو بپرسی و هم میتونی مطلب منتشر کنی.

پیشگام پلاس   پرسش و پاسخ

ثبت یک نظر

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی مشخص شده اند *

  ورود / ثبت نام با حساب گوگل