문제

SQL Server 2005에서 트리거를 변경해야하며 저장된 Proc가 아닌 테이블 어댑터와 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...");

오류 ... 사용 [databaseName] SQL 구성 또는 문은 지원되지 않습니다.

그리고 상단 부분을 제거하고 Alter Trigger에서 시작하면

ALTER 트리거 SQL 구성 또는 명령문은 지원되지 않습니다.

나는 여전히 이것에 대해 상당히 새로운 것이며 내가 이것에 대해 잘못하고 있거나 저장된 Proc 없이는 불가능하다는 사실에 놀라지 않을 것입니다.

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

감사해요. Alter Trigger에서 시작하여 그렇게 할 수 있습니다.이 작업은 작업을 완료하게됩니다.

도움이 되었습니까?

해결책

Tableadapter는 실제 쿼리가 아닌 결과 세트를 기대하고 있습니다. 이 작업을 성공적으로 수행하려면 SQLCommand 객체를 사용하여 실제로 업데이트를 확인해야합니다.

아주 간단하기 전에 사용하지 않은 경우 먼저 연결을 선언하면 연결을 사용하여 명령을 만듭니다. 명령이 생성되면 명령 텍스트를 스크립트와 동일하게 설정 한 다음 executeonQuery () 메소드를 호출하여 연결을 열 후 스크립트를 실행할 수 있습니다. 당신이 어떤 언어를 사용하고 있는지 말하면, 나는 예제를 제공하려고 노력할 수 있습니다.

편집하다

다음은 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();
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top