set ansi_nulls on set quoted_identifier on set nocount on go if not exists( select 1 from [dbo].[sysusers] where name=N'System.Activities.DurableInstancing.InstanceStoreUsers' and issqlrole=1 ) create role [System.Activities.DurableInstancing.InstanceStoreUsers] go if not exists( select 1 from [dbo].[sysusers] where name=N'System.Activities.DurableInstancing.WorkflowActivationUsers' and issqlrole=1 ) create role [System.Activities.DurableInstancing.WorkflowActivationUsers] go if not exists( select 1 from [dbo].[sysusers] where name=N'System.Activities.DurableInstancing.InstanceStoreObservers' and issqlrole=1 ) create role [System.Activities.DurableInstancing.InstanceStoreObservers] go if not exists (select * from sys.schemas where name = N'System.Activities.DurableInstancing') exec ('create schema [System.Activities.DurableInstancing]') go if exists (select * from sys.views where object_id = object_id(N'[System.Activities.DurableInstancing].[InstancePromotedProperties]')) drop view [System.Activities.DurableInstancing].[InstancePromotedProperties] go if exists (select * from sys.objects where object_id = object_id(N'[System.Activities.DurableInstancing].[InstancesTable]') and type in (N'U')) drop table [System.Activities.DurableInstancing].[InstancesTable] go create table [System.Activities.DurableInstancing].[InstancesTable] ( [Id] uniqueidentifier not null, [SurrogateInstanceId] bigint identity not null, [SurrogateLockOwnerId] bigint null, [PrimitiveDataProperties] varbinary(max) default null, [ComplexDataProperties] varbinary(max) default null, [WriteOnlyPrimitiveDataProperties] varbinary(max) default null, [WriteOnlyComplexDataProperties] varbinary(max) default null, [MetadataProperties] varbinary(max) default null, [DataEncodingOption] tinyint default 0, [MetadataEncodingOption] tinyint default 0, [Version] bigint not null, [PendingTimer] datetime null, [CreationTime] datetime not null, [LastUpdated] datetime default null, [WorkflowHostType] uniqueidentifier null, [ServiceDeploymentId] bigint null, [SuspensionExceptionName] nvarchar(450) default null, [SuspensionReason] nvarchar(max) default null, [BlockingBookmarks] nvarchar(max) default null, [LastMachineRunOn] nvarchar(450) default null, [ExecutionStatus] nvarchar(450) default null, [IsInitialized] bit default 0, [IsSuspended] bit default 0, [IsReadyToRun] bit default 0, [IsCompleted] bit default 0, [SurrogateIdentityId] bigint not null ) go --SQL Azure doesn't support allow_page_lock option. A conditional compilation is done to remove allow_page_lock in SQL Azure. if (serverproperty('EngineEdition') = 5) begin alter table [System.Activities.DurableInstancing].[InstancesTable] ADD CONSTRAINT CIX_InstancesTable PRIMARY KEY CLUSTERED (SurrogateInstanceId) end else begin alter table [System.Activities.DurableInstancing].[InstancesTable] ADD CONSTRAINT CIX_InstancesTable PRIMARY KEY CLUSTERED (SurrogateInstanceId) with (allow_page_locks = off) end go if (serverproperty('EngineEdition') = 5) begin exec(' create unique nonclustered index [NCIX_InstancesTable_Id] on [System.Activities.DurableInstancing].[InstancesTable] ([Id]) include ([Version], [SurrogateLockOwnerId], [IsCompleted]) ') end else begin exec(' create unique nonclustered index [NCIX_InstancesTable_Id] on [System.Activities.DurableInstancing].[InstancesTable] ([Id]) include ([Version], [SurrogateLockOwnerId], [IsCompleted]) with (allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_InstancesTable_SurrogateLockOwnerId] on [System.Activities.DurableInstancing].[InstancesTable] ([SurrogateLockOwnerId]) ') end else begin exec(' create nonclustered index [NCIX_InstancesTable_SurrogateLockOwnerId] on [System.Activities.DurableInstancing].[InstancesTable] ([SurrogateLockOwnerId]) with (allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index NCIX_InstancesTable_LastUpdated on [System.Activities.DurableInstancing].[InstancesTable] ([LastUpdated]) ') end else begin exec(' create nonclustered index NCIX_InstancesTable_LastUpdated on [System.Activities.DurableInstancing].[InstancesTable] ([LastUpdated]) with (allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_InstancesTable_CreationTime] on [System.Activities.DurableInstancing].[InstancesTable] ([CreationTime]) ') end else begin exec(' create nonclustered index [NCIX_InstancesTable_CreationTime] on [System.Activities.DurableInstancing].[InstancesTable] ([CreationTime]) with (allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_InstancesTable_SuspensionExceptionName] on [System.Activities.DurableInstancing].[InstancesTable] ([SuspensionExceptionName]) ') end else begin exec(' create nonclustered index [NCIX_InstancesTable_SuspensionExceptionName] on [System.Activities.DurableInstancing].[InstancesTable] ([SuspensionExceptionName]) with (allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_InstancesTable_ServiceDeploymentId] on [System.Activities.DurableInstancing].[InstancesTable] ([ServiceDeploymentId]) ') end else begin exec(' create nonclustered index [NCIX_InstancesTable_ServiceDeploymentId] on [System.Activities.DurableInstancing].[InstancesTable] ([ServiceDeploymentId]) with (allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_InstancesTable_WorkflowHostType] on [System.Activities.DurableInstancing].[InstancesTable] ([WorkflowHostType]) ') end else begin exec(' create nonclustered index [NCIX_InstancesTable_WorkflowHostType] on [System.Activities.DurableInstancing].[InstancesTable] ([WorkflowHostType]) with (allow_page_locks = off) ') end go if exists (select * from sys.objects where object_id = object_id(N'[System.Activities.DurableInstancing].[RunnableInstancesTable]') and type in (N'U')) drop table [System.Activities.DurableInstancing].[RunnableInstancesTable] go create table [System.Activities.DurableInstancing].[RunnableInstancesTable] ( [SurrogateInstanceId] bigint not null, [WorkflowHostType] uniqueidentifier null, [ServiceDeploymentId] bigint null, [RunnableTime] datetime not null, [SurrogateIdentityId] bigint not null ) go --SQL Azure doesn't support allow_page_lock option. A conditional compilation is done to remove allow_page_lock in SQL Azure. if (serverproperty('EngineEdition') = 5) begin alter table [System.Activities.DurableInstancing].[RunnableInstancesTable] ADD CONSTRAINT CIX_RunnableInstancesTable_SurrogateInstanceId PRIMARY KEY CLUSTERED (SurrogateInstanceId) with (ignore_dup_key = on) end else begin alter table [System.Activities.DurableInstancing].[RunnableInstancesTable] ADD CONSTRAINT CIX_RunnableInstancesTable_SurrogateInstanceId PRIMARY KEY CLUSTERED (SurrogateInstanceId) with (ignore_dup_key = on, allow_page_locks = off) end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_RunnableInstancesTable] on [System.Activities.DurableInstancing].[RunnableInstancesTable] ([WorkflowHostType], [RunnableTime]) ') end else begin exec(' create nonclustered index [NCIX_RunnableInstancesTable] on [System.Activities.DurableInstancing].[RunnableInstancesTable] ([WorkflowHostType], [RunnableTime]) with (allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_RunnableInstancesTable_RunnableTime] on [System.Activities.DurableInstancing].[RunnableInstancesTable] ([RunnableTime]) include ([WorkflowHostType], [ServiceDeploymentId]) ') end else begin exec(' create nonclustered index [NCIX_RunnableInstancesTable_RunnableTime] on [System.Activities.DurableInstancing].[RunnableInstancesTable] ([RunnableTime]) include ([WorkflowHostType], [ServiceDeploymentId]) with (allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_RunnableInstancesTable_SurrogateIdentityId] on [System.Activities.DurableInstancing].[RunnableInstancesTable] ([SurrogateIdentityId]) ') end else begin exec(' create nonclustered index [NCIX_RunnableInstancesTable_SurrogateIdentityId] on [System.Activities.DurableInstancing].[RunnableInstancesTable] ([SurrogateIdentityId]) with (allow_page_locks = off) ') end go if exists (select * from sys.objects where object_id = object_id(N'[System.Activities.DurableInstancing].[KeysTable]') and type in (N'U')) drop table [System.Activities.DurableInstancing].[KeysTable] go create table [System.Activities.DurableInstancing].[KeysTable] ( [Id] uniqueidentifier not null, [SurrogateKeyId] bigint identity not null, [SurrogateInstanceId] bigint null, [EncodingOption] tinyint null, [Properties] varbinary(max) null, [IsAssociated] bit ) go --SQL Azure doesn't support allow_page_lock option. A conditional compilation is done to remove allow_page_lock in SQL Azure. if (serverproperty('EngineEdition') = 5) begin alter table [System.Activities.DurableInstancing].[KeysTable] ADD CONSTRAINT CIX_KeysTable PRIMARY KEY CLUSTERED (Id) with (ignore_dup_key = on) end else begin alter table [System.Activities.DurableInstancing].[KeysTable] ADD CONSTRAINT CIX_KeysTable PRIMARY KEY CLUSTERED (Id) with (ignore_dup_key = on, allow_page_locks = off) end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_KeysTable_SurrogateInstanceId] on [System.Activities.DurableInstancing].[KeysTable] ([SurrogateInstanceId]) ') end else begin exec(' create nonclustered index [NCIX_KeysTable_SurrogateInstanceId] on [System.Activities.DurableInstancing].[KeysTable] ([SurrogateInstanceId]) with (allow_page_locks = off) ') end go if exists (select * from sys.objects where object_id = object_id(N'[System.Activities.DurableInstancing].[LockOwnersTable]') and type in (N'U')) drop table [System.Activities.DurableInstancing].[LockOwnersTable] go create table [System.Activities.DurableInstancing].[LockOwnersTable] ( [Id] uniqueidentifier not null, [SurrogateLockOwnerId] bigint identity not null, [LockExpiration] datetime not null, [WorkflowHostType] uniqueidentifier null, [MachineName] nvarchar(128) not null, [EnqueueCommand] bit not null, [DeletesInstanceOnCompletion] bit not null, [PrimitiveLockOwnerData] varbinary(max) default null, [ComplexLockOwnerData] varbinary(max) default null, [WriteOnlyPrimitiveLockOwnerData] varbinary(max) default null, [WriteOnlyComplexLockOwnerData] varbinary(max) default null, [EncodingOption] tinyint default 0, [WorkflowIdentityFilter] tinyint not null ) go --SQL Azure doesn't support allow_page_lock option. A conditional compilation is done to remove allow_page_lock in SQL Azure. if (serverproperty('EngineEdition') = 5) begin alter table [System.Activities.DurableInstancing].[LockOwnersTable] ADD CONSTRAINT CIX_LockOwnersTable PRIMARY KEY CLUSTERED (SurrogateLockOwnerId) end else begin alter table [System.Activities.DurableInstancing].[LockOwnersTable] ADD CONSTRAINT CIX_LockOwnersTable PRIMARY KEY CLUSTERED (SurrogateLockOwnerId) with (allow_page_locks = off) end go if (serverproperty('EngineEdition') = 5) begin exec(' create unique nonclustered index [NCIX_LockOwnersTable_Id] on [System.Activities.DurableInstancing].[LockOwnersTable] ([Id]) with (ignore_dup_key = on) ') end else begin exec(' create unique nonclustered index [NCIX_LockOwnersTable_Id] on [System.Activities.DurableInstancing].[LockOwnersTable] ([Id]) with (ignore_dup_key = on, allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_LockOwnersTable_LockExpiration] on [System.Activities.DurableInstancing].[LockOwnersTable] ([LockExpiration]) include ([WorkflowHostType], [MachineName]) ') end else begin exec(' create nonclustered index [NCIX_LockOwnersTable_LockExpiration] on [System.Activities.DurableInstancing].[LockOwnersTable] ([LockExpiration]) include ([WorkflowHostType], [MachineName]) with (allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_LockOwnersTable_WorkflowHostType] on [System.Activities.DurableInstancing].[LockOwnersTable] ([WorkflowHostType]) ') end else begin exec(' create nonclustered index [NCIX_LockOwnersTable_WorkflowHostType] on [System.Activities.DurableInstancing].[LockOwnersTable] ([WorkflowHostType]) with (allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_LockOwnersTable_WorkflowIdentityFilter] on [System.Activities.DurableInstancing].[LockOwnersTable] ([WorkflowIdentityFilter]) ') end else begin exec(' create nonclustered index [NCIX_LockOwnersTable_WorkflowIdentityFilter] on [System.Activities.DurableInstancing].[LockOwnersTable] ([WorkflowIdentityFilter]) with (allow_page_locks = off) ') end go if exists (select * from sys.objects where object_id = object_id(N'[System.Activities.DurableInstancing].[InstanceMetadataChangesTable]') and type in (N'U')) drop table [System.Activities.DurableInstancing].[InstanceMetadataChangesTable] go create table [System.Activities.DurableInstancing].[InstanceMetadataChangesTable] ( [SurrogateInstanceId] bigint not null, [ChangeTime] bigint identity not null, [EncodingOption] tinyint not null, [Change] varbinary(max) not null ) go alter table [System.Activities.DurableInstancing].[InstanceMetadataChangesTable] ADD CONSTRAINT CIX_InstanceMetadataChangesTable PRIMARY KEY CLUSTERED (SurrogateInstanceId, ChangeTime) go if exists (select * from sys.objects where object_id = object_id(N'[System.Activities.DurableInstancing].[ServiceDeploymentsTable]') and type in (N'U')) drop table [System.Activities.DurableInstancing].[ServiceDeploymentsTable] go create table [System.Activities.DurableInstancing].[ServiceDeploymentsTable] ( [Id] bigint identity not null, [ServiceDeploymentHash] uniqueidentifier not null, [SiteName] nvarchar(max) not null, [RelativeServicePath] nvarchar(max) not null, [RelativeApplicationPath] nvarchar(max) not null, [ServiceName] nvarchar(max) not null, [ServiceNamespace] nvarchar(max) not null, ) go --SQL Azure doesn't support allow_page_lock option. A conditional compilation is done to remove allow_page_lock in SQL Azure. if (serverproperty('EngineEdition') = 5) begin alter table [System.Activities.DurableInstancing].[ServiceDeploymentsTable] ADD CONSTRAINT CIX_ServiceDeploymentsTable PRIMARY KEY CLUSTERED (Id) end else begin alter table [System.Activities.DurableInstancing].[ServiceDeploymentsTable] ADD CONSTRAINT CIX_ServiceDeploymentsTable PRIMARY KEY CLUSTERED (Id) with (allow_page_locks = off) end go if (serverproperty('EngineEdition') = 5) begin exec(' create unique nonclustered index [NCIX_ServiceDeploymentsTable_ServiceDeploymentHash] on [System.Activities.DurableInstancing].[ServiceDeploymentsTable] ([ServiceDeploymentHash]) with (ignore_dup_key = on) ') end else begin exec(' create unique nonclustered index [NCIX_ServiceDeploymentsTable_ServiceDeploymentHash] on [System.Activities.DurableInstancing].[ServiceDeploymentsTable] ([ServiceDeploymentHash]) with (ignore_dup_key = on, allow_page_locks = off) ') end go if exists (select * from sys.objects where object_id = object_id(N'[System.Activities.DurableInstancing].[InstancePromotedPropertiesTable]') and type in (N'U')) drop table [System.Activities.DurableInstancing].[InstancePromotedPropertiesTable] go create table [System.Activities.DurableInstancing].[InstancePromotedPropertiesTable] ( [SurrogateInstanceId] bigint not null, [PromotionName] nvarchar(400) not null, [Value1] sql_variant null, [Value2] sql_variant null, [Value3] sql_variant null, [Value4] sql_variant null, [Value5] sql_variant null, [Value6] sql_variant null, [Value7] sql_variant null, [Value8] sql_variant null, [Value9] sql_variant null, [Value10] sql_variant null, [Value11] sql_variant null, [Value12] sql_variant null, [Value13] sql_variant null, [Value14] sql_variant null, [Value15] sql_variant null, [Value16] sql_variant null, [Value17] sql_variant null, [Value18] sql_variant null, [Value19] sql_variant null, [Value20] sql_variant null, [Value21] sql_variant null, [Value22] sql_variant null, [Value23] sql_variant null, [Value24] sql_variant null, [Value25] sql_variant null, [Value26] sql_variant null, [Value27] sql_variant null, [Value28] sql_variant null, [Value29] sql_variant null, [Value30] sql_variant null, [Value31] sql_variant null, [Value32] sql_variant null, [Value33] varbinary(max) null, [Value34] varbinary(max) null, [Value35] varbinary(max) null, [Value36] varbinary(max) null, [Value37] varbinary(max) null, [Value38] varbinary(max) null, [Value39] varbinary(max) null, [Value40] varbinary(max) null, [Value41] varbinary(max) null, [Value42] varbinary(max) null, [Value43] varbinary(max) null, [Value44] varbinary(max) null, [Value45] varbinary(max) null, [Value46] varbinary(max) null, [Value47] varbinary(max) null, [Value48] varbinary(max) null, [Value49] varbinary(max) null, [Value50] varbinary(max) null, [Value51] varbinary(max) null, [Value52] varbinary(max) null, [Value53] varbinary(max) null, [Value54] varbinary(max) null, [Value55] varbinary(max) null, [Value56] varbinary(max) null, [Value57] varbinary(max) null, [Value58] varbinary(max) null, [Value59] varbinary(max) null, [Value60] varbinary(max) null, [Value61] varbinary(max) null, [Value62] varbinary(max) null, [Value63] varbinary(max) null, [Value64] varbinary(max) null ) go --SQL Azure doesn't support allow_page_lock option. A conditional compilation is done to remove allow_page_lock in SQL Azure. if (serverproperty('EngineEdition') = 5) begin alter table [System.Activities.DurableInstancing].[InstancePromotedPropertiesTable] ADD CONSTRAINT CIX_InstancePromotedPropertiesTable PRIMARY KEY CLUSTERED (SurrogateInstanceId, PromotionName) end else begin alter table [System.Activities.DurableInstancing].[InstancePromotedPropertiesTable] ADD CONSTRAINT CIX_InstancePromotedPropertiesTable PRIMARY KEY CLUSTERED (SurrogateInstanceId, PromotionName) with (allow_page_locks = off) end go if exists (select * from sys.objects where object_id = object_id(N'[System.Activities.DurableInstancing].[SqlWorkflowInstanceStoreVersionTable]') and type in (N'U')) drop table [System.Activities.DurableInstancing].[SqlWorkflowInstanceStoreVersionTable] go create table [System.Activities.DurableInstancing].[SqlWorkflowInstanceStoreVersionTable] ( [Major] bigint NOT NULL, [Minor] bigint NOT NULL, [Build] bigint NOT NULL, [Revision] bigint NOT NULL, [LastUpdated] datetime ) go alter table [System.Activities.DurableInstancing].[SqlWorkflowInstanceStoreVersionTable] ADD CONSTRAINT CIX_SqlWorkflowInstanceStoreVersionTable PRIMARY KEY CLUSTERED (Major, Minor, Build, Revision) go insert into [System.Activities.DurableInstancing].[SqlWorkflowInstanceStoreVersionTable] values (4, 6, 0, 0, getutcdate()) if exists (select * from sys.views where object_id = object_id(N'[System.Activities.DurableInstancing].[ServiceDeployments]')) drop view [System.Activities.DurableInstancing].[ServiceDeployments] go create view [System.Activities.DurableInstancing].[ServiceDeployments] as select [Id] as [ServiceDeploymentId], [SiteName], [RelativeServicePath], [RelativeApplicationPath], [ServiceName], [ServiceNamespace] from [System.Activities.DurableInstancing].[ServiceDeploymentsTable] go grant select on object::[System.Activities.DurableInstancing].[ServiceDeployments] to [System.Activities.DurableInstancing.InstanceStoreObservers] go grant delete on object::[System.Activities.DurableInstancing].[ServiceDeployments] to [System.Activities.DurableInstancing.InstanceStoreUsers] go create view [System.Activities.DurableInstancing].[InstancePromotedProperties] with schemabinding as select [InstancesTable].[Id] as [InstanceId], [InstancesTable].[DataEncodingOption] as [EncodingOption], [PromotionName], [Value1], [Value2], [Value3], [Value4], [Value5], [Value6], [Value7], [Value8], [Value9], [Value10], [Value11], [Value12], [Value13], [Value14], [Value15], [Value16], [Value17], [Value18], [Value19], [Value20], [Value21], [Value22], [Value23], [Value24], [Value25], [Value26], [Value27], [Value28], [Value29], [Value30], [Value31], [Value32], [Value33], [Value34], [Value35], [Value36], [Value37], [Value38], [Value39], [Value40], [Value41], [Value42], [Value43], [Value44], [Value45], [Value46], [Value47], [Value48], [Value49], [Value50], [Value51], [Value52], [Value53], [Value54], [Value55], [Value56], [Value57], [Value58], [Value59], [Value60], [Value61], [Value62], [Value63], [Value64] from [System.Activities.DurableInstancing].[InstancePromotedPropertiesTable] join [System.Activities.DurableInstancing].[InstancesTable] on [InstancePromotedPropertiesTable].[SurrogateInstanceId] = [InstancesTable].[SurrogateInstanceId] go grant select on object::[System.Activities.DurableInstancing].[InstancePromotedProperties] to [System.Activities.DurableInstancing.InstanceStoreObservers] go if exists (select * from sys.objects where object_id = object_id(N'[System.Activities.DurableInstancing].[DefinitionIdentityTable]') and type in (N'U')) drop table [System.Activities.DurableInstancing].[DefinitionIdentityTable] go create table [System.Activities.DurableInstancing].[DefinitionIdentityTable] ( [SurrogateIdentityId] bigint identity not null, [DefinitionIdentityHash] uniqueidentifier not null, [DefinitionIdentityAnyRevisionHash] uniqueidentifier not null, [Name] nvarchar(max) null, [Package] nvarchar(max) null, [Build] bigint null, [Major] bigint null, [Minor] bigint null, [Revision] bigint null ) go --SQL Azure doesn't support allow_page_lock option. A conditional compilation is done to remove allow_page_lock in SQL Azure. if (serverproperty('EngineEdition') = 5) begin alter table [System.Activities.DurableInstancing].[DefinitionIdentityTable] ADD CONSTRAINT CIX_DefinitionIdentityTable PRIMARY KEY CLUSTERED (SurrogateIdentityId) end else begin alter table [System.Activities.DurableInstancing].[DefinitionIdentityTable] ADD CONSTRAINT CIX_DefinitionIdentityTable PRIMARY KEY CLUSTERED (SurrogateIdentityId) with (allow_page_locks = off) end go if (serverproperty('EngineEdition') = 5) begin exec(' create unique nonclustered index [NCIX_DefinitionIdentityTable_DefinitionIdentityHash] on [System.Activities.DurableInstancing].[DefinitionIdentityTable] ([DefinitionIdentityHash]) with (ignore_dup_key = on) ') end else begin exec(' create unique nonclustered index [NCIX_DefinitionIdentityTable_DefinitionIdentityHash] on [System.Activities.DurableInstancing].[DefinitionIdentityTable] ([DefinitionIdentityHash]) with (ignore_dup_key = on, allow_page_locks = off) ') end go if (serverproperty('EngineEdition') = 5) begin exec(' create nonclustered index [NCIX_DefinitionIdentityTable_DefinitionIdentityAnyRevisionHash] on [System.Activities.DurableInstancing].[DefinitionIdentityTable] ([DefinitionIdentityAnyRevisionHash]) ') end else begin exec(' create nonclustered index [NCIX_DefinitionIdentityTable_DefinitionIdentityAnyRevisionHash] on [System.Activities.DurableInstancing].[DefinitionIdentityTable] ([DefinitionIdentityAnyRevisionHash]) with (allow_page_locks = off) ') end go insert into [System.Activities.DurableInstancing].[DefinitionIdentityTable] ( [DefinitionIdentityHash], [DefinitionIdentityAnyRevisionHash], [Name], [Package], [Build], [Major], [Minor], [Revision] ) values ( '00000000-0000-0000-0000-000000000000', '00000000-0000-0000-0000-000000000000', null, null, null, null, null, null ) go if exists (select * from sys.objects where object_id = object_id(N'[System.Activities.DurableInstancing].[IdentityOwnerTable]') and type in (N'U')) drop table [System.Activities.DurableInstancing].[IdentityOwnerTable] go create table [System.Activities.DurableInstancing].[IdentityOwnerTable] ( [SurrogateIdentityId] bigint not null, [SurrogateLockOwnerId] bigint not null ) go if (serverproperty('EngineEdition') = 5) begin alter table [System.Activities.DurableInstancing].[IdentityOwnerTable] ADD CONSTRAINT NCIX_IdentityOwnerTable_IdentityOwner PRIMARY KEY CLUSTERED (SurrogateLockOwnerId, SurrogateIdentityId) end else begin alter table [System.Activities.DurableInstancing].[IdentityOwnerTable] ADD CONSTRAINT NCIX_IdentityOwnerTable_IdentityOwner PRIMARY KEY CLUSTERED (SurrogateLockOwnerId, SurrogateIdentityId) with (allow_page_locks = off) end go if exists (select * from sys.views where object_id = object_id(N'[System.Activities.DurableInstancing].[Instances]')) drop view [System.Activities.DurableInstancing].[Instances] go create view [System.Activities.DurableInstancing].[Instances] as select [InstancesTable].[Id] as [InstanceId], [PendingTimer], [CreationTime], [LastUpdated] as [LastUpdatedTime], [InstancesTable].[ServiceDeploymentId], [SuspensionExceptionName], [SuspensionReason], [BlockingBookmarks] as [ActiveBookmarks], case when [LockOwnersTable].[LockExpiration] > getutcdate() then [LockOwnersTable].[MachineName] else null end as [CurrentMachine], [LastMachineRunOn] as [LastMachine], [ExecutionStatus], [IsInitialized], [IsSuspended], [IsCompleted], [InstancesTable].[DataEncodingOption] as [EncodingOption], [PrimitiveDataProperties] as [ReadWritePrimitiveDataProperties], [WriteOnlyPrimitiveDataProperties], [ComplexDataProperties] as [ReadWriteComplexDataProperties], [WriteOnlyComplexDataProperties], [Name] as [IdentityName], [Package] as [IdentityPackage], [Build], [Major], [Minor], [Revision] from [System.Activities.DurableInstancing].[InstancesTable] left outer join [System.Activities.DurableInstancing].[LockOwnersTable] on [InstancesTable].[SurrogateLockOwnerId] = [LockOwnersTable].[SurrogateLockOwnerId] join [System.Activities.DurableInstancing].[DefinitionIdentityTable] on [InstancesTable].[SurrogateIdentityId] = [DefinitionIdentityTable].[SurrogateIdentityId] go grant select on object::[System.Activities.DurableInstancing].[Instances] to [System.Activities.DurableInstancing.InstanceStoreObservers] go grant delete on object::[System.Activities.DurableInstancing].[Instances] to [System.Activities.DurableInstancing.InstanceStoreUsers] go