2011-03-16 4 views
2

이 작업을 수행하기 위해 무엇을 연구해야합니까? 내가 MS-SQL & VB.NetSQL 쿼리 실행을 자동화하는 방법은 무엇입니까?

을 사용하고

나는 startdateenddate를 저장하는 SQL 테이블을 가지고있다. 나는 그 테이블에 대한 쿼리를 실행하기 위해서 10 분마다 enddate이 오늘보다 큰지를 확인하기를 원합니다. 그렇다면 0을 더하고 싶으면 1을 다른 컬럼에 추가하고 싶습니다.

어떻게해야합니까?

+0

질문을 다시 말하게하십시오 : 정확한 SQL 문과 스크립트가 매 10 분마다 반복되기를 원하십니까? – Raptor

답변

1

잘못된 것을 묻는 것처럼 보입니다.

계산 된 입력란을 실행하고 업데이트하는 방아쇠를 찾는 것처럼 들립니다. 어쨌든

그런 다음 실행 예약 된 작업을 넣어 설치에 테이블에 데이터베이스 트리거를 원하고 삽입에 방아쇠 불이 나

USE [<database_name>] 
GO 

/****** Object: Trigger [dbo].[tr_<tablename>_endDateCheck] Script Date: 03/16/2011 12:42:24 ******/ 
SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE TRIGGER [dbo].[tr_<tablename>_endDateCheck] 
    ON [dbo].[<tablename>] 
    AFTER INSERT,UPDATE 
AS 
    BEGIN 

     UPDATE [<tablename>] SET isEnded = CASE WHEN (SELECT endDate FROM inserted WHERE id = inserted.id).endDate > GetDate() THEN 1 ELSE 0 END WHERE id IN (SELECT ID FROM inserted) 

    END 
GO 

또는 이와 매우 비슷한 업데이트처럼 그래서 소리 0,001시간에서 endDate가 = 어제 날짜

UPDATE [<tablename>] SET isEnded = 1 WHERE isEnded = 0 AND endDate BETWEEN DATEADD(DAY, -1, GETDATE()) AND GETDATE() 

편집 한 모든 레코드를 업데이트 : 또는 종료 날짜뿐만 아니라 실제로 특정 시간인가?

SELECT *, CASE WHEN endDate > GetDate() THEN 1 ELSE 0 END AS HasEnded 
FROM [<TableName>] 

Edit2가 :

아마도이 경우의 뷰 정의를 대신 데이터를 선택하는 뷰를 사용해야 고정 문제를을 포함 endDate가 값에 대한 올바른 아니었다 예약 된 작업으로 시간 값

0

SQL Server job을 만들어 업데이트 쿼리를 실행하십시오.

UPDATE YourTable 
    SET AnotherColumn = AnotherColumn + 1 
    WHERE enddate > DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0) /* Today's date at midnight */ 
+0

답장을 보내 주셔서 감사합니다. 바로 답장을 보내 주셔서 감사합니다. – Michael

+0

@ 마이클 : 도와 드리겠습니다. 도움이되었다고 생각되면 옆에있는 체크 표시를 클릭하여 답변을 수락하십시오. –

0

당신은 SQL 작업을 작성할 수 있습니다, 또는 당신은 당신이 코드에서 더 편안 또는 행동이 더 광범위한 비즈니스 규칙을 필요로하는 경우, 데이터베이스에 대해 실행하는 서비스를 쓰기합니다.

+0

답변을 주셔서 감사합니다. SQL 작업이 몇 분 정도 읽었을 때처럼 작동하는지 확인합니다. – Michael

관련 문제