USE [AdventureWorks] GO SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[AllocatePageInMixedExtent] @dbName [dbo].[SinglePartNameType], @p [dbo].[Partition], @pg [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[AllocatePageInMixedExtent] GO /****** Object: StoredProcedure [dbo].[AllocatePageInUniformExtent] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[AllocatePageInUniformExtent] @dbName [dbo].[SinglePartNameType], @p [dbo].[Partition], @pg [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[AllocatePageInUniformExtent] GO /****** Object: StoredProcedure [dbo].[AllocatePageToObjectInMixedExtent] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[AllocatePageToObjectInMixedExtent] @dbName [dbo].[SinglePartNameType], @p [dbo].[Partition], @pg [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[AllocatePageToObjectInMixedExtent] GO /****** Object: StoredProcedure [dbo].[AllocatePageToObjectInUniformExtent] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[AllocatePageToObjectInUniformExtent] @dbName [dbo].[SinglePartNameType], @p [dbo].[Partition], @pg [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[AllocatePageToObjectInUniformExtent] GO /****** Object: StoredProcedure [dbo].[AllocatePageToSystemInMixedExtent] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[AllocatePageToSystemInMixedExtent] @dbName [dbo].[SinglePartNameType], @pg [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[AllocatePageToSystemInMixedExtent] GO /****** Object: StoredProcedure [dbo].[AllocatePageToSystemInUniformExtent] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[AllocatePageToSystemInUniformExtent] @dbName [dbo].[SinglePartNameType], @pg [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[AllocatePageToSystemInUniformExtent] GO /****** Object: StoredProcedure [dbo].[CorruptPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[CorruptPage] @dbName [dbo].[SinglePartNameType], @pg [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[CorruptPage] GO /****** Object: StoredProcedure [dbo].[DeallocatePage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[DeallocatePage] @dbName [dbo].[SinglePartNameType], @p [dbo].[Partition], @pg [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[DeallocatePage] GO /****** Object: StoredProcedure [dbo].[DeallocatePageFromObject] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[DeallocatePageFromObject] @dbName [dbo].[SinglePartNameType], @p [dbo].[Partition], @pg [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[DeallocatePageFromObject] GO /****** Object: StoredProcedure [dbo].[DeallocatePageFromSystem] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[DeallocatePageFromSystem] @dbName [dbo].[SinglePartNameType], @pg [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[DeallocatePageFromSystem] GO /****** Object: StoredProcedure [dbo].[DeleteLastRow] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[DeleteLastRow] @dbName [dbo].[SinglePartNameType], @pg [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[DeleteLastRow] GO /****** Object: StoredProcedure [dbo].[DeleteRow] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[DeleteRow] @dbName [dbo].[SinglePartNameType], @pageId [dbo].[PageId], @part [dbo].[Partition], @slotId [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[DeleteRow] GO /****** Object: StoredProcedure [dbo].[DumpTableInfo] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[DumpTableInfo] @p [dbo].[Partition], @tableName [nvarchar](100) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.IndexInterface].[DumpTableInfo] GO /****** Object: StoredProcedure [dbo].[FlipColumnNullBit] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[FlipColumnNullBit] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @slotId [int], @columnName [dbo].[SinglePartNameType] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[FlipColumnNullBit] GO /****** Object: StoredProcedure [dbo].[FlipNullBlockIndicator] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[FlipNullBlockIndicator] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[FlipNullBlockIndicator] GO /****** Object: StoredProcedure [dbo].[FlipTagB] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[FlipTagB] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @bitPos [int] = 0 WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[FlipTagB] GO /****** Object: StoredProcedure [dbo].[FlipUniquifierNullBit] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[FlipUniquifierNullBit] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @slotId [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[FlipUniquifierNullBit] GO /****** Object: StoredProcedure [dbo].[FlipVariableBlockIndicator] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[FlipVariableBlockIndicator] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[FlipVariableBlockIndicator] GO /****** Object: StoredProcedure [dbo].[FlipVersioningInfoIndicator] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[FlipVersioningInfoIndicator] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[FlipVersioningInfoIndicator] GO /****** Object: StoredProcedure [dbo].[GetAllChildPagesSQL] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetAllChildPagesSQL] @childPgs [xml] OUTPUT, @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @indexName [dbo].[SinglePartNameType], @pNo [int], @pgId [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.IndexInterface].[GetAllChildPagesSql] GO /****** Object: StoredProcedure [dbo].[GetBackPointer] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetBackPointer] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @bppid [dbo].[PageId] OUTPUT, @bpslotId [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetBackpointer] GO /****** Object: StoredProcedure [dbo].[GetBackPointerHeader] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetBackPointerHeader] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @header [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetBackpointerHeader] GO /****** Object: StoredProcedure [dbo].[GetBlobFragment] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetBlobFragment] @p [dbo].[Partition], @tableName [nvarchar](100) = N'BlobInfo' WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.IndexInterface].[DumpBlobFragment] GO /****** Object: StoredProcedure [dbo].[GetColumnNullBit] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetColumnNullBit] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @slotId [int], @columnName [dbo].[SinglePartNameType], @indicator [nvarchar](50) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetColumnNullBit] GO /****** Object: StoredProcedure [dbo].[getDataRecordNullBitLeaf] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO create procedure [dbo].[getDataRecordNullBitLeaf] @tableName varchar(250), @colName varchar(100), @nullBitPos int OUTPUT AS BEGIN dbcc traceon(3805, -1) if @colName = 'Uniquifier' begin select @nullBitPos = leaf_null_bit from sys.system_internals_partition_columns r left outer join sys.columns c on c.object_id = object_id(@tableName) and column_id = partition_column_id join sys.partitions p on r.partition_id = p.partition_id where p.object_id= object_id(@tableName) and name is null end else begin select @nullBitPos = leaf_null_bit from sys.system_internals_partition_columns r left outer join sys.columns c on c.object_id = object_id(@tableName) and column_id = partition_column_id join sys.partitions p on r.partition_id = p.partition_id where p.object_id= object_id(@tableName) and name = @colName and index_id < 2 end END GO /****** Object: StoredProcedure [dbo].[getDataRecordOffSetLeaf] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO create procedure [dbo].[getDataRecordOffSetLeaf] @tableName varchar(50), @colName varchar(100), @offSet int OUTPUT AS BEGIN dbcc traceon(3805, -1) if @colName = 'Uniquifier' begin select @offSet = leaf_offset from sys.system_internals_partition_columns r left outer join sys.columns c on c.object_id = object_id(@tableName) and column_id = partition_column_id join sys.partitions p on r.partition_id = p.partition_id where p.object_id= object_id(@tableName) and name is null end else begin select @offSet = leaf_offset from sys.system_internals_partition_columns r left outer join sys.columns c on c.object_id = object_id(@tableName) and column_id = partition_column_id join sys.partitions p on r.partition_id = p.partition_id where p.object_id= object_id(@tableName) and name = @colName and index_id < 2 end END GO /****** Object: StoredProcedure [dbo].[GetDbInfo] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetDbInfo] @db [dbo].[DbInfo] OUTPUT, @dbName [dbo].[SinglePartNameType] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.DbInfo].[GetDbInfo] GO /****** Object: StoredProcedure [dbo].[GetDiffmapPageId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetDiffmapPageId] @pageId [dbo].[PageId] OUTPUT, @db [dbo].[DbInfo], @fileName [nvarchar](523), @occurance [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.DbInfo].[GetDiffmapPageId] GO /****** Object: StoredProcedure [dbo].[GetFirstIAMPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetFirstIAMPage] @pageId [dbo].[PageId] OUTPUT, @p [dbo].[Partition], @name [nvarchar](4) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetFirstIamPage] GO /****** Object: StoredProcedure [dbo].[GetFirstPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetFirstPage] @pageId [dbo].[PageId] OUTPUT, @p [dbo].[Partition], @name [nvarchar](4) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetFirstPage] GO /****** Object: StoredProcedure [dbo].[getFixColLength] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO create procedure [dbo].[getFixColLength] @tableName varchar(50), @colName varchar(100), @length int OUTPUT AS begin select @length = max_length from sys.columns where object_id = object_id(@tableName) and name = @colName end GO /****** Object: StoredProcedure [dbo].[GetFixedLength] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetFixedLength] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @fixedLength [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetFixedLength] GO /****** Object: StoredProcedure [dbo].[GetFlagBits] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetFlagBits] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @flagBits [binary](2) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetFlagBits] GO /****** Object: StoredProcedure [dbo].[GetForwardedRecordId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetForwardedRecordId] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @fslotId [int], @fpageId [dbo].[PageId] OUTPUT, @slotId [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetForwardedRecordId] GO /****** Object: StoredProcedure [dbo].[GetForwardingStubSlotId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetForwardingStubSlotId] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @startPos [int], @slotId [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetForwardingStubSlotId] GO /****** Object: StoredProcedure [dbo].[GetFreeCount] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetFreeCount] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @freeCount [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetFreeCount] GO /****** Object: StoredProcedure [dbo].[GetFreeData] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetFreeData] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @freeData [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetFreeData] GO /****** Object: StoredProcedure [dbo].[GetGamPageId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetGamPageId] @pageId [dbo].[PageId] OUTPUT, @db [dbo].[DbInfo], @fileName [nvarchar](523), @occurance [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.DbInfo].[GetGamPageId] GO /****** Object: StoredProcedure [dbo].[GetGhostCount] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetGhostCount] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @ghostCount [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetGhostCount] GO /****** Object: StoredProcedure [dbo].[GetHeaderPageId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetHeaderPageId] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @newPId [dbo].[PageId] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetPageId] GO /****** Object: StoredProcedure [dbo].[GetHeaderVersion] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetHeaderVersion] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @headerVersion [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetHeaderVersion] GO /****** Object: StoredProcedure [dbo].[GetIAMPages] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetIAMPages] @p [dbo].[Partition], @fileName [nvarchar](523), @name [nvarchar](4) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetIamPages] GO /****** Object: StoredProcedure [dbo].[GetIAMStartPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetIAMStartPage] @stpageId [dbo].[PageId] OUTPUT, @pageId [dbo].[PageId], @name [nvarchar](20) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetIamStartPage] GO /****** Object: StoredProcedure [dbo].[GetIndex] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetIndex] @p [dbo].[Partition] OUTPUT, @tableName [dbo].[ThreePartNameType], @index [dbo].[SinglePartNameType] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetIndex] GO /****** Object: StoredProcedure [dbo].[GetIndexId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetIndexId] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @indexId [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetIndexId] GO /****** Object: StoredProcedure [dbo].[GetIndexPartition] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetIndexPartition] @p [dbo].[Partition] OUTPUT, @tableName [dbo].[ThreePartNameType], @index [dbo].[SinglePartNameType], @partition [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetIndexPartition] GO /****** Object: StoredProcedure [dbo].[GetLevel] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetLevel] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @level [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetLevel] GO /****** Object: StoredProcedure [dbo].[GetMaximumDataPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetMaximumDataPage] @pageId [dbo].[PageId] OUTPUT, @p [dbo].[Partition], @fileName [nvarchar](523), @name [nvarchar](4) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetMaximumDataPage] GO /****** Object: StoredProcedure [dbo].[GetMaximumIAMPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetMaximumIAMPage] @pageId [dbo].[PageId] OUTPUT, @p [dbo].[Partition], @fileName [nvarchar](523), @name [nvarchar](4) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetMaximumIamPage] GO /****** Object: StoredProcedure [dbo].[GetMaxIndexLevelSQL] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetMaxIndexLevelSQL] @maxLevel [int] OUTPUT, @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @indexName [dbo].[SinglePartNameType], @pNo [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.IndexInterface].[GetMaxIndexLevelSql] GO /****** Object: StoredProcedure [dbo].[GetMinimumDataPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetMinimumDataPage] @pageId [dbo].[PageId] OUTPUT, @p [dbo].[Partition], @fileName [nvarchar](523), @name [nvarchar](4) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetMinimumDataPage] GO /****** Object: StoredProcedure [dbo].[GetMinimumIAMPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetMinimumIAMPage] @pageId [dbo].[PageId] OUTPUT, @p [dbo].[Partition], @fileName [nvarchar](523), @name [nvarchar](4) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetMinimumIamPage] GO /****** Object: StoredProcedure [dbo].[GetMlmapPageId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetMlmapPageId] @pageId [dbo].[PageId] OUTPUT, @db [dbo].[DbInfo], @fileName [nvarchar](523), @occurance [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.DbInfo].[GetMlmapPageId] GO /****** Object: StoredProcedure [dbo].[GetNextPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetNextPage] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @nextPage [dbo].[PageId] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetNextPage] GO /****** Object: StoredProcedure [dbo].[GetNullBlockCount] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetNullBlockCount] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @count [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetNullBlockCount] GO /****** Object: StoredProcedure [dbo].[GetNullBlockIndicator] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetNullBlockIndicator] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @indicator [nvarchar](50) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetNullBlockIndicator] GO /****** Object: StoredProcedure [dbo].[GetNullOffSet] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetNullOffSet] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @offSet [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetNullOffset] GO /****** Object: StoredProcedure [dbo].[GetNumGamExtents] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetNumGamExtents] @db [dbo].[DbInfo], @fileName [nvarchar](523), @numGamExtents [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.DbInfo].[GetGamExtentCount] GO /****** Object: StoredProcedure [dbo].[GetNumPfsPages] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetNumPfsPages] @db [dbo].[DbInfo], @fileName [nvarchar](523), @numPfsPages [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.DbInfo].[GetPfsPageCount] GO /****** Object: StoredProcedure [dbo].[GetObjectId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetObjectId] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @objectId [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetObjectId] GO /****** Object: StoredProcedure [dbo].[GetPageId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetPageId] @pageId [dbo].[PageId] OUTPUT, @p [dbo].[Partition], @fileid [int], @pageoffset [int], @name [nvarchar](4) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetPageId] GO /****** Object: StoredProcedure [dbo].[GetPagesAtSameLevelSQL] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetPagesAtSameLevelSQL] @pagesAtSameLevel [xml] OUTPUT, @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @indexName [dbo].[SinglePartNameType], @pNo [int], @level [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.IndexInterface].[GetPagesAtSameLevelSql] GO /****** Object: StoredProcedure [dbo].[GetPageType] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetPageType] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @pageType [nvarchar](100) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetPageType] GO /****** Object: StoredProcedure [dbo].[GetPfsPageId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetPfsPageId] @pageId [dbo].[PageId] OUTPUT, @db [dbo].[DbInfo], @fileName [nvarchar](523), @occurance [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.DbInfo].[GetPfsPageId] GO /****** Object: StoredProcedure [dbo].[GetPrevPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetPrevPage] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @prevPage [dbo].[PageId] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetPreviousPage] GO /****** Object: StoredProcedure [dbo].[GetRecordLocatorSQL] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetRecordLocatorSQL] @recLoc [xml] OUTPUT, @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @indexName [dbo].[SinglePartNameType], @pNo [int], @pgId [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.IndexInterface].[GetRecordLocatorSql] GO /****** Object: StoredProcedure [dbo].[GetRecordType] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetRecordType] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @recordType [nvarchar](50) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetRecordType] GO /****** Object: StoredProcedure [dbo].[GetReserveB] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetReserveB] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @reserveB [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetReserveB] GO /****** Object: StoredProcedure [dbo].[GetRootPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetRootPage] @pageId [dbo].[PageId] OUTPUT, @p [dbo].[Partition], @name [nvarchar](4) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetRootPage] GO /****** Object: StoredProcedure [dbo].[GetSgamPageId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetSgamPageId] @pageId [dbo].[PageId] OUTPUT, @db [dbo].[DbInfo], @fileName [nvarchar](523), @occurance [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.DbInfo].[GetSgamPageId] GO /****** Object: StoredProcedure [dbo].[GetSlotCount] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetSlotCount] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotCount [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetSlotCount] GO /****** Object: StoredProcedure [dbo].[GetSlotOffset] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetSlotOffset] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @offset [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetSlotOffset] GO /****** Object: StoredProcedure [dbo].[GetTable] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetTable] @p [dbo].[Partition] OUTPUT, @tableName [dbo].[ThreePartNameType] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetTable] GO /****** Object: StoredProcedure [dbo].[GetTableInfo] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO create procedure [dbo].[GetTableInfo] @dbName Nvarchar(523), @partition Partition, @tableName nvarchar(100) = 'TABLEINFO_RID' as BEGIN exec DumpTableInfo @partition, @tableName END GO /****** Object: StoredProcedure [dbo].[GetTablePartition] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetTablePartition] @p [dbo].[Partition] OUTPUT, @tableName [dbo].[ThreePartNameType], @partition [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetTablePartition] GO /****** Object: StoredProcedure [dbo].[GetTypeFlagBits] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetTypeFlagBits] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @typeFlagBits [binary](1) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetTypeFlagBits] GO /****** Object: StoredProcedure [dbo].[GetUniquifierNullBit] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetUniquifierNullBit] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @slotId [int], @indicator [nvarchar](50) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetUniquifierNullBit] GO /****** Object: StoredProcedure [dbo].[GetUnusedF] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetUnusedF] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @unusedF [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[GetUnusedF] GO /****** Object: StoredProcedure [dbo].[GetVariableBlockIndicator] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetVariableBlockIndicator] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @indicator [nvarchar](50) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetVariableBlockIndicator] GO /****** Object: StoredProcedure [dbo].[GetVariableColumnOffset] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetVariableColumnOffset] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @colName [dbo].[SinglePartNameType], @slotId [int], @offSet [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetVariableColumnOffset] GO /****** Object: StoredProcedure [dbo].[GetVariableCount] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetVariableCount] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @variableCount [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetVariableCount] GO /****** Object: StoredProcedure [dbo].[GetVersionInfoMXts] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetVersionInfoMXts] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @mxts [varbinary](6) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetVersionInfoMXts] GO /****** Object: StoredProcedure [dbo].[GetVersionInfoPointer] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetVersionInfoPointer] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @verpid [dbo].[PageId] OUTPUT, @verslotId [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetVersionInfoPointer] GO /****** Object: StoredProcedure [dbo].[GetVersioningInfoIndicator] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetVersioningInfoIndicator] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @indicator [nvarchar](50) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[GetVersioningInfoIndicator] GO /****** Object: StoredProcedure [dbo].[GetXmlIndexPartition] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[GetXmlIndexPartition] @p [dbo].[Partition] OUTPUT, @tableName [dbo].[ThreePartNameType], @indexName [dbo].[SinglePartNameType] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Partition].[GetXmlIndexPartition] GO /****** Object: StoredProcedure [dbo].[MovePage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[MovePage] @dbName [dbo].[SinglePartNameType], @sourcePageId [dbo].[PageId], @destinationBegin [dbo].[PageId], @destinationInterval [int], @success [int] OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageMover].[MovePage] GO /****** Object: StoredProcedure [dbo].[ReadColumnData] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[ReadColumnData] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @colName [dbo].[SinglePartNameType], @slotId [int], @data [varbinary](8000) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[ReadColumnData] GO /****** Object: StoredProcedure [dbo].[ReadRow] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[ReadRow] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @slotOffset [int], @datalength [int], @data [varbinary](8000) OUTPUT WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[ReadRow] GO /****** Object: StoredProcedure [dbo].[SetBackPointer] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetBackPointer] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @bppid [dbo].[PageId], @bpslotId [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[SetBackpointer] GO /****** Object: StoredProcedure [dbo].[SetBackPointerHeader] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetBackPointerHeader] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @header [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[SetBackpointerHeader] GO /****** Object: StoredProcedure [dbo].[SetFixedLength] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetFixedLength] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @fixedLength [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetFixedLength] GO /****** Object: StoredProcedure [dbo].[SetFlagBits] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetFlagBits] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @flagBits [binary](2) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetFlagBits] GO /****** Object: StoredProcedure [dbo].[SetForwardedRecordId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetForwardedRecordId] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @fslotId [int], @newpageId [dbo].[PageId], @newslotId [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[SetForwardedRecordId] GO /****** Object: StoredProcedure [dbo].[SetFreeCount] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetFreeCount] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @freeCount [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetFreeCount] GO /****** Object: StoredProcedure [dbo].[SetFreeData] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetFreeData] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @freeData [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetFreeData] GO /****** Object: StoredProcedure [dbo].[SetGhostCount] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetGhostCount] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @ghostCount [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetGhostCount] GO /****** Object: StoredProcedure [dbo].[SetHeaderPageId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetHeaderPageId] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @newPId [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetPageId] GO /****** Object: StoredProcedure [dbo].[SetHeaderVersion] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetHeaderVersion] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @headerVersion [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetHeaderVersion] GO /****** Object: StoredProcedure [dbo].[SetIndexId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetIndexId] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @indexId [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetIndexId] GO /****** Object: StoredProcedure [dbo].[SetLevel] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetLevel] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @level [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetLevel] GO /****** Object: StoredProcedure [dbo].[SetNextPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetNextPage] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @nextPage [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetNextPage] GO /****** Object: StoredProcedure [dbo].[SetNullBlockCount] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetNullBlockCount] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @count [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[SetNullBlockCount] GO /****** Object: StoredProcedure [dbo].[SetNullOffSet] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetNullOffSet] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @offSet [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[SetNullOffset] GO /****** Object: StoredProcedure [dbo].[SetNullOffSetOnly] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetNullOffSetOnly] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @offSet [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[SetNullOffsetOnly] GO /****** Object: StoredProcedure [dbo].[SetObjectId] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetObjectId] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @objectId [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetObjectId] GO /****** Object: StoredProcedure [dbo].[SetPageType] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetPageType] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @pageType [nvarchar](100) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetPageType] GO /****** Object: StoredProcedure [dbo].[SetPrevPage] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetPrevPage] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @prevPage [dbo].[PageId] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetPreviousPage] GO /****** Object: StoredProcedure [dbo].[SetRecordType] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetRecordType] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @recordType [nvarchar](50) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[SetRecordType] GO /****** Object: StoredProcedure [dbo].[SetReserveB] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetReserveB] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @reserveB [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetReserveB] GO /****** Object: StoredProcedure [dbo].[SetSlotCount] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetSlotCount] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotCount [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetSlotCount] GO /****** Object: StoredProcedure [dbo].[SetSlotOffset] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetSlotOffset] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @offset [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetSlotOffset] GO /****** Object: StoredProcedure [dbo].[SetTypeFlagBits] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetTypeFlagBits] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @typeFlagBits [binary](1) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetTypeFlagBits] GO /****** Object: StoredProcedure [dbo].[SetUnusedF] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetUnusedF] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @unUsedF [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.PageId].[SetUnusedF] GO /****** Object: StoredProcedure [dbo].[SetVariableColumnOffset] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetVariableColumnOffset] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @colName [dbo].[SinglePartNameType], @slotId [int], @offSet [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[SetVariableColumnOffset] GO /****** Object: StoredProcedure [dbo].[SetVariableCount] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetVariableCount] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @variableCount [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[SetVariableCount] GO /****** Object: StoredProcedure [dbo].[SetVersionInfoMXts] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetVersionInfoMXts] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @mxts [varbinary](6) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[SetVersionInfoMXts] GO /****** Object: StoredProcedure [dbo].[SetVersionInfoPointer] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[SetVersionInfoPointer] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @verpid [dbo].[PageId], @verslotId [int] WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[SetVersionInfoPointer] GO /****** Object: StoredProcedure [dbo].[sp_dbcc_verify] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO create procedure [dbo].[sp_dbcc_verify] ( @cmd varchar(200), -- dbcc command to execute @arg varchar(100), -- dbcc command arguments (in the parenthesis) @options varchar(100), -- additional with options for the dbcc command. no_infomsgs, all_errormsgs, tableresults are on by default @isrepair int = 0, -- if this is not a repair (0) do an additional check with tablock @outputProc nvarchar(128) = null) -- null (default) means the output goes to the console. Non-null means that this is a proc name and the output goes to the specified stored proc with a single string argument -- select output always goes to the console. as begin declare @cmdstr varchar(1000) -- command buffer declare @str varchar(1000) -- output string buffer declare @rc int -- return code set @rc = 0 set nocount on create table #chkDBResults ( Error int, Level smallint, State smallint, MessageText varchar(4000), RepairLevel varchar(100) NULL, Status int, DbId smallint, ObjectId bigint, IndexId bigint, RowsetId bigint, AllocUnitId bigint, [File] smallint, Page bigint, Slot smallint, RefFile smallint, RefPage bigint, RefSlot smallint, Allocation tinyint, pgOffset smallint null ) select @cmdstr = 'dbcc ' + @cmd + '(' + @arg + ') with no_infomsgs, all_errormsgs, tableresults' if (@options != '') begin select @cmdstr = @cmdstr + ', ' + @options end set @str = 'Executing dbcc ' + @cmd if @outputProc is null begin print @str end else begin set @str = @outputProc + ' ''' + @str + '''' exec (@str) end insert into #chkDBResults (Error, Level, State, MessageText, RepairLevel, Status, DbId, ObjectId, IndexId, RowsetId, AllocUnitId, [File], Page, Slot, RefFile, RefPage, RefSlot, Allocation) exec (@cmdstr) -- post process the table for robustness -- the algorithm is as follows: -- 1. All EX_INFO messages are discarded. -- 2. Any error message not in the four DBCC ranges means that the DBCC command failed. -- 3. Any error message in the list below (specified by query ranges) means that the DBCC command failed. -- 4. If a corruption was expected, at least one error in the DBCC ranges and not in the list should be seen. -- If so, then the command passes; otherwise the command fails. -- delete optional information only error messages delete #chkDBResults where Level = 10 declare @result int select @result = sum (dbo.IsCorruptionError(Error)) from #chkDBResults if @outputProc is null begin print 'Begin Results' end else begin set @str = @outputProc + ' ''Begin Results''' exec (@str) end -- if the result is non zero -- dbcc has reported a corruption as expected if (@result > 0) begin set @rc = 1 -- rc is 1 if we hit a corruption. if @outputProc is null begin print 'DBCC check command reported a corruption as expected' end else begin set @str = @outputProc + ' ''DBCC check command reported a corruption.''' exec (@str) end end else begin update #chkDBResults set pgOffset=0 where pgOffset is null select pgOffset, Error, Level, State, db_name(DbId) [Database], object_name(ObjectId) [Object], count(*) [Tally] from #chkDBResults group by pgOffset, Error, Level, State, db_name(DbId), object_name(ObjectId) order by pgOffset, Error, Level, State -- there was no print statement here so just output to the output sproc set @str = @outputProc + ' ''DBCC check command reported no corruption.''' exec (@str) end if @outputProc is null begin print 'End Results' end else begin set @str = @outputProc + ' ''End Results''' exec (@str) end -- if it is not a repair command do the additional check as follows if (@isrepair = 0) begin -- -- now execute the command with tablock option and verify the results -- create table #chkDBTabLockResults ( Error int, Level smallint, State smallint, MessageText varchar(4000), RepairLevel varchar(100) NULL, Status int, DbId smallint, ObjectId bigint, IndexId bigint, RowsetId bigint, AllocUnitId bigint, [File] smallint, Page bigint, Slot smallint, RefFile smallint, RefPage bigint, RefSlot smallint, Allocation tinyint, pgOffset smallint null ) select @cmdstr = @cmdstr + ', tablock' insert into #chkDBTabLockResults (Error, Level, State, MessageText, RepairLevel, Status, DbId, ObjectId, IndexId, RowsetId, AllocUnitId, [File], Page, Slot, RefFile, RefPage, RefSlot, Allocation) exec (@cmdstr) -- delete optional information only error messages delete #chkDBTabLockResults where Level = 10 declare @tabresult int select @tabresult = sum (dbo.IsCorruptionError(Error)) from #chkDBTabLockResults if (@tabresult = 0) begin if @outputProc is null begin print 'Result set from check command executed with tablock option' end else begin set @str = @outputProc + ' ''Result set from check command executed with tablock option''' exec (@str) end update #chkDBTabLockResults set pgOffset=0 where pgOffset is null select pgOffset, Error, Level, State, db_name(DbId) [Database], object_name(ObjectId) [Object], count(*) [Tally] from #chkDBTabLockResults group by pgOffset, Error, Level, State, db_name(DbId), object_name(ObjectId) order by pgOffset, Error, Level, State end -- if (@tabresult = 0) -- -- now verify that the results obtained by both executions (with and without tablock) -- were the same -- declare @res int set @res = 1 if ((@result = 0) and (@tabresult = 1)) begin select @res = 0 end if ((@result = 1) and (@tabresult = 0)) begin select @res = 0 end if (@res = 0) begin -- this one we just print since: -- 1. It's a test failure. -- 2. It's more difficult to log the select result set since -- the output sproc is just a "print" string to a verchar(max) log column. print 'Verification FAILED because there is a difference between check results with and without tablock' print '---------------------------------------------------' print 'Result without tablock is:' select pgOffset, Error, Level, State, db_name(DbId) [Database], object_name(ObjectId) [Object], count(*) [Tally] from #chkDBResults group by pgOffset, Error, Level, State, db_name(DbId), object_name(ObjectId) order by pgOffset, Error, Level, State print '---------------------------------------------------' print 'Result with tablock is:' select pgOffset, Error, Level, State, db_name(DbId) [Database], object_name(ObjectId) [Object], count(*) [Tally] from #chkDBTabLockResults group by pgOffset, Error, Level, State, db_name(DbId), object_name(ObjectId) order by pgOffset, Error, Level, State set @rc = 1 -- return 1 if we detected corruption either with or without tablock. end -- if (@res = 0) end -- if (@isrepair = 0) return @rc end -- sproc GO /****** Object: StoredProcedure [dbo].[UpdateColumn] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[UpdateColumn] @pid [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @tableName [dbo].[ThreePartNameType], @colName [dbo].[SinglePartNameType], @slotId [int], @data [varbinary](8000) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.RecordInterface].[UpdateColumn] GO /****** Object: StoredProcedure [dbo].[UpdateRow] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE [dbo].[UpdateRow] @pageId [dbo].[PageId], @dbName [dbo].[SinglePartNameType], @slotId [int], @slotOffset [int], @datalength [int], @data [varbinary](8000) WITH EXECUTE AS CALLER AS EXTERNAL NAME [AMAPI].[SqlTest.Api.OnDiskStructures.Corruptions].[UpdateRow] GO /****** Object: StoredProcedure [dbo].[uspGetBillOfMaterials] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[uspGetBillOfMaterials] @StartProductID [int], @CheckDate [datetime] AS BEGIN SET NOCOUNT ON; -- Use recursive query to generate a multi-level Bill of Material (i.e. all level 1 -- components of a level 0 assembly, all level 2 components of a level 1 assembly) -- The CheckDate eliminates any components that are no longer used in the product on this date. WITH [BOM_cte]([ProductAssemblyID], [ComponentID], [ComponentDesc], [PerAssemblyQty], [StandardCost], [ListPrice], [BOMLevel], [RecursionLevel]) -- CTE name and columns AS ( SELECT b.[ProductAssemblyID], b.[ComponentID], p.[Name], b.[PerAssemblyQty], p.[StandardCost], p.[ListPrice], b.[BOMLevel], 0 -- Get the initial list of components for the bike assembly FROM [Production].[BillOfMaterials] b INNER JOIN [Production].[Product] p ON b.[ComponentID] = p.[ProductID] WHERE b.[ProductAssemblyID] = @StartProductID AND @CheckDate >= b.[StartDate] AND @CheckDate <= ISNULL(b.[EndDate], @CheckDate) UNION ALL SELECT b.[ProductAssemblyID], b.[ComponentID], p.[Name], b.[PerAssemblyQty], p.[StandardCost], p.[ListPrice], b.[BOMLevel], [RecursionLevel] + 1 -- Join recursive member to anchor FROM [BOM_cte] cte INNER JOIN [Production].[BillOfMaterials] b ON b.[ProductAssemblyID] = cte.[ComponentID] INNER JOIN [Production].[Product] p ON b.[ComponentID] = p.[ProductID] WHERE @CheckDate >= b.[StartDate] AND @CheckDate <= ISNULL(b.[EndDate], @CheckDate) ) -- Outer select from the CTE SELECT b.[ProductAssemblyID], b.[ComponentID], b.[ComponentDesc], SUM(b.[PerAssemblyQty]) AS [TotalQuantity] , b.[StandardCost], b.[ListPrice], b.[BOMLevel], b.[RecursionLevel] FROM [BOM_cte] b GROUP BY b.[ComponentID], b.[ComponentDesc], b.[ProductAssemblyID], b.[BOMLevel], b.[RecursionLevel], b.[StandardCost], b.[ListPrice] ORDER BY b.[BOMLevel], b.[ProductAssemblyID], b.[ComponentID] OPTION (MAXRECURSION 25) END; GO /****** Object: StoredProcedure [dbo].[uspGetEmployeeManagers] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[uspGetEmployeeManagers] @EmployeeID [int] AS BEGIN SET NOCOUNT ON; -- Use recursive query to list out all Employees required for a particular Manager WITH [EMP_cte]([EmployeeID], [ManagerID], [FirstName], [LastName], [Title], [RecursionLevel]) -- CTE name and columns AS ( SELECT e.[EmployeeID], e.[ManagerID], c.[FirstName], c.[LastName], e.[Title], 0 -- Get the initial Employee FROM [HumanResources].[Employee] e INNER JOIN [Person].[Contact] c ON e.[ContactID] = c.[ContactID] WHERE e.[EmployeeID] = @EmployeeID UNION ALL SELECT e.[EmployeeID], e.[ManagerID], c.[FirstName], c.[LastName], e.[Title], [RecursionLevel] + 1 -- Join recursive member to anchor FROM [HumanResources].[Employee] e INNER JOIN [EMP_cte] ON e.[EmployeeID] = [EMP_cte].[ManagerID] INNER JOIN [Person].[Contact] c ON e.[ContactID] = c.[ContactID] ) -- Join back to Employee to return the manager name SELECT [EMP_cte].[RecursionLevel], [EMP_cte].[EmployeeID], [EMP_cte].[FirstName], [EMP_cte].[LastName], [EMP_cte].[ManagerID], c.[FirstName] AS 'ManagerFirstName', c.[LastName] AS 'ManagerLastName' -- Outer select from the CTE FROM [EMP_cte] INNER JOIN [HumanResources].[Employee] e ON [EMP_cte].[ManagerID] = e.[EmployeeID] INNER JOIN [Person].[Contact] c ON e.[ContactID] = c.[ContactID] ORDER BY [RecursionLevel], [ManagerID], [EmployeeID] OPTION (MAXRECURSION 25) END; GO /****** Object: StoredProcedure [dbo].[uspGetManagerEmployees] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[uspGetManagerEmployees] @ManagerID [int] AS BEGIN SET NOCOUNT ON; -- Use recursive query to list out all Employees required for a particular Manager WITH [EMP_cte]([EmployeeID], [ManagerID], [FirstName], [LastName], [RecursionLevel]) -- CTE name and columns AS ( SELECT e.[EmployeeID], e.[ManagerID], c.[FirstName], c.[LastName], 0 -- Get the initial list of Employees for Manager n FROM [HumanResources].[Employee] e INNER JOIN [Person].[Contact] c ON e.[ContactID] = c.[ContactID] WHERE [ManagerID] = @ManagerID UNION ALL SELECT e.[EmployeeID], e.[ManagerID], c.[FirstName], c.[LastName], [RecursionLevel] + 1 -- Join recursive member to anchor FROM [HumanResources].[Employee] e INNER JOIN [EMP_cte] ON e.[ManagerID] = [EMP_cte].[EmployeeID] INNER JOIN [Person].[Contact] c ON e.[ContactID] = c.[ContactID] ) -- Join back to Employee to return the manager name SELECT [EMP_cte].[RecursionLevel], [EMP_cte].[ManagerID], c.[FirstName] AS 'ManagerFirstName', c.[LastName] AS 'ManagerLastName', [EMP_cte].[EmployeeID], [EMP_cte].[FirstName], [EMP_cte].[LastName] -- Outer select from the CTE FROM [EMP_cte] INNER JOIN [HumanResources].[Employee] e ON [EMP_cte].[ManagerID] = e.[EmployeeID] INNER JOIN [Person].[Contact] c ON e.[ContactID] = c.[ContactID] ORDER BY [RecursionLevel], [ManagerID], [EmployeeID] OPTION (MAXRECURSION 25) END; GO /****** Object: StoredProcedure [dbo].[uspGetWhereUsedProductID] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[uspGetWhereUsedProductID] @StartProductID [int], @CheckDate [datetime] AS BEGIN SET NOCOUNT ON; --Use recursive query to generate a multi-level Bill of Material (i.e. all level 1 components of a level 0 assembly, all level 2 components of a level 1 assembly) WITH [BOM_cte]([ProductAssemblyID], [ComponentID], [ComponentDesc], [PerAssemblyQty], [StandardCost], [ListPrice], [BOMLevel], [RecursionLevel]) -- CTE name and columns AS ( SELECT b.[ProductAssemblyID], b.[ComponentID], p.[Name], b.[PerAssemblyQty], p.[StandardCost], p.[ListPrice], b.[BOMLevel], 0 -- Get the initial list of components for the bike assembly FROM [Production].[BillOfMaterials] b INNER JOIN [Production].[Product] p ON b.[ProductAssemblyID] = p.[ProductID] WHERE b.[ComponentID] = @StartProductID AND @CheckDate >= b.[StartDate] AND @CheckDate <= ISNULL(b.[EndDate], @CheckDate) UNION ALL SELECT b.[ProductAssemblyID], b.[ComponentID], p.[Name], b.[PerAssemblyQty], p.[StandardCost], p.[ListPrice], b.[BOMLevel], [RecursionLevel] + 1 -- Join recursive member to anchor FROM [BOM_cte] cte INNER JOIN [Production].[BillOfMaterials] b ON cte.[ProductAssemblyID] = b.[ComponentID] INNER JOIN [Production].[Product] p ON b.[ProductAssemblyID] = p.[ProductID] WHERE @CheckDate >= b.[StartDate] AND @CheckDate <= ISNULL(b.[EndDate], @CheckDate) ) -- Outer select from the CTE SELECT b.[ProductAssemblyID], b.[ComponentID], b.[ComponentDesc], SUM(b.[PerAssemblyQty]) AS [TotalQuantity] , b.[StandardCost], b.[ListPrice], b.[BOMLevel], b.[RecursionLevel] FROM [BOM_cte] b GROUP BY b.[ComponentID], b.[ComponentDesc], b.[ProductAssemblyID], b.[BOMLevel], b.[RecursionLevel], b.[StandardCost], b.[ListPrice] ORDER BY b.[BOMLevel], b.[ProductAssemblyID], b.[ComponentID] OPTION (MAXRECURSION 25) END; GO /****** Object: StoredProcedure [dbo].[uspLogError] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- uspLogError logs error information in the ErrorLog table about the -- error that caused execution to jump to the CATCH block of a -- TRY...CATCH construct. This should be executed from within the scope -- of a CATCH block otherwise it will return without inserting error -- information. CREATE PROCEDURE [dbo].[uspLogError] @ErrorLogID [int] = 0 OUTPUT -- contains the ErrorLogID of the row inserted AS -- by uspLogError in the ErrorLog table BEGIN SET NOCOUNT ON; -- Output parameter value of 0 indicates that error -- information was not logged SET @ErrorLogID = 0; BEGIN TRY -- Return if there is no error information to log IF ERROR_NUMBER() IS NULL RETURN; -- Return if inside an uncommittable transaction. -- Data insertion/modification is not allowed when -- a transaction is in an uncommittable state. IF XACT_STATE() = -1 BEGIN PRINT 'Cannot log error since the current transaction is in an uncommittable state. ' + 'Rollback the transaction before executing uspLogError in order to successfully log error information.'; RETURN; END INSERT [dbo].[ErrorLog] ( [UserName], [ErrorNumber], [ErrorSeverity], [ErrorState], [ErrorProcedure], [ErrorLine], [ErrorMessage] ) VALUES ( CONVERT(sysname, CURRENT_USER), ERROR_NUMBER(), ERROR_SEVERITY(), ERROR_STATE(), ERROR_PROCEDURE(), ERROR_LINE(), ERROR_MESSAGE() ); -- Pass back the ErrorLogID of the row inserted SET @ErrorLogID = @@IDENTITY; END TRY BEGIN CATCH PRINT 'An error occurred in stored procedure uspLogError: '; EXECUTE [dbo].[uspPrintError]; RETURN -1; END CATCH END; GO /****** Object: StoredProcedure [dbo].[uspPrintError] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- uspPrintError prints error information about the error that caused -- execution to jump to the CATCH block of a TRY...CATCH construct. -- Should be executed from within the scope of a CATCH block otherwise -- it will return without printing any error information. CREATE PROCEDURE [dbo].[uspPrintError] AS BEGIN SET NOCOUNT ON; -- Print error information. PRINT 'Error ' + CONVERT(varchar(50), ERROR_NUMBER()) + ', Severity ' + CONVERT(varchar(5), ERROR_SEVERITY()) + ', State ' + CONVERT(varchar(5), ERROR_STATE()) + ', Procedure ' + ISNULL(ERROR_PROCEDURE(), '-') + ', Line ' + CONVERT(varchar(5), ERROR_LINE()); PRINT ERROR_MESSAGE(); END; GO /****** Object: StoredProcedure [HumanResources].[uspUpdateEmployeeHireInfo] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [HumanResources].[uspUpdateEmployeeHireInfo] @EmployeeID [int], @Title [nvarchar](50), @HireDate [datetime], @RateChangeDate [datetime], @Rate [money], @PayFrequency [tinyint], @CurrentFlag [dbo].[Flag] WITH EXECUTE AS CALLER AS BEGIN SET NOCOUNT ON; BEGIN TRY BEGIN TRANSACTION; UPDATE [HumanResources].[Employee] SET [Title] = @Title ,[HireDate] = @HireDate ,[CurrentFlag] = @CurrentFlag WHERE [EmployeeID] = @EmployeeID; INSERT INTO [HumanResources].[EmployeePayHistory] ([EmployeeID] ,[RateChangeDate] ,[Rate] ,[PayFrequency]) VALUES (@EmployeeID, @RateChangeDate, @Rate, @PayFrequency); COMMIT TRANSACTION; END TRY BEGIN CATCH -- Rollback any active or uncommittable transactions before -- inserting information in the ErrorLog IF @@TRANCOUNT > 0 BEGIN ROLLBACK TRANSACTION; END EXECUTE [dbo].[uspLogError]; END CATCH; END; GO /****** Object: StoredProcedure [HumanResources].[uspUpdateEmployeeLogin] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [HumanResources].[uspUpdateEmployeeLogin] @EmployeeID [int], @ManagerID [int], @LoginID [nvarchar](256), @Title [nvarchar](50), @HireDate [datetime], @CurrentFlag [dbo].[Flag] WITH EXECUTE AS CALLER AS BEGIN SET NOCOUNT ON; BEGIN TRY UPDATE [HumanResources].[Employee] SET [ManagerID] = @ManagerID ,[LoginID] = @LoginID ,[Title] = @Title ,[HireDate] = @HireDate ,[CurrentFlag] = @CurrentFlag WHERE [EmployeeID] = @EmployeeID; END TRY BEGIN CATCH EXECUTE [dbo].[uspLogError]; END CATCH; END; GO /****** Object: StoredProcedure [HumanResources].[uspUpdateEmployeePersonalInfo] Script Date: 9/6/2018 12:11:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [HumanResources].[uspUpdateEmployeePersonalInfo] @EmployeeID [int], @NationalIDNumber [nvarchar](15), @BirthDate [datetime], @MaritalStatus [nchar](1), @Gender [nchar](1) WITH EXECUTE AS CALLER AS BEGIN SET NOCOUNT ON; BEGIN TRY UPDATE [HumanResources].[Employee] SET [NationalIDNumber] = @NationalIDNumber ,[BirthDate] = @BirthDate ,[MaritalStatus] = @MaritalStatus ,[Gender] = @Gender WHERE [EmployeeID] = @EmployeeID; END TRY BEGIN CATCH EXECUTE [dbo].[uspLogError]; END CATCH; END; GO