2012-12-13 1 views
6

내 .net 응용 프로그램에서 2 개의 differnet sql 서버 테이블에 레코드를 생성하는 작업이 있습니다. 가장 좋은 방법은 무엇입니까?2 통화 또는 SQL 서버에 대한 단일 호출

하나의 저장 프로 시저로 두 레코드를 모두 만들어야합니까? OR 다른 저장 프로 시저가 해당 데이터베이스의 각 레코드를 만들고 두 호출을 트랜잭션에 랩핑해야합니까? 하나가 실패하면 둘 다 실패합니까?

어느 쪽이 더 좋은가?

+12

트란 어쨌든. 이것은 거의 조기 최적화입니다. 그것이 더 깨끗한 방식으로하십시오. 진정으로 궁금하다면 두 가지 방법을 사용하여 프로파일 러를 실행하여 운영 환경에서 실제 성능 통계를 얻으십시오. –

답변

1

저장 프로 시저가 더 효율적입니다. 또한 서버 측을 작성해야하는 코드가 적어집니다. 단점은 이제 스스로 SQL을 작성하는 방법을 알고 있거나 누가 당신을 위해 작성할 수 있는지 DBA가 있어야한다는 것입니다.

다른 질문에 관해서는 두 테이블에 모두 삽입되는 1 개의 저장된 proc입니다.

고려해야 할 또 다른 사항 : 코드에서 이와 같이 많은 것을해야한다면 좋은 ORM을 배우고 코드 (옵션 2)에서이 모든 작업을 수행하는 것이 좋습니다. 그러나 이것이 일종의 일회성 일인 경우, 저장 프로 시저는 더 똑똑한 접근 방식이 될 것입니다.

0

로직을 SQL Server에 저장하고 트랜잭션 범위를 정의하는 것이 더 좋으며 .net 응용 프로그램에서 트리거 된이 동작이 저장 프로 시저에서 작업을 수행 할 때이 두 작업이 성공적으로 완료되면 트랜잭션을 제출하고 그렇지 않으면 이 트랜잭션은 롤백됩니다. 이렇게하면 성능이 향상됩니다.

  • 실행 계획 보존 및의
  • 검색어 자동 매개 변수화
  • 비즈니스 규칙과 정책의
  • 캡슐화
  • 응용 프로그램 모듈화
  • 공유를 재사용 : 아래에 나열된 마이크로 소프트 문서를 따라 저장 프로 시저를 사용하여 몇 가지 장점이 있습니다 응용 프로그램 간의 응용 프로그램 논리
  • 안전하고 일관된 데이터베이스 개체에 대한 액세스
  • 일관성, 안전한 데이터는
  • 네트워크 대역폭 보존
  • 시스템에서 자동 실행을위한 지원 시동
  • 강화 된 하드웨어 및 소프트웨어 기능
  • 향상된 보안
  • 감소 개발 비용 및 신뢰성 향상
  • 중앙, 수정 일반적인 루틴에 대한 보안, 관리 및 유지 관리
관련 문제