トリガーを使用して SQL Server を共有し、サンプル コードを電子メールで送信する
この記事では、SQL Server がトリガーを使用して電子メールを送信する方法を段階的に詳しく説明します。必要な友人は参照してください。
SQL は、システム ストアド プロシージャ sp_send_dbmail を使用して電子メールを送信する構文:
sp_send_dbmail [ [ @profile_name = ] 'profile_name' ] [ , [ @recipients = ] 'recipients [ ; ...n ]' ] [ , [ @copy_recipients = ] 'copy_recipient [ ; ...n ]' ] [ , [ @blind_copy_recipients = ] 'blind_copy_recipient [ ; ...n ]' ] [ , [ @subject = ] 'subject' ] [ , [ @body = ] 'body' ] [ , [ @body_format = ] 'body_format' ] [ , [ @importance = ] 'importance' ] [ , [ @sensitivity = ] 'sensitivity' ] [ , [ @file_attachments = ] 'attachment [ ; ...n ]' ] [ , [ @query = ] 'query' ] [ , [ @execute_query_database = ] 'execute_query_database' ] [ , [ @attach_query_result_as_file = ] attach_query_result_as_file ] [ , [ @query_attachment_filename = ] query_attachment_filename ] [ , [ @query_result_header = ] query_result_header ] [ , [ @query_result_width = ] query_result_width ] [ , [ @query_result_separator = ] 'query_result_separator' ] [ , [ @exclude_query_output = ] exclude_query_output ] [ , [ @append_query_error = ] append_query_error ] [ , [ @query_no_truncate = ] query_no_truncate ] [ , [ @mailitem_id = ] mailitem_id ] [ OUTPUT ]
SQL 以下の設定を開始します。 電子メールを送信します:
ステップ 1:
-- 启用 sql server 邮件的功能 exec sp_configure 'show advanced options',1 go reconfigure; go exec sp_configure 'Database Mail XPs',1 go reconfigure; go
上記のステートメントが実行できない場合は、次のステートメントを使用することもできます。
-- 启用 sql server 邮件的功能 exec sp_configure 'show advanced options', 1 go reconfigure with override go exec sp_configure 'Database Mail XPs', 1 go reconfigure with override go
次のステートメントを使用して、データベース メール機能が正常に開かれたかどうか、およびデータベース構成情報を確認します。
-- 查询数据库的配置信息 select * from sys.configurations -- 查看数据库邮件功能是否开启,value 值为1表示已开启,0为未开启 select name,value,description, is_dynamic,is_advanced from sys.configurations where name like '%mail%'
ステップ 2:
if exists(SELECT * FROM msdb..sysmail_account WHERE NAME='test') --判断邮件账户名为 test 的账户是否存在 begin EXEC msdb..sysmail_delete_account_sp @account_name='test' -- 删除邮件账户名为 test 的账户 end exec msdb..sysmail_add_account_sp --创建邮件账户 @account_name = 'test' -- 邮件帐户名称 ,@email_address = '980095349@qq.com' -- 发件人邮件地址 ,@display_name = 'Brambling' -- 发件人姓名 ,@replyto_address = null -- 回复地址 ,@description = null -- 邮件账户描述 ,@mailserver_name = 'smtp.qq.com' -- 邮件服务器地址 ,@mailserver_type = 'SMTP' -- 邮件协议 ,@port = 25 -- 邮件服务器端口 ,@username = '980095349@qq.com' -- 用户名 ,@password = 'xxxxxx' -- 密码 ,@use_default_credentials = 0 -- 是否使用默认凭证,0为否,1为是 ,@enable_ssl = 1 -- 是否启用 ssl 加密,0为否,1为是 ,@account_id = null -- 输出参数,返回创建的邮件账户的ID
PS: QQ メールボックスを使用している場合は、必ず、パラメータ @enable_ssl を 1 に設定します。そうしないと、後でサーバーエラーが報告されます。このエラーは長い間私を悩ませていましたが、ついに原因がわかりました。
ステップ 3:
if exists(SELECT * FROM msdb..sysmail_profile where NAME = N'SendEmailProfile') --判断名为 SendEmailProfile 的邮件配置文件是否存在 begin exec msdb..sysmail_delete_profile_sp @profile_name = 'SendEmailProfile' --删除名为 SendEmailProfile 的邮件配置文件 end exec msdb..sysmail_add_profile_sp -- 添加邮件配置文件 @profile_name = 'SendEmailProfile', -- 配置文件名称 @description = '数据库发送邮件配置文件', -- 配置文件描述 @profile_id = NULL -- 输出参数,返回创建的邮件配置文件的ID
ステップ 4:
-- 邮件账户和邮件配置文件相关联 exec msdb..sysmail_add_profileaccount_sp @profile_name = 'SendEmailProfile', -- 邮件配置文件名称 @account_name = 'test', -- 邮件账户名称 @sequence_number = 1 -- account 在 profile 中的顺序,一个配置文件可以有多个不同的邮件账户
さて、これでメールを送信する SQL の設定は基本的に終わりました。ユーザーが正常に登録した後にユーザーに電子メールを送信するには、以下のトリガーを作成します。
最初にテーブルを作成します:
-- 创建一个表 create table T_User ( UserID int not null identity(1,1) primary key, UserNo nvarchar(64) not null unique, UserPwd nvarchar(128) not null , UserMail nvarchar(128) null ) go
次にトリガーの後に挿入タイプを作成します:
create trigger NewUser_Send_Mail on T_User after insert as declare @UserNo nvarchar(64) declare @title nvarchar(64) declare @content nvarchar(320) declare @mailUrl nvarchar(128) declare @count int select @count=COUNT() from inserted select @UserNo=UserNo,@mailUrl=UserMail from inserted if(@count>0) begin set @title='注册成功通知' set @content='欢迎您'+@UserNo+'!您已成功注册!通知邮件,请勿回复!' exec msdb.dbo.sp_send_dbmail @profile_name='SendEmailProfile', -- 邮件配置文件名称 @recipients=@mailUrl, -- 邮件发送地址 @subject=@title, -- 邮件标题 @body=@content, --邮件内容 @body_format='text' -- 邮件内容的类型,text 为文本,还可以设置为 html end go
今すぐテストしてみましょう:
-- 新添加一条数据,用以触发 insert 触发器 insert into T_User(UserNo,UserPwd,UserMail) values('demo1','123456','1171588826@qq.com')
上記のステートメントを実行すると、約 2 ~ 3 秒で電子メールが届きます (いいえの場合)。エラーが発生します)。メールが届かない場合は、次のステートメントを使用してメールの配信ステータスを確認できます。
use msdb go select * from sysmail_allitems -- 邮件发送情况,可以用来查看邮件是否发送成功 select * from sysmail_mailitems -- 发送邮件的记录 select * from sysmail_event_log -- 数据库邮件日志,可以用来查询是否报错
use msdb go --为角色名为 dba 的角色赋予发送数据库邮件的权限 create user dba for login dba go exec dbo.sp_addrolemember @rolename = 'DatabaseMailUserRole', @membername = 'dba' go use msdb go --为角色名为 dba 的角色赋予配置文件发送邮件的权限 exec sysmail_add_principalprofile_sp @principal_name = 'dba', -- 角色名称 @profile_name = 'SendEmailProfile', -- 配置文件名称 @is_default = 1 -- 对于角色所拥有的配置文件的顺序,一个数据库角色可以有多个配置文件的权限
データベース セッションへのログインに使用されるロールにデータベース電子メールを送信する権限がない場合も、エラーが報告されます。したがって、上記はデータベース電子メールを送信する権限をロールに与える SQL ステートメントです。
以上がトリガーを使用して SQL Server を共有し、サンプル コードを電子メールで送信するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Microsoft SQL Server は、Microsoft によって発売されたリレーショナル データベース管理システムです。統合されたビジネス インテリジェンス (BI) ツールを使用してエンタープライズ レベルのデータ管理を提供する包括的なデータベース プラットフォームです。使いやすく、拡張性が高く、高いパフォーマンスを備えています。関連ソフトウェアとの統合度が高く、高い利点があります。 SQL Server データベース エンジンは、リレーショナル データと構造化データに対して、より安全で信頼性の高いストレージ機能を提供し、ユーザーがビジネス向けに可用性とパフォーマンスの高いデータ アプリケーションを構築および管理できるようにします。

