2011-09-15 17 views
22

Tôi có một thiết lập Công việc trong SQL Server 2008 sẽ gửi một email thông báo đến một nhà điều hành khi công việc thất bại.Tác vụ Đại lý SQL Server Thông báo cho nhiều toán tử về lỗi

Câu hỏi: Có thể thiết lập email thông báo được gửi tới nhiều nhà khai thác cho công việc cụ thể đó không?

Tôi tin rằng có thể giải quyết vấn đề này là tạo nhiều cảnh báo cho cơ sở dữ liệu cho từng mức độ nghiêm trọng nhất định nhưng tôi hy vọng rằng có cách ngắn gọn hơn để thực hiện việc này. Nếu tôi đi tuyến đường này, những lỗi nghiêm trọng nào có thể được kích hoạt từ một công việc thất bại? (Tôi không nghĩ rằng tôi sẽ yêu cầu tất cả 25 cho một cái gì đó như thế)

Điều này có thể được thực hiện thông qua lệnh sql để thêm nhiều nhà khai thác để thông báo về sự thất bại? Thông qua giao diện người dùng, bạn chỉ có thể chọn một toán tử duy nhất.

+0

IIRC bạn có thể xác định các toán tử riêng lẻ với nhiều địa chỉ email nếu điều đó tốt cho bạn? –

+0

Không, tôi có vấn đề, nhưng vấn đề là bạn chỉ có thể chọn một nhà điều hành trong phần thông báo của công việc – Mike

+0

Có, tôi không nghĩ rằng có một cách để làm những gì bạn muốn sau đó. Khi tôi muốn cảnh báo nhiều người, tôi vừa thiết lập một toán tử mới khi tôi nhớ lại. '[msdb]. [dbo]. [sysjobs]' có các cột cho 'operator_id' thay vì chúng nằm trong một bảng riêng biệt có thể hỗ trợ từ 1 đến nhiều. –

Trả lời

26

Tôi không tin điều này là có thể.

Chắc chắn xem xét cấu trúc của [msdb].[dbo].[sysjobs] các cột khác nhau operator_id nằm trong chính bảng này, điều này sẽ hỗ trợ ý tưởng rằng 1 đến nhiều cột là không thể.

Bạn có thể tạo toán tử mới với danh sách địa chỉ email được phân tách bằng dấu hai chấm. Nhìn vào định nghĩa của sysoperators này là tốt cho các chuỗi có thể phù hợp trong nvarchar(100) nếu bạn cần vượt quá mà bạn có thể có thể thiết lập một nhóm email trao đổi hoặc bất cứ điều gì.

+1

Chúng tôi đang sử dụng phương pháp nhóm email (danh sách Trao đổi phân phối), nơi tôi làm việc, cho đến khi chính sách bảo mật cho DL được thay đổi ở phía Exchange thành "Yêu cầu tất cả người gửi được xác thực". Thông báo cho từng địa chỉ email cá nhân vẫn hoạt động, vì vậy đây là giải pháp hữu ích (hy vọng tạm thời). 100 nhân vật không phải là một toàn bộ mất không gian mặc dù. Để đưa ra ý tưởng, chỉ 3 địa chỉ email đã đưa chúng tôi đến 56 ký tự. – Voysinmyhead

+0

vui lòng xem câu trả lời bên dưới, nếu điều này đúng, vui lòng xóa câu trả lời này, THỰC HIỆN msdb.dbo.sp_update_operator @email_address = N'[email protected]; [email protected] '; – AppleBook89

+0

@apple điều này giống như câu trả lời bên dưới. "Không thể" được đề cập đến nhiều nhà khai thác không phải là nhiều địa chỉ email. –

24

Nếu dự định nhiều người trong tổ chức của bạn sẽ được thông báo nếu công việc thất bại, bạn có thể thay đổi địa chỉ email của nhà điều hành để bao gồm nhiều hộp thư bằng cách tách từng hộp thư bằng dấu chấm phẩy.

