VS2010 솔루션에 데이터베이스 프로젝트가 있습니다. 최근에 뷰를 변경하고 테이블에 직접 가지 않고이 뷰를 사용하도록 여러 함수를 변경했습니다. 하지만 배포 할 때 요청 된 열이보기에 아직 없으므로 대부분의 함수에서 오류가 발생합니다. 뷰의 업데이트가 UDF의 업데이트보다 늦게 발생합니다. 이 동작을 변경할 수있는 방법이 있습니까? 배포 스크립트가 테이블, 뷰, SP 및 UDF 순서로 업데이트되는 것이 최선의 방법이 아닐 수도 있습니다. 테이블이 먼저 업데이트 된 것처럼 보이지만 뷰는 배포 스크립트의 중간에 던져졌습니다.Visual Studio 2010에서 배포 프로세스가 너무 늦게 배포됩니다.
0
A
답변
2
UDF는 뷰에서 사용될 수 있고 뷰는 UDF에서 사용될 수 있으므로 모든 SQL을 구문 분석해야 일관된 전개 순서를 판별하기 위해 모든 뷰를 분석해야합니다. 그리고 다른 데이터베이스에 의존성이 있다면 어떻게해야 할지를 누가 알 수 있습니다.
편집
지금까지 내가 볼 수있는, 배포 순서를 강제로 문서화/지원 방법이 없습니다. 최소한의 테스트를 거치면 뷰보다 먼저 UDF (항상 테이블 값)가 배포됩니다.
심지어 낯선 편집, 그것은 종속성 분석을 수행 밝혀졌습니다. db 프로젝트에 대한 .dbschema 출력 파일을 보면, 함수에 대한 < Relationship Name = "BodyDependencies"> 요소가 생성되고, 뷰/열의 목록이 나열된 것을 볼 수 있습니다. 그러나 배치 SQL 스크립트는 나중에 뷰를 저장합니다. 이상한.
아마 최종 편집 편집 3. 일반적으로 문제는 해결할 수 없다고 생각합니다. (시피, 나는 스키마 바인딩을 지정했기 때문에 다음과 같은 오류 만 있음).
create table dbo.T1 (
ID int not null,
C1 varchar(10) not null,
C2 varchar(10) not null,
C3 varchar(10) not null
)
go
create view dbo.V1
with schemabinding
as
select ID,C1,C2
from dbo.T1
go
create function dbo.F1()
returns table
with schemabinding
as
return select ID,C1,C2 from dbo.V1 where ID=1
go
alter view dbo.V1
with schemabinding
as
select ID,C1,C3
from dbo.T1
go
alter function dbo.F1()
returns table
with schemabinding
as
return select ID,C1,C3 from dbo.V1 where ID=1
go
결과 :
Msg 3729, Level 16, State 3, Procedure V1, Line 4
Cannot ALTER 'dbo.V1' because it is being referenced by object 'F1'.
Msg 207, Level 16, State 1, Procedure F1, Line 5
Invalid column name 'C3'.
관련 문제
- 1. Visual Studio 증분 빌드 : XML 문서 파일이 너무 늦게 생성되었습니다.
- 2. Visual Studio 2010에서 exe 게시/배포
- 3. cellForRowAtIndexPath가 너무 늦게 호출되었습니다.
- 4. Visual Studio 2010에서 LibTiff 사용
- 5. ftpServer 태그없이 Visual Studio 2010에서 배포 패키지를 작성하는 방법은 무엇입니까?
- 6. Visual Studio 2010에서 SQL DB 스키마 업데이트를 배포 하시겠습니까?
- 7. NSURLRequest가 너무 늦게 데이터를 수신합니다.
- 8. Visual Studio 2008 - 두 프로젝트를 장치에 배포
- 9. Visual Studio 2010에서 Inconsolata 사용
- 10. Visual Studio 2010에서 SQL 저장
- 11. Visual Studio 2010에서 눈금자 표시
- 12. Visual Studio 2010에서 디자이너 코드보기
- 13. Visual Studio 2010에서 AnkhSVN 설정
- 14. ADODB는 Visual Studio 2010에서 지원됩니까?
- 15. Visual Studio 2010에서 라이브러리 연결하기
- 16. Visual Studio 2010에서 PCL 사용
- 17. Visual Studio 2010에서 rvalue 참조
- 18. visual studio 2010에서 디버깅 목록
- 19. Visual Studio 2010에서 DebuggerVisualizer 디버깅
- 20. Visual Studio 2010에서 Oracle에 연결
- 21. Visual Studio 2010 설치 및 배포 프로젝트?
- 22. Visual Studio 2010에서 테스트를 실행할 때
- 23. Visual Studio 2010에서 App_Theme 폴더를 배포하지 않습니다.
- 24. Visual Studio 2010에서 Visual Studio 2010 C++ 도구를 사용하는 방법?
- 25. Visual Studio 2010에서 컨트롤 스 내핑
- 26. Visual Studio 배포 프로젝트 - CustomActionData
- 27. Visual Studio 2010 확장 배포
- 28. 너무 늦게 스토리 보드 시작하기 (Silverlight)
- 29. Visual Studio 2010에서 코드 디버그를 허용하지 않습니다.
- 30. Visual Studio 2010에서 JSLint.VS Addin을 사용하려면 어떻게해야합니까?
기존의 함수 정의가 이전 뷰 정의에 의존하고, 새로운 기능의 정의는 새로운 뷰 정의에 의존하는 경우, 변경을 사용하여 데이터베이스를 변경할 수있는 권리 방법이 없습니다 UDF를 뷰에서 사용하는 것을 인식하지 못했지만 실제로는 뷰에 매개 변수가없는 스칼라 또는 UDF를 사용할 수 있습니다. 그러나 UDF 전에 내보기 업데이트를 실행하도록 배포 할 수 있습니까? 나는 그것이 muste가 업데이트된다는 것을 알고 있고 다른 어떤 의존성도 가지지 않는다. 하지만 모든 데이터베이스에서 그것을 수동으로 업데이트하고 싶지는 않습니다. – Markus
그것은 해결책이 아니지만 지금 당장은 풀 수없는 대답입니다. 너무 나빴어. 도와 줘서 고마워. 대신 일부 사전 배포 확인을 수행하고 그런 식으로 해결할 것입니다. – Markus