0

SQL Server 2005 でトリガーを変更する必要があり、ストアド プロシージャではなく、テーブル アダプターと SQL ステートメントを使用して変更したいと考えています。これをクエリ ブラウザーで実行して実行できることはわかっていますが、複数のデータベースに展開し、更新でテーブル アダプターを使用する必要があります。これは可能ですか?

クエリの追加 -> 更新 -> 以下のコードの貼り付け -> クエリ ビルダーを実行して、解析されるかどうかを確認します。

print("USE [DataBaseName]
GO
/****** Object:  Trigger [dbo].[UpdateCurrentAddress]    Script Date: 10/30/2008 14:47:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[UpdateCurrentAddress] ON [dbo].[PreviousAddresses] 
FOR INSERT, UPDATE, DELETE
AS
-- Check to see if there was an insert/update or a deletion.
IF (SELECT COUNT(*) FROM inserted) >= 1
BEGIN
    IF (SELECT CountryID FROM inserted) <> 181

...moar...");

エラー... USE [DataBaseName] SQL コンストラクトまたはステートメントはサポートされていません。

そして、上部を取り外して ALTER TRIGGER から始めると

ALTER TRIGGER SQL 構文またはステートメントはサポートされていません。

私はまだこれにかなり慣れていないので、これを間違った方法で行っているか、ストアド プロシージャなしでは実行できないことに驚かないでしょう。

編集:ええ、私はC#でこれをやっています。

ありがとう。ALTER TRIGGER から始めて、そのようにすることができます。これで作業が完了します。

4

1 に答える 1

2

TableAdapter は、実際のクエリではなく、結果セットを想定しています。これを正常に行うには、SqlCommand オブジェクトを使用して実際に更新を実行する必要があります。

非常に単純な前に使用したことがない場合は、最初に接続を宣言し、次に接続を使用してコマンドを作成します。コマンドが作成されたら、commandtext をスクリプトと同じに設定すると、接続を開いた後に ExecuteNonQuery() メソッドを呼び出してスクリプトを実行できます。使用している言語を教えていただければ、例を挙げてみることができます。

編集

これは C# の例で、簡単で汚いですが、要点はわかります。注、メモリから行われますが、正しいはずです。

using(SqlConnection oConnection = new SqlConnection("Yourconnectionhere"))
using(SqlCommand oCommand = new SqlCommand(oConnection))
{
    //Configure the command object
    oCommand.CommandText = "Your script here";

    //Open connectin and run script
    oConnection.Open();
    oCommand.ExecuteNonQuery();
    oConnection.Close();
}
于 2008-11-05T15:58:18.820 に答える