SQLServer それとも MySQL?最新の調査により最適なデータベースの選択が明らかに 近年、インターネットやビッグデータの急速な発展に伴い、データベースの選択は企業や開発者にとって重要な課題となっています。多くのデータベースの中でも、最も一般的で広く使用されている 2 つのリレーショナル データベースである SQL Server と MySQL は、非常に物議を醸しています。では、SQLServer と MySQL のどちらを選択すればよいでしょうか?最新の研究により、この問題が明らかになりました。まず、

PDO を使用して Microsoft SQL Server データベースに接続する方法の概要: PDO (PHPDataObjects) は、PHP が提供するデータベースにアクセスするための統合インターフェイスです。これには、データベースの抽象化レイヤーを実装したり、大量のコードを変更せずに異なるデータベース タイプを簡単に切り替えたりできるなど、多くの利点があります。この記事では、PDO を使用して Microsoft SQL Server データベースに接続する方法を紹介し、関連するコード例をいくつか示します。ステップ

インターネットの普及に伴い、Web サイトやアプリケーションの開発は多くの企業や個人の主要なビジネスになりました。 PHP と SQLServer データベースは 2 つの非常に重要なツールです。 PHP は動的な Web サイトの開発に使用できるサーバー側スクリプト言語であり、SQL Server は Microsoft によって開発されたリレーショナル データベース管理システムであり、幅広いアプリケーション シナリオを備えています。この記事では、PHPとSQL Serverの開発とそのメリット、デメリット、活用方法について説明します。まず、しましょう

