2011-12-09 49 views
8

Làm cách nào để ngăn SQL Management Studio (10.50.2500.0) thêm vào đầu mỗi thủ tục được lưu trữ khi tôi bấm chuột phải/Sửa đổi?Dừng SQL Server Management Studio thêm ANSI_NULLS và QUOTED_IDENTIFIER

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

Không có cài đặt nào trong số này hữu ích cho tôi. ANSI_NULLS ON và QUOTED_IDENTIFIER ON được đặt trên tất cả các máy chủ, DB và kết nối tôi thực hiện. Bên cạnh đó, tôi không bao giờ sử dụng dấu ngoặc kép (tôi đã sử dụng dấu ngoặc cho các từ dành riêng) và tất cả các trường rỗng của tôi, tôi sử dụng đúng IS NULL khi cần.

Tôi xóa cài đặt mỗi khi tôi chỉnh sửa quy trình. Tất cả các thủ tục của tôi đã được thiết lập đúng cách và điều đó sẽ không bao giờ thay đổi trong môi trường của tôi. Verified by:

SELECT uses_ansi_nulls, uses_quoted_identifier 
FROM sys.sql_modules 
WHERE object_id = object_id('proc_name') 
+4

tôi không thể tìm thấy một phương tiện để làm như vậy (Bạn mong muốn chúng xuất hiện trong 'Tools -> Options -> SQL Server Object Explorer -> Scripting'), nhưng bạn có thể không muốn loại bỏ chúng anyway (Chúng có vấn đề gì với bạn?) –

+0

Yeah , có vẻ như đó sẽ là nơi. Phiền thật đấy. Vấn đề duy nhất họ gây ra cho tôi là chúng không cần thiết và lãng phí không gian. Tôi đã cập nhật câu hỏi để giải thích thêm. – ThinkingStiff

Trả lời

7

Không chắc liệu này được tính như một câu trả lời hoặc không trả lời vô ích, nhưng như Damien_The_Unbeliever gợi ý bạn hoàn toàn không muốn SSMS để ngăn chặn kịch bản những dòng. Vì chúng nằm trong bảng sql_modules, chúng tạo thành một phần không tách rời của định nghĩa của thủ tục lưu sẵn, cùng với chính mã SQL. Vì vậy, chúng không thể bị "tắt" hơn bất kỳ mã SQL nào của bạn.

Nếu bạn tạo/thay đổi thủ tục được lưu trữ từ kết nối có giá trị tùy chọn ANSI_NULLS khác nhau được sử dụng khi thủ tục được lưu trữ/xác định, sau đó bạn thay đổi hành vi của thủ tục được lưu trữ, vĩnh viễn! Đó là vì lý do này mà SSMS (và bất kỳ công cụ kịch bản SQL đối tượng nửa nào) sẽ luôn luôn xuất các dòng này - bởi vì nếu bạn loại bỏ chúng hoặc thay đổi chúng, bạn đang thay đổi định nghĩa của thủ tục lưu trữ (loại bỏ chúng, đặc biệt, là xấu bởi vì nó có nghĩa là hành vi của các thủ tục được lưu trữ, tùy thuộc vào kết nối nó được xuất bản từ, có thể thay đổi).

Làm một tìm kiếm google nhanh chóng cho "ANSI_NULLS QUOTED_IDENTIFIER thủ tục lưu trữ", kết quả đầu là bài viết sau đây mà dường như để giải thích sự lựa chọn, và tác động của chúng, rất rõ ràng: http://ranjithk.com/2010/01/10/understanding-set-quoted_identifier-onoff/

+1

Nếu ai đó không hiểu những gì họ đang làm, có thể đây sẽ là những cài đặt hữu ích. Và bằng cách loại bỏ chúng tôi chỉ thay đổi định nghĩa của thủ tục lưu sẵn nếu mặc định của tôi khác với proc. Nếu ai đó biết hậu quả của hành động của họ, họ sẽ có thể loại bỏ những hành động đó. Các giá trị mặc định trong tương lai của những thứ này thậm chí sẽ không thể thay đổi được. Tôi đã cập nhật câu hỏi của mình để giải thích rõ hơn về điều này. 1 cho một cái nhìn tổng quan tốt. – ThinkingStiff

+0

@ThinkingStiff - sự khác biệt là, các cài đặt luôn được ghi lại khi thủ tục được lưu trữ được tạo ra - theo cách rất thực, một phần của định nghĩa quy trình, trong khi bất kỳ cài đặt nào khác được đánh giá trong thời gian chạy, khi thủ tục được thực hiện. –

+0

Vâng, tôi đã chỉnh sửa nhận xét của mình về việc nhận ra những ví dụ không tốt. – ThinkingStiff

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