IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[foo_DBExportGroups]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) DROP FUNCTION [dbo].[foo_DBExportGroups] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[foo_DBExportGroups]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) BEGIN execute dbo.sp_executesql @statement = N'CREATE FUNCTION [dbo].[foo_DBExportGroups] ( ) RETURNS xml AS BEGIN return isnull((select [SerialNumber] ,[TestObjectId] ,[LastModifiedBy] ,[LastModified] ,[Template] ,[TemplateId] ,[LocalOnly] ,[ParentObject] ,[SysBuilt] ,[Embedded] ,[OriginalTemplate] ,[OriginalSerialNumber] ,[dbo].[foo_DBExportGroupHardware]([TestObjectId]) ,[dbo].[foo_DBExportGroupSensors]([TestObjectId]) ,[dbo].[foo_DBExportGroupChannels]([TestObjectId]) from(select tobj.TestObjectName as SerialNumber ,tobj.TestObjectId as TestObjectId ,tobj.[LastModifiedBy] ,tobj.[LastModified] ,tot.TemplateName as Template ,tot.TemplateId as TemplateId ,tobj.[LocalOnly] ,tobj.[ParentObject] ,tobj.[SysBuilt] ,tobj.[Embedded] ,tobj.[OrigTemplate] as OriginalTemplate ,tobj.[OrigSerialNumber] as OriginalSerialNumber from [dbo].[TestObjects] tobj inner join [dbo].[TestObjectTemplates] tot on tot.TemplateId = tobj.TemplateId) TestObject for xml auto, elements, BINARY BASE64, root (''Groups'')), '''') END ' END GO