SQL Server 2000에서 SQL Server 2008 R2 SP2로 데이터베이스를 전송하고 하나의 저장 프로 시저를 제외하고 정상적으로 작동합니다.저장 프로 시저가 SQL Server 2000에서는 작동하지만 SQL Server 2008R2에서는 작동하지 않습니다.
declare @Dates table (
ForDate smalldatetime,
DayStart int,
PRIMARY KEY CLUSTERED (ForDate)
)
INSERT INTO @Dates
SELECT M.ForDate
FROM @Master M
GROUP BY M.ForDate
오류는 다음과 같습니다 : 오류 코드의 다음 부분에 나타납니다
제가메시지 213, 수준 16, 상태 1, 프로 시저 REP_Media, 라인 (115)
열 이름 제공된 값의 개수 나 테이블 정의와 일치하지 않습니다.
@Dates
테이블은 변수 열
DayStart
에 제공된 값이 없기 때문에 에러가 발생하는 것을 알았다. 내부 선택에 NULL을 추가 할 수 있으며 모든 것이 잘 작동합니다.
그러나 동일한 절차가 SQL Server 2000에서 작동하며 SQL Server 2008 R2 SP2에서는 작동하지 않습니다. 이유가 무엇입니까? 절차를 변경하지 않고 정상 작동을 위해 수행해야하는 작업 (일부 서버 옵션 또는 다른 솔루션)
프로 시저 정의 및 데이터베이스 옵션에서 SET ANSI_NULL_DFLT_ON ON
을 사용하려고 시도했지만 성공하지 못했습니다.
글쎄, 그건 정말 나쁜 연습이 같은 삽입 문을 작성하는 것입니다. insert 문을 작성할 때는 항상 열 목록을 지정해야합니다. –
아쉽게도 이것은 내 코드가 아니며 이러한 요청은 데이터베이스를 사용하는 응용 프로그램의 다른 곳에서 발생할 수 있습니다. – Sergey