Có cách nào mà tôi có thể tìm thấy nơi lưu các thủ tục được lưu trữ để tôi có thể sao chép các tệp vào máy tính để bàn của mình không?Làm thế nào để viết ra các thủ tục được lưu trữ cho các tệp?
Trả lời
thủ tục lưu trữ không được lưu trữ dưới dạng file, chúng được lưu trữ như siêu dữ liệu và tiếp xúc với chúng tôi peons (nhờ Michael cho lời nhắc nhở về sysschobjs
) trong khung nhìn danh mục sys.objects
, sys.procedures
, sys.sql_modules
, vv Đối với một thủ tục được lưu trữ cá nhân , bạn có thể truy vấn định nghĩa trực tiếp bằng cách sử dụng các chế độ xem này (quan trọng nhất là sys.sql_modules.definition
) hoặc sử dụng chức năng OBJECT_DEFINITION()
là Nicholas pointed out (mặc dù mô tả của mình là syscomments
không hoàn toàn chính xác).
Để trích xuất tất cả các thủ tục được lưu trữ vào một tệp, một tùy chọn là mở Object Explorer, mở rộng your server > databases > your database > programmability
và đánh dấu nút stored procedures
. Sau đó, nhấn F7 (Xem>Object Explorer Details). Ở phía bên tay phải, chọn tất cả các quy trình bạn muốn, sau đó nhấp chuột phải, script stored procedure as > create to > file
. Điều này sẽ tạo ra một tệp duy nhất với tất cả các quy trình bạn đã chọn. Nếu bạn muốn một tập tin duy nhất cho mỗi thủ tục, bạn có thể sử dụng phương pháp này bằng cách chỉ chọn một thủ tục tại một thời điểm, nhưng điều đó có thể là tẻ nhạt. Bạn cũng có thể sử dụng phương pháp này để viết tất cả các thủ tục liên quan đến kế toán cho một tệp, tất cả các thủ tục liên quan đến tài chính tới một tệp khác, v.v.
Cách dễ dàng hơn để tạo chính xác một tệp cho mỗi thủ tục được lưu trữ sẽ sử dụng Generate Scripts wizard - một lần nữa, bắt đầu từ Object Explorer - nhấp chuột phải vào cơ sở dữ liệu của bạn và chọn Tasks > Generate scripts
. Chọn Select specific database objects
và kiểm tra hộp Stored Procedures
cấp cao nhất. Bấm tiếp. Để xuất, chọn Save scripts to a specific location
, Save to file
và Single file per object.
Các bước này có thể hơi khác tùy thuộc vào phiên bản SSMS của bạn.
Quy trình lưu trữ không được "lưu trữ" dưới dạng tệp riêng biệt mà bạn tự do duyệt và đọc mà không có cơ sở dữ liệu. Nó được lưu trữ trong cơ sở dữ liệu nó thuộc về trong một tập các bảng hệ thống. Bảng có chứa định nghĩa được gọi là [sysschobjs] mà thậm chí không thể truy cập (trực tiếp) cho bất kỳ người dùng cuối nào của chúng tôi.
Để lấy lại định nghĩa của các thủ tục này được lưu trữ từ cơ sở dữ liệu, tôi muốn sử dụng truy vấn này:
select definition from sys.sql_modules
where object_id = object_id('sp_myprocedure')
Nhưng tôi thích câu trả lời của Aaron. Anh ấy đưa ra một số lựa chọn tốt đẹp khác.
Tùy thuộc vào phiên bản SQL Server bạn đang chạy. Đối với các phiên bản gần đây, mã nguồn cho các thủ tục lưu sẵn có sẵn thông qua khung nhìn hệ thống sys.sql_modules
, nhưng cách đơn giản hơn để lấy nguồn cho thủ tục được lưu trữ hoặc hàm do người dùng định nghĩa (UDF) là sử dụng hàm hệ thống object_definition()
(định nghĩa khung nhìn là sys.ssql_modules
) sử dụng):
select object_definition(object_id('dbo.my_stored_procedure_or_user_defined_function'))
Trong phiên bản cũ, thủ tục lưu trữ và UDF đã có sẵn thông qua hệ thống Cảnh bây giờ bị phản đối sys.syscomments
.
Và trong chưa phiên bản cũ của SQL Server, nó đã có sẵn thông qua hệ thống bảng 'dbo.syscomments'
Nó phải là notdd rằng tùy thuộc vào truy cập của bạn và làm thế nào các cơ sở dữ liệu đã được cấu hình, nguồn có thể không có sẵn cho bạn hoặc nó có thể được mã hóa, mà làm cho nó không hữu ích khủng khiếp.
Bạn cũng có thể lấy nguồn theo lập trình sử dụng SMO
(Đối tượng quản lý máy chủ Sql). http://technet.microsoft.com/en-us/library/hh248032.aspx
'syscomments' là hợp lệ vào năm 2000, nhưng nó không có sẵn dưới dạng' sys.syscomments' cho đến khi SQL Server 2005. 'sys.sql_modules' đã có sẵn từ SQL Server 2005, do đó không có khoảng cách giữa việc sử dụng' dbo.syscomments 'và chuyển sang' sys.sql_modules'. –
- 1. Mẫu lưu trữ với các thủ tục được lưu trữ
- 2. Làm thế nào để lưu một thủ tục lưu trữ?
- 3. Làm thế nào để viết một thủ tục được lưu trữ trong phpMyAdmin?
- 4. Di chuyển các thủ tục được lưu trữ bằng Flyway
- 5. Làm thế nào để gọi Thủ tục lưu trữ (với 2 tham số) trong một thủ tục lưu trữ?
- 6. Mẫu để lưu các thủ tục?
- 7. Làm cách nào để gọi thủ tục được lưu trữ với các tham số độc đáo?
- 8. Danh sách các thủ tục được lưu trữ từ Bảng
- 9. Các thủ tục được lưu trữ kỹ thuật đảo ngược
- 10. Thả nhóm các thủ tục được lưu trữ theo tên
- 11. Làm thế nào để gọi thủ tục lưu sẵn từ một thủ tục lưu sẵn khác?
- 12. Làm thế nào để sử dụng đầu ra Bảng từ lưu trữ MYSQL Thủ tục
- 13. Chức năng so với các thủ tục được lưu trữ
- 14. MySQL: Làm thế nào để sửa đổi các thủ tục lưu trữ một cách nguyên tử?
- 15. Tôi làm cách nào để tìm các cuộc gọi thủ tục được lưu trữ?
- 16. Cách đơn giản để lập trình có được tất cả các thủ tục được lưu trữ
- 17. Gọi thủ tục lưu trữ trong một thủ tục được lưu trữ trong MySQL
- 18. Làm thế nào để gỡ lỗi thủ tục được lưu trữ trong Sybase ASE?
- 19. SQL Server 2000: Làm thế nào để thoát khỏi một thủ tục được lưu trữ?
- 20. Làm thế nào để cấu hình các thủ tục plpgsql
- 21. Làm cách nào để lưu một thủ tục được lưu trữ trong SQL Server 2008 R2?
- 22. ADO.NET cổ điển - Làm thế nào để vượt qua UDT để lưu trữ thủ tục?
- 23. Cách thanh lịch nhất để sử dụng các thủ tục được lưu trữ là gì?
- 24. Làm thế nào để gọi một thủ tục được lưu trữ trong CodeIgniter?
- 25. Làm thế nào để gọi Thủ tục được lưu trữ trong Chế độ xem?
- 26. làm thế nào để printf trong thủ tục lưu trữ oracle (cho mục đích gỡ lỗi)?
- 27. Thả tất cả các thủ tục được lưu trữ trong MySQL hoặc sử dụng các thủ tục được lưu trữ tạm thời
- 28. đang được lưu trữ thủ tục nhanh hơn cho các truy vấn đơn giản
- 29. Tìm ra chạy chậm thủ tục lưu trữ
- 30. mysql lưu trữ-thủ tục: ra tham số
Bạn có nghĩa là tập lệnh của SP? – christiandev
Chúng được lưu trữ trong cơ sở dữ liệu - chúng không có trong tệp của riêng chúng. –
Sử dụng [Tạo thuật sĩ tập lệnh SQLServer] (http://technet.microsoft.com/en-us/library/ms186996 (v = sql.105) .aspx) trong SSMS để viết các thủ tục được lưu trữ. – AgentSQL