2014-04-08 4 views
0

: 지금 2 주 동안SQL 서버 : INSERT/UPDATE/DELETE 실패 다음 SET 옵션은 잘못된 설정을 가지고 있기 때문에 'QUOTED_IDENTIFIER'나는이 오히려 어색 문제가

을 때마다 내가 업데이트 한 후에 생성/저장 프로 시저 내 SQL 스크립트를 사용하여 이러한 저장 프로 시저가 실행될 때 위의 오류와 함께 실패합니다.

이 문제를 다루는 다른 게시물은 필자의 경우 도움이되지 않았습니다.

  1. 내 저장 프로 시저 스크립트 내 노트북 ​​(SQL 서버 2012, 윈도우 서버 2008 R2)에 완벽하게 작동 :

    여기 내 경우에는 적용되지 않습니다 일반적인 솔루션을 제외 할 수 있도록, 매개 변수의 수입니다.

  2. 내 저장 프로 시저 스크립트는 다른 컴퓨터 (SQL Server 2012가 설치된 빌드 시스템, SQL Server 2005가 설치된 테스트 서버, SQL Server 2005가 설치된 테스트 서버 및 SQL Server 2005가 설치된 PROD 서버)). 그러나 저장 프로시 저는 내 컴퓨터가 아닌 다른 컴퓨터에서 실행되지 않습니다.

  3. 다른 컴퓨터와 마찬가지로 내 컴퓨터에서 프로덕션 SQL Server (SQL Server 2005)의 데이터베이스 백업을 사용하고 있습니다.

  4. 가장 기본적인 저장 프로 시저조차도 실패합니다 (예 : DELETE myTable WHERE ID = @delID).

  5. 확인한 모든 SQL Server 설치에서 인용 식별자는 서버 및 데이터베이스 수준 모두에서 (!)으로 설정됩니다. 그렇다면 스토어드 프로 시저에서 갑자기이 옵션을 ON으로 설정해야하는 이유는 무엇입니까?

  6. 스크립트를 실행하는 데 SQLCMD을 사용하고 있습니다. 이것은 USE 문에 서버 인스턴스의 데이터베이스 이름을 동적으로 설정하는 옵션을 제공합니다.

  7. 내 스크립트에는 USE 문과 ALTER PROCEDURE 바로 뒤에 오는 문구 만 포함됩니다. 또는 대안

IF EXISTS (...) DROP PROCEDURE ... GO; CREATE PROCEDURE ... 모두 지금 년간 근무하지만,이 갑자기 2 주 전부터, 내 스크립트로 만든 저장 프로 시저 갑자기 실패합니다.

내 스크립트에서 수동으로 QUOTED_IDENTIFIERON으로 설정할 수 있음을 알고 있지만 원하지 않습니다. 여기 뭔가 잘못되었습니다. 나는 그 문제가 무엇인지 알고 싶다.

여기가 어떻게됩니까?

답변

3

SQLCMD는 기본적으로 QUOTED_IDENTIFIER 옵션을 OFF로 설정합니다. -I 옵션을 사용하여 변경할 수 있습니다.

+0

네,하지만 그건 제가 찾던 해결책이 아닙니다. 그것은 -I 옵션을 추가하지 않고 완벽하게 작동해야합니다. 그것은 수년간 일했습니다. 하지만 갑자기 그럴 수는 없습니다. 나는이 행동의 이유를 알고 싶습니다. 나는 그것을 막고 싶지 않습니다. – AxD

+0

죄송합니다. 2 주 전에 갑자기 컴퓨터에서 갑자기 변경된 사항을 말할 수 없습니다.나는 당신의 컴퓨터에 대한 완전한 접근없이 누군가가 할 수있는 최선의 설명을 주었다. – dean

+0

고마워, 딘, 도와 주려고. 물론, 나는 이해한다. 하지만 SS 추적 도구를 사용할 수 있어야하며이 동작의 원인을 추적 할 수 있어야한다고 가정합니다. 오류는 그 원인을 제공하지 않습니다. SS를 원래의 작동하는 상태로 되 돌리는 이유에 대해 조사하고 싶습니다. – AxD

0

저장 프로 시저가 인덱스가 추가 된 테이블에서 현재 작업 중일 수 있습니까? 나는 같은 문제를 겪었고 계산 된 열에 대한 새로운 색인 때문입니다.

+0

고객이 계산 열을 사용하지 않습니다. 그래서, 나는 그것이 우리의 문제와 관련이 없다는 것을 두려워합니다. – AxD

+0

확인. 내가 가진 유일한 다른 제안은 색인이있는보기가 있는지 여부입니다. 동일한 데이터베이스에서 실행되는 두 개의 응용 프로그램이있는 상황이 있습니다. 하나는 뷰 및/또는 계산 된 열의 인덱스를 처리 할 수 ​​있고 다른 하나는 명백히 Quoted Identifier = off를 사용합니다. – squeel

관련 문제