2012-01-04 72 views
44

Tôi mới dùng SQL Server. Tôi đã đăng nhập vào cơ sở dữ liệu của mình thông qua SQL Server Management Studio.Cách xem mã thủ tục được lưu trữ trong SQL Server Management Studio

Tôi có danh sách các thủ tục được lưu trữ. Làm cách nào để xem mã thủ tục được lưu trữ?

Nhấp chuột phải vào quy trình được lưu trữ không có bất kỳ tùy chọn nào như view contents of stored procedure.

Cảm ơn.

+0

bạn phải "sửa đổi" nó. –

Trả lời

30

nhấp chuột phải trên proc lưu trữ và chọn kịch bản thủ tục lưu trữ như CREATE đến New Query biên tập Window/Clipboard/File

bạn cũng có thể làm Modify khi bạn nhấp chuột phải vào tên

Nếu bạn muốn nhiều hơn 1 proc cùng một lúc, nhấp vào thư mục thủ tục được lưu trữ, nhấn F7, với CTRL và nhấp vào chọn tất cả những cái bạn muốn và sau đó nhấp chuột phải và chọn quy trình được lưu trữ tập lệnh dưới dạng CREATE

+4

Tôi thích 'Quy trình lưu trữ tập lệnh như CREATE' thay vì 'Sửa đổi' khi tôi chỉ xem xét quy trình nên tôi không vô tình thay đổi quy trình. – simon

31

ion được gọi là Modify:

enter image description here

này sẽ hiển thị cho bạn mã T-SQL cho thủ tục lưu trữ của bạn trong một cửa sổ truy vấn mới, với một ALTER PROCEDURE ... chì trong, vì vậy bạn có thể dễ dàng thay đổi hoặc sửa đổi thủ tục của bạn và cập nhật nó

+0

Nếu sửa đổi bị vô hiệu hóa? Tôi không có quyền sửa đổi – Alexandr

1

trong trường hợp bạn không có quyền 'sửa đổi', như tôi, bạn có thể cài đặt công cụ miễn phí có tên là "Tìm kiếm SQL" (bằng cổng đỏ). Tôi sử dụng nó để tìm kiếm các từ khóa mà tôi biết sẽ có trong SP và nó trả về một bản xem trước của mã SP với các từ khóa được tô sáng.

khéo léo! sau đó sao chép mã này vào SP của riêng tôi hay xem nó trong

91

Tôi đoán đây là một cách tốt hơn để xem mã một stored procedure của:

sp_helptext <name of your sp> 
+8

Cách tiếp cận này hoạt động tốt nhất khi kết quả được hiển thị cho văn bản ([Ctrl + T phím tắt] (http://msdn.microsoft.com/en-us/library/ms174205.aspx)). –

+1

@FlorinDumitrescu - Tôi thích để nó ở chế độ lưới và làm như sau rất nhanh và bây giờ là bản chất thứ 2 cho tôi: sp_helptext YourSPName, F5, nhấp vào cột tiêu đề "Văn bản", ctrl-c, nhấp vào bất kỳ nơi nào trong truy vấn, ctrl-a, ctrl-v, ctrl-home, ctrl-r. Lý do tôi thích điều này là tôi làm nổi bật cú pháp và tôi không phải cuộn đến đầu tệp. (Và nó tốt hơn một chút so với ctrl-t vì nó không thêm vào tập tin với "văn bản ---------------".) – TTT

5

Sử dụng truy vấn dưới đây: -

SELECT object_definition(object_id) as [Proc Definition] 
FROM sys.objects 
WHERE type='P' 
+1

Bạn có thể vui lòng xây dựng câu trả lời cho người đọc trong tương lai – Izzy

+1

Hoặc chỉ sử dụng 'SELECT Định nghĩa FROM sys.procedures WHERE .....' –

10

Đây là một cách khác để xem định nghĩa về thủ tục được lưu trữ

SELECT OBJECT_DEFINITION (OBJECT_ID(N'Your_SP')) 
+0

phần trên sẽ không cung cấp cho toàn bộ kịch bản lệnh – Smart003

+0

@ Smart003, đúng vậy. Nếu bạn gặp khó khăn trong việc hiển thị tất cả các ký tự dưới dạng kết quả lưới, hãy tham khảo http://stackoverflow.com/questions/11897950/how-do-you-view-all-text-from-an-ntext-or-nvarcharmax này -in-ssms – sqluser

1

sp_helptext 'your_sp_name'

Trong studio quản lý theo kết quả mặc định có dạng xem lưới. Nếu bạn muốn để xem ở chế độ xem văn bản đi:

Query -> Kết quả thực hiện -> Kết quả sang Text

hoặc CTRL + T và sau đó Execute.

3

Các câu trả lời khác khuyên bạn nên sử dụng trình khám phá đối tượng và viết thủ tục đã lưu vào cửa sổ trình chỉnh sửa truy vấn mới và các truy vấn khác là các tùy chọn vững chắc.

Tôi cá nhân như sử dụng các truy vấn dưới đây để lấy lại được lưu trữ định nghĩa thủ tục/mã trong một hàng duy nhất (Tôi đang sử dụng Microsoft SQL Server 2014, nhưng trông như thế này nên làm việc với SQL Server 2008 trở lên)

SELECT definition 
FROM sys.sql_modules 
WHERE object_id = OBJECT_ID('yourSchemaName.yourStoredProcedureName') 

Thông tin thêm về sys.sql_modules:

https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql

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