2010-03-12 33 views
11

Tôi tự hỏi nếu có một cách để buộc MSSQL Management Studio để tạo ra một kịch bản như thế này:Buộc Management Studio để sử dụng ALTER TABLE thay vì thả/CREATE

ALTER TABLE Mytable 
ADD MyCol bit NOT NULL 
CONSTRAINT MyColDefault 
DEFAULT 0 WITH VALUES 


ALTER TABLE [dbo].Mytable 
ALTER COLUMN MyCol2 int NULL 

GO 

khi tôi thay đổi một tài sản rất đơn giản của một cột trên một bảng. Nếu tôi làm điều này trong nhà thiết kế và yêu cầu kịch bản được tạo ra, tập lệnh không thực hiện các tác vụ đơn giản như vậy, mà thay vào đó sao chép tất cả dữ liệu trong bảng tmp, hãy thả bảng gốc, đổi tên bảng tmp bằng tên bảng ban đầu . Và, tất nhiên, giọt và tái tạo mọi ràng buộc và mối quan hệ.

Có tùy chọn nào tôi có thể thay đổi để thay đổi hành vi này không? Hoặc, điều này có thể là có thể, có một số nguy hiểm mà tôi không thấy trong việc sử dụng ALTER TABLE đơn giản ở trên không?

cảm ơn.

+0

Bao giờ tìm cách để thực hiện Marco này? – AnotherDeveloper

Trả lời

5

Bạn không thể thay đổi hành vi, nó chỉ là tập lệnh mặc định mà nó tạo ra không phải lúc nào cũng hiệu quả nhất. Nó tạo ra các kịch bản theo định dạng nó biết sẽ hoạt động, mặc dù thường xuyên kết quả sẽ chậm và tài nguyên nặng. Tôi khuyên bạn nên quen với việc tạo tập lệnh cho tất cả các thay đổi khi bạn có thể tối ưu hóa nó tốt hơn. Không có gì sai với những gì bạn đã tạo (cung cấp cho bạn không có ràng buộc/phụ thuộc hiện có trên MyCol2 sẽ bị vô hiệu bởi nó trở thành một hàm vô giá trị)

7

Có bạn có thể!

Trong SQL Server Management Studio, hãy chuyển sang chế độ thiết kế bảng cho bảng được đề cập và thực hiện thay đổi của bạn. Tuy nhiên: làm không phải nhấp vào nút "Lưu", nhưng thay vào đó nhấp chuột phải vào chế độ xem thiết kế bảng, sẽ có mục "Tạo thay đổi tập lệnh" ở cuối trình đơn ngữ cảnh của bạn.

alt text http://i40.tinypic.com/33e7ite.png

Bấm vào đó mục menu và bạn sẽ nhận được trình bày một hộp thoại pop-up, trong đó có các tập lệnh T-SQL cần thiết để làm những thay đổi mà bạn đã thực hiện bảng trong thiết kế. Sao chép hoặc lưu mã T-SQL đó và hủy thiết kế, và thì đấy - bạn có tập lệnh thay đổi của mình!

CẬP NHẬT: Marco, xin lỗi, tôi không nghĩ có bất kỳ tùy chọn nào để thay đổi hành vi mặc định, ít nhất là không phải bây giờ. Bạn có thể muốn gửi yêu cầu nâng cao với Microsoft trên Microsoft Connect để đề xuất - ý tưởng hay, tôi sẽ nghĩ!

+1

hi Marc, tôi xin lỗi có lẽ tôi đã không làm cho bản thân mình rõ ràng. Tôi biết điều này, và đây là cách tôi đã biết rằng SQLMS làm những việc theo cách đó. Tôi rất muốn biết liệu có cách nào để modufy hành vi mặc định của nó hay không. Những gì bạn đề nghị là hữu ích để sử dụng kịch bản sau này, và thực sự đó là những gì tôi muốn làm. Quá xấu kịch bản được tạo ra ở đây là cồng kềnh và không hiệu quả tài nguyên trong tình huống bình thường, theo ý kiến ​​khiêm tốn của tôi. tạm biệt! – marco

-1

dễ dàng! chỉ cần truy cập Tool ->Option, sau đó nhấp vào nút Designer và chọn Table and Database designer để bạn có thể bỏ chọn hộp kiểm Prevent saving changes that require ....

Bây giờ, bạn có thể tạo ra bất kỳ phần hiền trên thiết kế bảng của mình!

+3

Điều này sẽ cung cấp cho bạn một lỗi thay vì lưu thay đổi của bạn - nó sẽ không làm cho người dùng thiết kế ALTER TABLE. –

Các vấn đề liên quan