Pregunta

Necesito alterar un disparador en sql server 2005 y quiero hacerlo usando un adaptador de tabla y una instrucción sql, no un proceso almacenado. Sé que podría ejecutar esto en el navegador de consultas y ejecutarlo, pero necesito implementarlo en varias bases de datos y usar un adaptador de tabla en la actualización. ¿Es esto posible?

Haciendo Añadir Consulta - > Actualización - > pegando el siguiente código - > Query Builder para ver si se analiza

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

error ... No se admite la construcción o instrucción SQL USE [DataBaseName].

y si elimino la parte superior y empiezo con ALTER TRIGGER

La construcción o instrucción ALTER TRIGGER SQL no es compatible.

Todavía soy bastante nuevo en esto y no me sorprendería que o esté haciendo esto de la manera incorrecta y / o que sea imposible hacerlo sin un proceso almacenado.

EDITAR: Sí, estoy haciendo esto en C #.

gracias. Puedo hacerlo de esa manera comenzando en ALTER TRIGGER, esto hará el trabajo.

¿Fue útil?

Solución

TableAdapter espera un conjunto de resultados, no una consulta real. Para hacer esto con éxito, necesitará usar el objeto SqlCommand para realizar su actualización.

Si no ha usado uno antes, es bastante simple, primero declara su conexión, luego crea su comando usando la conexión. Una vez creado el comando, configure el texto del comando igual a su script, y luego puede llamar al método ExecuteNonQuery () para ejecutar el script después de abrir la conexión. Si dice qué idioma está utilizando, puedo intentar proporcionar un ejemplo.

Editar

Aquí hay un ejemplo de C #, rápido y sucio, pero se entiende. NOTA, hecho desde la memoria, pero debe ser correcto.

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();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top