USP_RECREATESCHEMABOUND
Definition
Copy
CREATE procedure [dbo].[USP_RECREATESCHEMABOUND]
as
begin
if exists ( select name from sys.tables where name = 'SCHEMABOUNDVIEWSDROPPED')
begin
declare @DROP nvarchar(max);
declare @DEFINITION nvarchar(max);
declare @OBJECT_ID int;
declare CMod cursor FAST_FORWARD for select DROPSTMT, DEFINITION, OBJECT_ID from dbo.[SCHEMABOUNDVIEWSDROPPED] order by PRIORITY asc
;
open CMod;
fetch next from CMod into @DROP, @DEFINITION, @OBJECT_ID;
while @@FETCH_STATUS = 0
begin
exec (@DEFINITION);
if exists(select 1 from sys.tables where name = 'SCHEMABOUNDVIESINDEXESDROPPED')
begin
declare @SQLCOMMAND nvarchar(max);
declare @INDEXNAME nvarchar(max);
declare CIndex cursor FAST_FORWARD for select INDEXNAME, INDEXCOMMAND from dbo.SCHEMABOUNDVIESINDEXESDROPPED where OBJECT_ID = @OBJECT_ID;
open CIndex;
fetch next from CIndex into @INDEXNAME, @SQLCOMMAND;
while @@FETCH_STATUS = 0
begin
if not exists(select 1 from sys.indexes where name = @INDEXNAME)
exec (@SQLCOMMAND);
fetch next from CIndex into @INDEXNAME, @SQLCOMMAND;
end;
close CIndex;
deallocate CIndex;
end;
fetch next from CMod into @DROP, @DEFINITION, @OBJECT_ID;
end;
close Cmod;
deallocate CMod;
drop table dbo.[SCHEMABOUNDVIEWSDROPPED]
end;
if exists(select 1 from sys.tables where name = 'SCHEMABOUNDVIESINDEXESDROPPED')
drop table dbo.SCHEMABOUNDVIESINDEXESDROPPED
end;