Domanda

Devo modificare un trigger in SQL Server 2005 e voglio farlo utilizzando un adattatore per tabelle e un'istruzione SQL, non un proc memorizzato. So che potrei eseguirlo nel browser delle query ed eseguirlo, ma ho bisogno di distribuirlo su più database e utilizzare un adattatore per la tabella nell'aggiornamento. È possibile?

Aggiungi query - > Aggiornamento - > incollando il codice seguente - > Query Builder per vedere se analizza

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...");

errore ... Il costrutto o l'istruzione SQL USE [DataBaseName] non è supportato.

e se rimuovo la parte superiore e inizio da ALTER TRIGGER

Il costrutto o l'istruzione SQL ALTER TRIGGER non è supportato.

Sono ancora abbastanza nuovo in questo e non sarei sorpreso dal fatto che o sto andando in questo modo nel modo sbagliato e / o è impossibile fare a meno di un proc memorizzato.

EDIT: Sì, lo sto facendo in C #.

Grazie. Posso farlo in questo modo a partire da ALTER TRIGGER, questo porterà a termine il lavoro.

È stato utile?

Soluzione

TableAdapter si aspetta un set di risultati, non una query effettiva. Per fare questo con successo dovrai usare l'oggetto SqlCommand per eseguire effettivamente l'aggiornamento.

Se non ne hai mai usato uno prima che sia abbastanza semplice, prima dichiari la tua connessione, quindi crei il tuo comando usando la connessione. Una volta creato il comando, imposta il comando command uguale al tuo script, quindi puoi chiamare il metodo ExecuteNonQuery () per eseguire lo script dopo aver aperto la connessione. Se dici quale lingua stai usando, posso provare a fornire un esempio.

Modifica

Ecco un esempio in C #, veloce e sporco ma ottiene il punto. NOTA, fatto dalla memoria, ma dovrebbe essere corretto.

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();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top