2009-11-23 28 views
5

Tôi muốn gửi email từ Trigger, trên máy SQL Server 2008 của tôi. Dữ liệu của email sẽ về cơ bản là một số thông tin Kích hoạt.Trình kích hoạt máy chủ SQL có thể gửi cho tôi một email không?

Ai đó có thể cung cấp một số mã mẫu đơn giản/mẫu về cách thực hiện việc này, vui lòng? Ví dụ. thủ tục lưu trữ hệ thống được gọi là gì? Vv

Tôi chưa thiết lập bất kỳ thư và công cụ SQL nào, vì vậy tôi đoán nó được tích hợp sẵn và tôi có thể tận dụng điều đó. Nhưng chỉ để chắc chắn: tôi có cần cài đặt thêm bất kỳ phần mềm nào trên máy chủ không?

+0

Yep. [http://blog.sqlauthority.com/2008/08/23/sql-server-2008-configure-database-mail-send-email-from-sql-database/](http://blog.sqlauthority.com/2008/08/23/sql-server-2008-cấu hình-cơ sở dữ liệu-mail-gửi-email-từ-sql-cơ sở dữ liệu /) – NitroxDM

+0

Bạn có thể? Vâng. Có nên không? Tuyệt đối không, IMHO. http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-abusing-triggers.aspx –

Trả lời

5

Ví dụ này sẽ gửi thư điện tử đến một người được chỉ định (MaryM) khi bảng tiêu đề thay đổi.

USE pubs 
IF EXISTS (SELECT name FROM sysobjects 
     WHERE name = 'reminder' AND type = 'TR') 
    DROP TRIGGER reminder 
GO 
CREATE TRIGGER reminder 
ON titles 
FOR INSERT, UPDATE, DELETE 
AS 
    EXEC master..xp_sendmail 'MaryM', 
     'Don''t forget to print a report for the distributors.' 
GO 

Nguồn: MSDN

3

Trình kích hoạt phải được giữ ở mức tối thiểu. Các bản cập nhật/chèn/xóa cơ sở dữ liệu nguyên tử phải được phép càng nhanh càng tốt. Xem xét thêm một bảng riêng biệt mà trình kích hoạt có thể chèn dữ liệu vào đó một quá trình riêng biệt theo dõi và khởi tạo một email dựa trên nội dung.

Tất nhiên, điều này không giải quyết việc có thể sử dụng TransactSQL để tạo email hay không - tôi rất tò mò về điều đó!

+0

Re: Triggers - yep. tôi biết rằng, vv vv Và điều này chỉ dành cho xóa .. và chỉ cho một số mục đích gỡ lỗi VÀ trên một số bảng hoạt động thấp VÀ email sql là không đồng bộ, tôi tin rằng .. –

+0

Thư cơ sở dữ liệu là, nhưng SQLMail và các biến thể khác (đặc biệt là sử dụng CDO qua sp_OA) thì không. Trong câu hỏi ban đầu của bạn, bạn không nói rằng bạn đang sử dụng thư cơ sở dữ liệu, bạn thực sự đã nói thư SQL. Có một sự khác biệt lớn. Trong mọi trường hợp, ngay cả khi bạn đang sử dụng thư cơ sở dữ liệu trên hệ thống hiện tại của bạn, điều gì sẽ xảy ra nếu bạn di chuyển mã của mình sang một hệ thống khác mà bạn không thể sử dụng thư cơ sở dữ liệu vì một lý do nào đó? –

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