1

ここでは SQL Server 2008 を使用しています。私は死にかけている古い Web アプリを継承し、まったく新しい Web アプリに置き換えられました。新しいプロジェクトは稼働中ですが、古いプロジェクトは次の 1 か月半の移行期間のために存在します。

ここに問題があります。誰かがこのアプリを使用して SQL Server のテーブルに新しいレコードを追加したときに、アクションを実行する必要があります。古いソース コードはかなりお粗末で (真剣に、私が到着する前にバージョン管理が行われていません)、古いアプリを使用して電子メール通知を受け取るためだけに、時間をかけて何かをまとめる余裕はありません。

私の考え - SQL Server トリガーを使用して、INSERT 後にメールを送信します。新しいレコード (数十ではなく常に 1 レコード) がテーブルに入力されるたびに、自分自身と別の幸運な人にメールを送信したいと思います。SQL Serverでこれを行ったことはありませんが、実行可能のようです。

現在の私のSQLスクリプトは次のとおりです。

CREATE TRIGGER NotificationMail 
ON OldJunk.[dbo].[JunkTable]
AFTER INSERT
AS
BEGIN
   EXEC msdb.dbo.sp_send_dbmail --QUESTION: I HAVE NO IDEA WHAT TO PUT HERE, WHAT FOLLOWS
                                -- IS JUST COPYPASTA FROM A FORUM
            @recipients = 'shubniggurath@email.com, someoneelse@email.com',
            @subject = 'Old Registration Request - New Record',
            @body = 'Somebody decided to register using the old system.'
END            
GO

この create ステートメントを実行しようとすると、次のエラーが発生します。

ターゲットが現在のデータベースにないため、'OldJunk.dbo.JunkTable' にトリガーを作成できません。

よろしくお願いします。

4

1 に答える 1

1

(SQL Server Management Studio のコマンドを使用して)OldJunkデータベースにアクセスし、USE ....次の SQL ステートメントを使用してトリガーを作成する必要があります。

USE OldJunk; 
GO 

CREATE TRIGGER NotificationMail ON [dbo].[JunkTable]
.....

(database).(schema).(object)トリガー定義で3 部表記を使用することはできません。

それがうまくいかない場合、おそらくそのようなテーブルはありません。タイプミスはありますか? それとも、これは実際にはテーブルではありませんか?

于 2013-09-19T20:29:46.800 に答える