Có thể thiết lập bằng cách nào đó Microsoft SQL Server để chạy thủ tục được lưu trữ trên cơ sở thường xuyên không?Tiến trình lưu trữ theo lịch trình trên máy chủ SQL
Trả lời
Có, trong MS SQL Server, bạn có thể tạo công việc theo lịch biểu. Trong SQL Management Studio, điều hướng đến máy chủ, sau đó mở rộng mục Tác nhân của SQL Server và cuối cùng là thư mục Công việc để xem, chỉnh sửa, thêm các công việc đã lên lịch.
Sử dụng Management Studio - bạn có thể tạo ra một công việc (SQL unter Server Agent) Một công việc có thể bao gồm nhiều bước từ kịch bản T-SQL lên đến SSIS Gói
Jeb đã nhanh hơn;)
Bạn nên xem job scheduled using the SQL Server Agent.
Có, nếu bạn sử dụng Tác nhân máy chủ SQL.
Mở trình quản lý doanh nghiệp của bạn và chuyển đến thư mục Quản lý trong trường hợp SQL Server mà bạn quan tâm. Ở đó bạn sẽ thấy Tác nhân máy chủ SQL và bên dưới bạn sẽ thấy phần Công việc.
Tại đây bạn có thể tạo công việc mới và bạn sẽ thấy danh sách các bước bạn cần tạo. Khi bạn tạo một bước mới, bạn có thể chỉ định các bước để thực sự chạy một thủ tục được lưu trữ (loại TSQL Script). Chọn cơ sở dữ liệu, và sau đó cho phần lệnh đặt vào một cái gì đó như:
exec MyStoredProcedure
Đó là tổng quan, đăng lại đây nếu bạn cần thêm bất kỳ lời khuyên nào.
[Tôi thực sự nghĩ rằng tôi có thể nhận được trong đầu tiên trên thế này, cậu bé đã được tôi sai :)]
Tôi sẽ thêm một điều: nơi tôi đang ở, chúng tôi đã từng có một loạt các công việc hàng loạt mà chạy mỗi đêm. Tuy nhiên, chúng tôi đang di chuyển ra khỏi đó để sử dụng một ứng dụng khách được lên kế hoạch trong các cửa sổ theo lịch trình nhiệm vụ mà khởi động từng công việc. Có (ít nhất) ba lý do cho việc này:
- Chúng tôi cũng có một số chương trình điều khiển cần chạy mỗi đêm. Bằng cách này, tất cả các tác vụ được lên lịch có thể ở cùng một nơi. Tất nhiên, điều này tạo ra một điểm thất bại duy nhất, nhưng nếu các công việc bàn điều khiển không chạy, chúng tôi sẽ mất một ngày làm việc vào ngày hôm sau.
- Chương trình khởi động công việc ghi lại các thông báo in và lỗi từ máy chủ và ghi chúng vào nhật ký ứng dụng chung cho tất cả các quy trình theo lô của chúng tôi. Nó làm cho việc đăng nhập từ việc tạo các công việc sql đơn giản hơn nhiều.
- Nếu chúng ta cần nâng cấp máy chủ (và chúng tôi hy vọng sẽ thực hiện việc này sớm), chúng tôi không cần lo lắng về việc chuyển các công việc. Chỉ cần chỉ lại ứng dụng một lần.
Đó là một ứng dụng VB.Net thực sự ngắn: Tôi có thể đăng mã nếu có ai quan tâm.
Không, tôi không cần mã, chỉ có ý tưởng chung. Cảm ơn nhiều. :) –
Nếu MS SQL Server Express Edition đang được sử dụng thì SQL Server Agent không khả dụng. Tôi tìm thấy sau đây làm việc cho tất cả các phiên bản:
USE Master
GO
IF EXISTS(SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[MyBackgroundTask]')
AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[MyBackgroundTask]
GO
CREATE PROCEDURE MyBackgroundTask
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- The interval between cleanup attempts
declare @timeToRun nvarchar(50)
set @timeToRun = '03:33:33'
while 1 = 1
begin
waitfor time @timeToRun
begin
execute [MyDatabaseName].[dbo].[MyDatabaseStoredProcedure];
end
end
END
GO
-- Run the procedure when the master database starts.
sp_procoption @ProcName = 'MyBackgroundTask',
@OptionName = 'startup',
@OptionValue = 'on'
GO
Một số lưu ý:
- Điều đáng viết một entry kiểm toán ở đâu đó để bạn có thể thấy rằng các truy vấn thực sự chạy.
- Máy chủ cần khởi động lại một lần để đảm bảo rằng tập lệnh chạy lần đầu tiên.
- Một câu hỏi liên quan là: How to run a stored procedure every day in SQL Server Express Edition?
là một quá trình không bao giờ kết thúc, một vòng lặp vô hạn? điều này sẽ thực hiện hàng ngày vào lúc '03: 33: 33 '? –
Có lẽ không phải là câu trả lời bạn đang tìm kiếm, nhưng tôi thấy nó hữu ích hơn chỉ đơn giản là sử dụng Windows Server Task Scheduler
Bạn có thể sử dụng trực tiếp các lệnh sqlcmd.exe -S "." -d YourDataBase -Q "exec SP_YourJob"
Hoặc thậm chí tạo một tệp .bat
. Vì vậy, bạn thậm chí có thể 2x nhấp vào nhiệm vụ theo yêu cầu.
này cũng đã được tiếp cận trong này HERE
Bạn có thể sử dụng SQL Server Service Broker để tạo ra cơ chế tùy chỉnh thực hiện.
Idea (giản thể):
Viết một thủ tục lưu trữ/kích hoạt bắt đầu một cuộc trò chuyện (BEGIN DIALOG) làm loopback (TỪ my_service ĐẾN my_service) - nhận chuyện handler
DECLARE @dialog UNIQUEIDENTIFIER; BEGIN DIALOG CONVERSATION @dialog FROM SERVICE [name] TO SERVICE 'name' ...;
Bắt đầu bộ hẹn giờ cuộc trò chuyện
DECLARE @time INT; BEGIN CONVERSATION TIMER (@dialog) TIMEOUT = @time;
Sau số giây được chỉ định, một tin nhắn sẽ được gửi đến một dịch vụ. Nó sẽ được enqueued với hàng đợi liên quan.
CREATE QUEUE queue_name WITH STATUS = ON, RETENTION = OFF , ACTIVATION (STATUS = ON, PROCEDURE_NAME = <procedure_name> , MAX_QUEUE_READERS = 20, EXECUTE AS N'dbo') , POISON_MESSAGE_HANDLING (STATUS = ON)
Quy trình sẽ thực thi mã cụ thể và hẹn giờ có thể quay lại để kích hoạt lại.
Bạn có thể tìm thấy đầy đủ nung dung dịch (T-SQL) được viết bởi Michał Gołoś gọi Task Scheduler
Những điểm mấu chốt từ blog:
Ưu điểm:
- Được hỗ trợ trên mỗi phiên bản (từ Express to Enterprise). Tác vụ Đại lý Máy chủ SQL không khả dụng cho SQL Server Express
- Mức độ cơ sở dữ liệu đến phạm vi.Bạn có thể easiliy cơ sở dữ liệu di chuyển với nhiệm vụ liên quan (đặc biệt là khi bạn phải di chuyển khoảng 100 việc làm từ một enviromnent khác) đặc quyền
- thấp hơn cần thiết để xem/thao tác công việc (cấp cơ sở dữ liệu)
phân biệt được đề xuất:
SQL server Agent (bảo trì):
- sao lưu
- index/thống kê phép tái xây dựng
- sao chép
Task Scheduler (quy trình kinh doanh):
- loại bỏ dữ liệu cũ
- preaggregations/recalculations cyclic
- denormalization
Làm thế nào để cài đặt nó:
- get mã nguồn từ phần: "Do pobrania" - Để tải (cho phép môi giới/thiết lập tsks schema/table cấu hình + trigger + thủ tục lưu trữ)/thiết lập môi giới điều)
- thiết lập bảng cấu hình
[tsks].[tsksx_task_scheduler]
thêm nhiệm vụ mới (cột tên là tự mô tả, nhiệm vụ mẫu bao gồm)
Cảnh báo: Blog được viết bằng tiếng Ba Lan nhưng mã nguồn liên quan là bằng tiếng Anh và nó rất dễ dàng để làm theo.
Cảnh báo 2: Trước khi sử dụng, hãy đảm bảo bạn đã thử nghiệm trên môi trường không sản xuất.
- 1. Theo dõi tiến trình nén trên máy chủ riêng biệt
- 2. Trình theo dõi tiến trình theo dõi lưu lượng video?
- 3. Cách truy cập lịch sử trình duyệt Google Chrome theo lập trình trên máy cục bộ
- 4. Cách kiểm tra Hiệu suất Máy chủ SQL cho Quy trình được Lưu trữ
- 5. cách lên lịch sao lưu trong máy chủ sql 2008?
- 6. lưu trữ các tệp lớn trong máy chủ sql
- 7. lưu trữ hình ảnh trong máy chủ sql
- 8. Lập lịch trình chủ đề trong unix
- 9. Tác vụ theo lịch trình với Sql Azure?
- 10. Lưu trữ tệp trong SQL Server hoặc giữ chúng trên Máy chủ tệp?
- 11. Máy chủ SQL: Biến tùy chọn trong quy trình được lưu
- 12. Chèn kết quả của quy trình được lưu trữ từ máy chủ được liên kết
- 13. Theo dõi cái chết của một tiến trình con
- 14. Máy chủ lưu trữ chính xác là gì?
- 15. Chuyển đổi màu của thanh tiến trình theo lập trình
- 16. Máy chủ lưu trữ USB 3.1 của Android - Trình phát sóng không nhận được USB_DEVICE_ATTACHED
- 17. Nhóm máy chủ SQL theo số giờ trên mỗi giờ?
- 18. Silverlight 3 ngoài trình duyệt: đặt kích thước cửa sổ máy chủ lưu trữ?
- 19. Phụ thuộc máy chủ SQL
- 20. Máy chủ SQL - Có thể thực hiện một thủ tục được lưu trữ
- 21. Cần lịch trình công việc trong asp.net
- 22. Chạy trình duyệt selen trên máy chủ (Flask/Python/Heroku)
- 23. Trình kích hoạt máy chủ lưu trong SQL Server ở đâu?
- 24. Nhập dữ liệu XML vào máy chủ MS SQL theo chương trình
- 25. Yếu tố nào có thể gây ra quá trình biên dịch lưu trữ trên SQL Server?
- 26. Máy chủ SQL có thể lưu trữ proc xác định tên của cha mẹ mình không?
- 27. Máy chủ sql chọn cột theo số
- 28. Nhóm điều kiện theo máy chủ sql?
- 29. Làm cách nào để xem tiến trình chạy các thủ tục lưu sẵn SQL?
- 30. Làm thế nào để chạy một thủ tục được lưu trữ trong máy chủ sql mỗi giờ?
Thật lạ lùng với tôi rằng câu trả lời này đã nhận được nhiều sự ủng hộ hơn trong năm qua so với thời điểm giữa năm 2008 - 2013. Tại sao vậy? – Jeb
có thể nó đã tăng lên đầu kết quả của google ... – blackorchid