2008-11-05 7 views
0

SQL Server 2005에서 트리거를 변경해야하며 저장된 proc가 아닌 테이블 어댑터와 SQL 문을 사용하여이를 수행하려고합니다. 내가 쿼리 브라우저에서 실행할 수 있고 그것을 실행할 수 있지만 여러 데이터베이스에 배포하고 업데이트에서 테이블 어댑터를 사용해야합니다. 이것이 가능한가?SQL Server 2005에서 트리거 변경

쿼리 추가를 답니다 - 업데이트> -> 아래 코드를 붙여 -> 쿼리 빌더보고가

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

오류를 분석하면 ... 사용은 [데이터베이스 이름] SQL 구문 또는 문이 지원되지 않습니다.

와 나는 상단 부분을 제거하고 단지 ALTER TRIGGER

는 ALTER TRIGGER SQL은 구성이나 문이 지원되지 않습니다 시작합니다.

나는 여전히 이것에 상당히 익숙하지 않다. 나는이 잘못된 방향으로 가고 있거나 저장된 proc 없이는 불가능하다는 사실에 놀라지 않을 것이다.

편집 : 예, C#에서이 작업을 수행하고 있습니다.

감사합니다. ALTER TRIGGER에서 시작하는 방식으로이 작업을 수행 할 수 있습니다. 이렇게하면 작업이 완료됩니다.

답변

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(); 
}