Web 開発では、PHP と MySQL の組み合わせが非常に一般的です。ただし、場合によっては、SQL Server などの他の種類のデータベースに接続する必要があります。この記事では、PHP を使用して SQL Server に接続する 5 つの異なる方法について説明します。

SQL Server と MySQL: 高可用性アーキテクチャにはどちらのデータベースが適していますか?今日のデータ主導の世界では、信頼性が高く安定したシステムを構築するために高可用性が必須の 1 つです。データのストレージと管理の中核コンポーネントとして、データベースの高可用性は企業の業務運営にとって極めて重要です。多くのデータベースの中で、SQLServer と MySQL が一般的な選択肢です。では、高可用性アーキテクチャの観点から見ると、どのデータベースがより適しているのでしょうか?この記事では 2 つを比較し、いくつかの提案を示します。

SQLServer と MySQL は、現在非常に人気のある 2 つのリレーショナル データベース管理システム (RDBMS) です。どちらも大規模なデータを保存および管理するための強力なツールです。ただし、大規模なデータの処理に関してはいくつかの違いがあります。この記事では、大規模なデータ処理への適性に焦点を当てて、SQL Server と MySQL を比較します。まず、SQLServer と MySQL の基本的な特性を理解しましょう。 SQLServerはMicrosoftによって開発されました

インターネットの継続的な発展に伴い、データベースの選択はますます重要になってきています。多くのデータベースの中でも、SQLServer と MySQL の 2 つは注目度の高いオプションです。 SQLServer は Microsoft によって開発されたリレーショナル データベース管理システムであり、MySQL はオープンソースのリレーショナル データベース管理システムです。では、SQLServer と MySQL の間で最適なデータベース ソリューションを選択するにはどうすればよいでしょうか?まず、これら 2 つのデータベースをパフォーマンスの観点から比較できます。 SQLサーバーが処理中です
