Máy chủ Sql 'Không cho phép lưu thay đổi' ► Ngăn chặn lưu thay đổi yêu cầu tạo lại bảng


749

Khi tôi tạo một bảng trong SQL Server và lưu nó, nếu tôi cố gắng chỉnh sửa thiết kế bảng, như thay đổi một loại cột từ int thành real, tôi gặp lỗi này:

Lưu thay đổi không được phép. Thay đổi bạn đã thực hiện yêu cầu bỏ bảng sau và tạo lại. Bạn đã thực hiện các thay đổi đối với bảng không thể được tạo lại hoặc bật tùy chọn ngăn lưu các thay đổi yêu cầu bảng được tạo lại.

Tại sao tôi phải tạo lại bảng? Tôi chỉ muốn thay đổi một loại dữ liệu từ smallintsang real.

Bàn trống và tôi đã không sử dụng nó cho đến bây giờ.


Câu trả lời:


1466

Từ hộp thoại Lưu (Không được phép) trên MSDN :

Các Lưu (không được phép) hộp thoại cảnh báo bạn rằng lưu thay đổi không được phép vì những thay đổi bạn đã thực hiện yêu cầu các bảng niêm yết bị rớt và tái tạo.

Các hành động sau đây có thể yêu cầu tạo lại bảng:

  • Thêm một cột mới vào giữa bảng
  • Đánh rơi một cột
  • Thay đổi tính vô hiệu của cột
  • Thay đổi thứ tự của các cột
  • Thay đổi kiểu dữ liệu của cột <<<<

Để thay đổi tùy chọn này, trên menu Công cụ , bấm Tùy chọn , mở rộng Nhà thiết kế , sau đó bấm Bảng và Trình thiết kế cơ sở dữ liệu . Chọn hoặc xóa hộp kiểm Ngăn lưu thay đổi yêu cầu bảng được tạo lại .

Xem thêm Mục nhập blog của Colt Kwong:
Không cho phép lưu các thay đổi trong SQL 2008 Management Studio


7
SSMS không nên để bạn làm điều gì đó không an toàn mà không cảnh báo bạn trước. Nhưng có một bản sao lưu trên tay, chỉ trong trường hợp.
Robert Harvey

40
Tùy chọn này cho SSMS biết rằng nó có thể đi trước và tạo Bảng tạm thời trong lược đồ mới, sao chép dữ liệu vào đây, sau đó xóa bảng cũ và đổi tên Bảng tạm thời về tên ban đầu. Tất cả đều tốt để làm như trong giao dịch, tuy nhiên các mối quan hệ sẽ bị phá vỡ và được tạo lại để nếu không 100% thì có thể làm điều gì đó bất ngờ.
Justin King

13
Không biết tại sao tôi không thể nhớ những bước đơn giản đó để thả xuống tùy chọn này và tôi luôn phải tìm kiếm giải pháp. Hehehehehe. Cảm ơn người đàn ông!
Nhà phát triển

8
Holy cow - bạn chỉ có thể tắt cái này để vượt qua lỗi này ?? Tôi không biết điều này và trong 3 năm qua đã sống trong nỗi sợ hãi khi vô tình thiết kế một bảng mà không có Thông số nhận dạng và phải tạo một bảng mới. Mẹo tuyệt vời!
nocarrier

4
Đây là CAVEAT của Microsoft về việc vô hiệu hóa tùy chọn 'Ngăn chặn thay đổi ...': support.microsoft.com/en-us/kb/956176 . Về cơ bản, bạn có thể mất siêu dữ liệu như Theo dõi thay đổi, nếu đó là một tính năng bạn sử dụng.
Baodad 7/10/2015

205

Bạn có sử dụng SSMS không?

Nếu có, hãy xem menu Công cụ >> Tùy chọn >> Nhà thiết kế và bỏ chọn Ngăn chặn Lưu các thay đổi yêu cầu tạo lại bảng


Công cụ >> Tùy chọn, v.v. không phải "Menu" (chỉ từ quan điểm của ssms 2014 mà tôi tin là giống nhau ở các phiên bản cũ hơn)
Tom Stickel

@TomStickel Tôi đoán ý tôi là vào menu: "Công cụ"
ypercubeᵀᴹ

