Filestream 기능을 추가하기 위해 데이터베이스를 업데이트하는 스크립트를 작성하고 있습니다. 스크립트는 오류없이 여러 번 실행할 수 있어야합니다. 이것은 내가 현재 가지고있는 것입니다테이블 변경 Alert가 false 인 경우에도 Filestream이 실행됩니다.
IF ((select count(*) from sys.columns a
inner join sys.objects b on a.object_id = b.object_id
inner join sys.default_constraints c on c.parent_object_id = a.object_id
where a.name = 'evidence_data' and b.name='evidence'
and c.name='DF__evidence_evidence_data') = 0)
begin
ALTER TABLE evidence SET (FILESTREAM_ON = AnalysisFSGroup)
ALTER TABLE evidence ALTER COLUMN id ADD ROWGUIDCOL;
end
GO
데이터베이스에 대해 이것을 처음 실행할 때 제대로 작동합니다. 두 번째로 if 문을 false로 설정하면 '증거'에 FILESTREAM 파일 그룹 또는 파티션 구성표가 있으므로 FILESTREAM 파일 그룹 또는 파티션 구성표를 추가 할 수 없습니다. "라는 오류가 발생합니다. if 문에 간단한 select를 넣고 alter table filestream을 꺼내면 올바르게 작동하고 if 문을 수행하지 않습니다. 따라서 if 문이 false 인 경우에도 명령문에서 항상 alter table filestream을 항상 실행합니다.
어떤 의견이나 제안이라도 좋을 것입니다. 감사.
있습니까? 그 중 하나라도 잘못되면 항상 ALTER가 실행됩니다 (특히 DF__ 제약 이름이 의심 스럽습니다). – RBarryYoung
예. 확실합니다. IF 문에서 select를 실행하면 자체, 1의 정확한 결과를 리턴합니다. 고마워요. – Allison