我正在编写一个脚本来更新数据库以添加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文件组或分区方案。”如果我将一个简单的select放入if语句并在线上取出alter table filestream,它就能正常运行并且不执行if语句。因此,即使if语句为false,它总是在语句上运行alter table filestream。
任何想法或建议都会很棒。感谢。
答案 0 :(得分:0)
在不知道细节的情况下很难推断出您的业务逻辑,但我想说如果您只想更改没有定义文件流数据空间的表,请考虑基于以下查询的条件(如果它返回给定表为NULL,表示未定义文件流数据空间(文件组或分区方案):
select filestream_data_space_id from sys.tables