: P Có, tôi đã tìm thấy, chỉ figured tôi sẽ bình luận cho bất cứ ai thực sự sẽ nhận được "mắc kẹt", đáng sợ tôi biết nhưng tôi cho rằng một số người có thể nhanh chóng ném tay lên ... thx
Tom Stickel

2
@NeilMeyer hãy cẩn thận rằng hộp kiểm được chọn ở đó vì một lý do. Đó là một biện pháp an toàn để ngăn chặn các hoạt động sẽ làm rơi và tạo lại một bảng (và do đó làm mất tất cả dữ liệu của nó ! Vì vậy, hãy thận trọng!
ypercubeᵀᴹ

các mối quan hệ giữa các bảng sẽ bị mất nếu các bảng được tạo lại như thế này?
Neil Meyer

78

Ngăn chặn lưu các thay đổi yêu cầu tạo lại bảng

Năm lần nhấp nhanh

Ngăn chặn lưu các thay đổi yêu cầu tạo lại bảng trong năm lần nhấp

  1. Công cụ
  2. Tùy chọn
  3. Nhà thiết kế
  4. Ngăn chặn lưu các thay đổi yêu cầu tạo lại bảng
  5. OK .

Sau khi lưu, lặp lại thủ tục để đánh dấu lại vào hộp. Điều này bảo vệ an toàn chống mất dữ liệu tình cờ.

Giải thích thêm

  • Theo mặc định, SQL Server Management Studio ngăn chặn việc bỏ bảng, vì khi bảng bị hủy, nội dung dữ liệu của nó sẽ bị mất. *

  • Khi thay đổi kiểu dữ liệu của cột trong dạng xem Thiết kế của bảng, khi lưu các thay đổi, cơ sở dữ liệu sẽ bỏ bảng bên trong và sau đó tạo lại một kiểu mới.

* Hoàn cảnh cụ thể của bạn sẽ không gây ra hậu quả vì bảng của bạn trống. Tôi cung cấp giải thích này hoàn toàn để cải thiện sự hiểu biết của bạn về thủ tục.


27

Để thay đổi Ngăn chặn lưu thay đổi yêu cầu tùy chọn tạo lại bảng, hãy làm theo các bước sau:

Mở SQL Management Management Studio (SSMS). Trên menu Công cụ, bấm Tùy chọn.

Trong ngăn dẫn hướng của cửa sổ Tùy chọn, bấm Nhà thiết kế.

Chọn hoặc xóa hộp kiểm Ngăn lưu thay đổi yêu cầu hộp kiểm tạo lại bảng, sau đó bấm OK.

Lưu ý : Nếu bạn tắt tùy chọn này, bạn sẽ không được cảnh báo khi bạn lưu bảng rằng những thay đổi bạn đã thực hiện đã thay đổi cấu trúc siêu dữ liệu của bảng. Trong trường hợp này, mất dữ liệu có thể xảy ra khi bạn lưu bảng.

nhập mô tả hình ảnh ở đây


Trình thiết kế bảng rất tiện dụng, nhưng bạn không thể đạt được mọi thứ với nó
Sitecore Sam

22

Đây là vấn đề thiết lập rất dễ dàng và đơn giản có thể được khắc phục trong 5 giây bằng cách thực hiện theo các bước sau

Để cho phép bạn lưu các thay đổi sau khi bạn thay đổi bảng, vui lòng làm theo các bước sau cho cài đặt sql của bạn:

  1. Mở Microsoft SQL Server Management Studio 2008
  2. Bấm tùy chọn menu Công cụ, sau đó bấm Tùy chọn
  3. Chọn nhà thiết kế
  4. Bỏ chọn tùy chọn "ngăn lưu thay đổi yêu cầu tạo lại bảng"
  5. Nhấn vào OK
  6. Cố gắng thay đổi bảng của bạn
  7. Những thay đổi của bạn sẽ được thực hiện như mong muốn

8
Làm thế nào để thêm vào câu trả lời được chấp nhận theo bất kỳ cách nào?
Màu xanh bất tử

17

Đi vào Công cụ nằm ở menu trên cùng.
Chọn tùy chọn từ danh sách thả xuống. Bây giờ bạn có một cửa sổ bật lên, chọn tùy chọn Nhà thiết kế nằm ở khối menu bên trái. Bỏ chọn tùy chọn Ngăn chặn lưu các thay đổi yêu cầu tạo lại bảng . Bấm vào nút OK.


12

Bỏ chọn Prevent saving changes that require table re-creationhộp khỏi Công cụ ► Tùy chọn ► Tab Nhà thiết kế .

Ví dụ về máy chủ SQL 2012:

nhập mô tả hình ảnh ở đây


12

Điều này có thể được thay đổi dễ dàng trong Microsoft SQL Server .

  1. Mở Microsoft SQL Server Management Studio 2008
  2. Nhấp vào menu Công cụ
  3. Bấm Tùy chọn
  4. Chọn nhà thiết kế
  5. Bỏ chọn "Ngăn chặn lưu thay đổi yêu cầu tạo lại bảng"
  6. Nhấn vào OK

nhập mô tả hình ảnh ở đây


7

Sao chép từ liên kết này "... Quan trọng Chúng tôi khuyên bạn không nên khắc phục sự cố này bằng cách tắt tùy chọn Ngăn chặn lưu thay đổi yêu cầu tạo lại bảng. Để biết thêm thông tin về các rủi ro khi tắt tùy chọn này, hãy xem" Thêm thông tin "phần. ''

"... Để khắc phục sự cố này, hãy sử dụng các câu lệnh Transact-SQL để thực hiện các thay đổi đối với cấu trúc siêu dữ liệu của bảng. Để biết thêm thông tin, hãy tham khảo chủ đề sau trong SQL Server Books Online

Ví dụ: để thay đổi cột MyDate của kiểu datetime trong bảng có tên MyTable để chấp nhận các giá trị NULL bạn có thể sử dụng:

bảng thay đổi MyTable thay đổi cột MyDate7 datetime NULL "


2
Với rất nhiều câu trả lời đều nói cùng một điều, đây là câu trả lời tôi đang tìm kiếm vì tôi có dữ liệu trực tiếp trong bảng mà tôi không muốn mất. Tôi cần cập nhật một cột thập phân từ 0 chữ số thập phân thành 2 chữ số thập phân và câu lệnh thay đổi đơn giản hoạt động hoàn hảo!
stitz

Bi kịch ở đây là SSMS nên thực hiện chính xác điều này dưới mui xe và do đó không yêu cầu thả bảng
m12lrpv

6

Và chỉ trong trường hợp ai đó ở đây cũng không chú ý (như tôi):

Đối với Microsoft SQL Server 2012, trong hộp thoại tùy chọn, có một hộp kiểm nhỏ lén lút che giấu tất cả các cài đặt khác. Mặc dù tôi phải nói rằng tôi đã bỏ lỡ con quái vật nhỏ đó suốt thời gian qua !!!

Sau đó, bạn có thể tiến hành các bước, người thiết kế, bỏ chọn ngăn chặn lưu blah blah blah ...

lén lút_check_box_in_option



2

1) Công cụ mở được đặt lên hàng đầu.
2) Chọn tùy chọn từ Danh sách chọn.
3) Bây giờ Đến cửa sổ bật lên và bây giờ bạn có thể chọn tùy chọn nhà thiết kế từ danh sách các menu ở bên trái.
4) Bây giờ ngăn chặn lưu thay đổi cần phải được bỏ chọn mà tạo lại bảng cần thiết. Bây giờ bấm vào OK.


1

Từ menu Công cụ, nhấp vào Tùy chọn, chọn Nhà thiết kế từ menu bên và bỏ chọn ngăn thay đổi có thể dẫn đến giải trí của bảng. Sau đó lưu các thay đổi


0

Nếu bạn không thể thấy "Ngăn chặn lưu thay đổi yêu cầu tạo lại bảng" trong danh sách như thế Hình ảnh

Bạn cần kích hoạt theo dõi thay đổi.

  • Nhấp chuột phải vào cơ sở dữ liệu của bạn và nhấp vào Thuộc tính
  • Nhấp vào theo dõi thay đổi và làm cho nó kích hoạt
  • Đi tới Công cụ -> Tùy chọn -> Thiết kế lại và bỏ chọn nó.

0

Nếu bạn sử dụng máy chủ quản lý máy chủ sql, hãy vào Công cụ >> Tùy chọn >> Người thiết kế và bỏ chọn Ngăn chặn Lưu các thay đổi yêu cầu tạo lại bảng Bảng Nó hoạt động với tôi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.