tôi giả sử điều hành thông báo của bạn được gọi JobWatcher:

EXECUTE msdb.dbo.sp_update_operator 
    @name = N'JobWatcher', 
    @email_address = N'[email protected];[email protected]'; 

Bây giờ [email protected][email protected] sẽ nhận mail khi công việc thất bại.

+4

Điều này là chính xác mặc dù có ai đó đã tuyên bố lĩnh vực này chỉ cho phép 100 ký tự mà sớm lấp đầy với nhiều địa chỉ. –

+0

@MarkHedley là giải pháp ngắn hạn, nhưng nếu bạn gặp khó khăn khi thực hiện thay đổi đối với các nhóm trên máy chủ thư của mình, nó vẫn có thể hữu ích. Tôi đã cố gắng để cập nhật câu trả lời, nhưng SO là lỗi ngay bây giờ. Tôi sẽ thử lại sau. Cảm ơn vì bạn đã phản hồi! –

+1

Một sản phẩm phụ khó chịu của vấn đề 100 ký tự là nó sẽ cho phép bạn đặt nhiều hơn 100 ký tự, nhưng sau đó cắt bỏ nó sau khi bạn nhấn OK! – PeterX

11

Cách tốt nhất là tạo nhóm trên máy chủ thư của bạn, gửi thông báo cho nhóm và sau đó kiểm soát số người nhận từ máy chủ thư.

+1

Đây là cách chúng tôi thực hiện tại nơi tôi làm việc. Giả sử tất cả quản trị viên của bạn là một phần của nhóm phân phối Outlook được gọi là DBA. Bạn sẽ tạo một nhà điều hành đại lý được gọi là 'DBAs' với địa chỉ email '[email protected]' để thông báo cho mọi người trong nhóm phân phối. –

17

Phương pháp đơn giản nhất tôi sử dụng để thông báo cho nhiều "OPERATORS" trên "JOB FAILURE" là:

Trong SSMS>SQL Server Agent>Operators tạo mới OPERATOR hoặc EDIT hiện có và thêm các địa chỉ email khác nhau bởi ; trong "E-mail name:" hộp.

3

Vì vậy, đây là những gì tôi đã đưa ra như một giải pháp thay thế nếu ý định là nhiều người trong tổ chức của bạn sẽ được thông báo nếu một công việc thất bại và một nhóm khác nhau của nhiều người để thành công.

Bạn sẽ thấy các bước 1-3 là nhiệm vụ bình thường mà công việc lịch biểu được sử dụng cho như bạn sẽ làm cho công việc của bạn. Có thể có nhiều bước cần thiết trước khi thực hiện nhưng bước cuối cùng (Bước 3) của quy trình cần phải ngắt “Thành công” và “Không thành công” để đi vào các email riêng biệt. Ngoài ra, tất cả “Lỗi trên” cần tiếp tục với “Email không thành công” của bạn như được đánh dấu bên dưới. Vì vậy, nhóm Thất bại có email và công việc sẽ vẫn thất bại cho các hồ sơ lịch sử.

1.1

Bạn sẽ thấy tùy chọn để thay đổi hướng của “On thành hành động” và “On Failure hành động” trong tab Advanced trong những bước công việc.

2

Failure Email Bước -Thông tài sản

3

Failure Email Bước -Advance tài sản

4

Success Email Bước -Thông tài sản

5

Success Email Bước -Advance tài sản

6

Đối với những người khác có nhu cầu giúp đỡ. Notify multiple operators with difference results

+1

Trong khi dbahiker không trực tiếp giải quyết vấn đề mà câu hỏi ban đầu yêu cầu, tôi nghĩ rằng nó bị đánh giá thấp (ở -1).Đó là một giải pháp khả thi đối với các giới hạn của các toán tử SQL Agent. – RyanB

+1

ý tưởng khá hay cho một công việc xung quanh – user1760150

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