2010-04-19 61 views
10

Tôi đã chơi hôm nay với các thủ tục được lưu trữ. Tôi đã nói rằng tôi đã chọn cơ bản của nó rất dễ dàng. (Tôi cũng sẽ thử kích hoạt rất sớm).Làm thế nào để lưu một thủ tục lưu trữ?

Bây giờ, tôi muốn biết cách lưu SPROC của tôi trong thư mục thủ tục lưu sẵn (Programmability -> Stored Procedure) để tôi có thể truy cập nó theo tên (cuối cùng từ ứng dụng C# của tôi). Cho đến giờ, khi tôi nhấn biểu tượng lưu, tôi được đề nghị lưu toàn bộ truy vấn. Đó không phải là điều tôi muốn.

Cảm ơn bạn đã trợ giúp

Trả lời

18

Bạn thực sự phải chạy lệnh CREATE PROCEDURE để Quy trình được lưu trữ được xây dựng.

Create Procedure - MSDN

Dưới đây là một ví dụ trực tiếp từ trang MSDN:

USE AdventureWorks; 
GO 

-- If procedure exists already, drop it 
IF OBJECT_ID ('HumanResources.uspGetAllEmployees', 'P') IS NOT NULL 
    DROP PROCEDURE HumanResources.uspGetAllEmployees; 
GO 

-- Create (or Re-create) the procedure 
CREATE PROCEDURE HumanResources.uspGetAllEmployees 
AS 
    SET NOCOUNT ON; 
    SELECT LastName, FirstName, JobTitle, Department 
    FROM HumanResources.vEmployeeDepartment; 
GO 

Hãy nhớ rằng sau khi bạn tạo các Stored Procedure, bạn sẽ phải Right Click -> Refresh thư mục Stored Procedure cho các thủ tục mới xuất hiện.

Tôi cũng khuyên bạn nên lưu tệp * .sql ở đâu đó để bạn có tập lệnh CREATE PROCEDURE ở đâu đó trong trường hợp bạn cần chạy lại.

+0

+1 Đối với đề xuất * .sql. – systempuntoout

+0

@Justin Niesser (và cho tất cả): Cảm ơn, nó đã hoạt động. Tuy nhiên, tôi xin lỗi tôi đã không thực sự nhận được đề xuất của bạn. Tôi cần phải giữ kịch bản CREATE PROCEDURE ở đâu đó trong trường hợp tôi cần chạy lại cái gì? thủ tục lưu sẵn? Tôi có cần phải tạo ra nó mỗi khi tôi cần phải sử dụng nó? – Richard77

+0

Bạn không cần phải tạo ra nó mỗi khi bạn sử dụng nó, nhưng nếu bạn cần phải sửa đổi nó hoặc xây dựng lại cơ sở dữ liệu của bạn ... nó là tốt đẹp để có sao lưu. Bạn cũng có thể tiếp tục sử dụng tệp * .sql để thực hiện thay đổi và thả/tạo lại quy trình thay vì chạy lệnh ALTER PROCEUDRE. –

4

bạn phải thực sự chạy câu lệnh tạo proc.

+0

@Mladen Prajdic: Tôi đã chạy nó bằng lệnh EXEC và nó hoạt động. Khi tôi không thấy SPROC trong thư mục Stored Procedure, tôi đã không tạo ra nó. Vì vậy, tôi đã cố gắng để tạo ra nó một lần nữa, nhưng tôi đã nói rằng các đối tượng có cùng tên tồn tại rồi. Tôi đoán tôi đã có thể tạo ra nó. Nhưng, tại sao nó không thể nhìn thấy trong Programmability -> Stored Procedure folder? – Richard77

+0

@ Richard77, bạn cần nhấn nút Làm mới để xem. Đánh dấu thư mục Stored Procedure, sau đó nhấn Refresh và bạn sẽ thấy nó. SQL Server Management Studio (và có thể cả Server Explorer) không tự động làm mới. –

0

Bạn cần chạy lệnh CREATE PROCEDURE.
Hãy thử với đơn giản Stored Procedure ví dụ này:

CREATE PROCEDURE TestSP 
AS 
SELECT GETDATE() AS MyDate 
GO 
0

Dựa trên nhận xét của OP:

Tôi đã chạy nó sử dụng lệnh EXEC, và nó làm việc. Khi tôi không thấy SPROC trong thư mục Thủ tục đã lưu trữ, tôi mặc dù tôi không tạo ra nó. Vì vậy, tôi đã thử để tạo lại, nhưng tôi đã được thông báo rằng đối tượng có cùng tên đã tồn tại rồi. Tôi đoán tôi đã có thể tạo. Nhưng, tại sao nó không hiển thị trong Lập trình -> Lưu trữ thư mục Thủ tục?

Khi bạn chạy thủ tục được lưu CREATE PROCEDURE.... lần đầu tiên, bạn có thể cần phải làm mới danh sách thủ tục được lưu trữ trong SSMS. Nhấp chuột phải sau đó REFRESH.

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