orchestrator
2022.10
false
重要 :
请注意,此内容已使用机器翻译进行了部分本地化。 新发布内容的本地化可能需要 1-2 周的时间才能完成。
UiPath logo, featuring letters U and I in white

Orchestrator 用户指南

上次更新日期 2025年4月22日

导出使用情况数据

本节提供有关如何导出高级使用情况摘要的说明,包括以下相关指标:

  • 机器人每月执行持续时间,按机器人类型划分。
  • 机器人并发,表示同时执行作业的机器人的最大数量。
  • 作业运行的指标。
  • 作业失败率。
  • 流程运行的指标。
  • 队列项目的指标。
  • 用户指标。
  • 环境信息。
数据导出的结果是一个output.xml文件。
注意:您可以将导出的数据文件上传到UiPath™ Customer Portal ,以帮助我们更好地了解使用情况,并为您提供更好的支持。
要使用 PowerShell 通过 SQL Server Management Studio 或sqlcmd实用程序导出使用情况数据,请按照以下各节中的说明进行操作。

通过 SQL Server Management Studio 导出使用情况数据

若要通过 SQL Server Management Studio 导出使用情况数据,请执行以下操作:
  1. 将以下 SQL 脚本复制到编辑器中:
    -- uncomment the below line if running from sqlcmd, :XML is directive for sqlcmd
    -- :XML ON
    DECLARE @monthsBack INT = 6
    IF OBJECT_ID('tempdb..#TenantsAndAccounts') IS NOT NULL DROP TABLE #TenantsAndAccounts;
    DECLARE @lastMigrationId NVARCHAR(50) = ''
    IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND  TABLE_NAME = '__MigrationHistory'))
    BEGIN
    SET @lastMigrationId = (SELECT
    		TOP 1 [MigrationId]
    	FROM [dbo].[__MigrationHistory]
    	ORDER BY MigrationId DESC)
    END
    IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND  TABLE_NAME = '__EFMigrationsHistory'))
    BEGIN
    	SET @lastMigrationId = (SELECT
    		TOP 1 [MigrationId]
    	FROM [dbo].__EFMigrationsHistory
    	ORDER BY MigrationId DESC)
    END
    SET NOCOUNT ON
    DECLARE @startTime DATETIME = DATEADD(month, DATEDIFF(month, 0, DATEADD(MONTH, -@monthsBack, GETUTCDATE())), 0)
    SELECT [Id], [Key], [AccountId] INTO #TenantsAndAccounts FROM [Tenants] WITH(NOLOCK)
    ;WITH TransitionStatesCTE AS (
      SELECT je.[TenantId],
          je.[State],
          je.[CreationTime],
    	  j.[RuntimeType],
          LEAD(je.[CreationTime]) OVER (PARTITION BY je.[JobId] ORDER BY je.[CreationTime]) as NextCreationTime,
          LEAD(je.[State]) OVER (PARTITION BY je.[JobId] ORDER BY je.[CreationTime]) as NextAction
      FROM [dbo].[JobEvents] je WITH(NOLOCK) 
      JOIN [dbo].[Jobs] j WITH(NOLOCK) ON j.[Id] = je.[JobId]
      WHERE je.[CreationTime] >= @startTime
    ),
    MaxConcurrency AS (
    	SELECT 
    		je.[TenantId],
    		je.[CreationTime],
    		j.[RuntimeType],
    		je.State,
    		SUM(CASE WHEN je.[State] = 1 THEN 1 WHEN je.[State] IN (4, 5, 6, 7) AND je.[PreviousState] IN (1, 2, 3) THEN -1 ELSE 0 END) OVER ( PARTITION BY j.[RuntimeType], je.[TenantId] ORDER BY je.[CreationTime] ASC) AS RunningTotal
    	FROM JobEvents je WITH(NOLOCK)
    	JOIN [dbo].[Jobs] j WITH(NOLOCK) ON j.[Id] = je.[JobId]
    	WHERE j.[CreationTime] >= @startTime),
    CombinedResults AS (
        SELECT [Name], [Value]
        FROM [dbo].[Settings] WITH(NOLOCK)
        WHERE [Name] = 'Legacy.InstallationId' OR [Name] = 'InstallationId'
        UNION
        SELECT 'LastAppliedMigrationId' AS [Name], @lastMigrationId AS [Value]
    	UNION
    	SELECT 'ExportDate' AS [Name], CONVERT(NVARCHAR(50), GETUTCDATE(), 126) AS [Value]
    )
    SELECT (
    (SELECT
    	OrganizationKey,
    	TenantKey,
        [Date],
    	(
            SELECT RuntimeType
            FOR XML PATH(''), TYPE, ELEMENTS
        ) AS Custom,
    	RuntimeType AS DeDup,
        Name,
        Value
    	FROM (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		tcte.RuntimeType,
    		EOMONTH(tcte.[CreationTime]) AS [Date],
    		SUM(DATEDIFF(SECOND, tcte.[CreationTime], tcte.[NextCreationTime])) AS JobsExecutionDurationSeconds
    	FROM TransitionStatesCTE tcte
    	JOIN #TenantsAndAccounts t ON t.[Id] = tcte.[TenantId]
    	WHERE tcte.[State] IN (1, 2, 3) AND tcte.[NextAction] IN (2, 3, 4, 5, 6, 7)
    	GROUP BY EOMONTH(tcte.[CreationTime]), t.[Key], t.[AccountId], tcte.[RuntimeType], tcte.[TenantId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (JobsExecutionDurationSeconds)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE)),
    (SELECT
    	OrganizationKey,
    	TenantKey,
        [Date],
    	(
            SELECT RuntimeType
            FOR XML PATH(''), TYPE, ELEMENTS
        ) AS Custom,
    	RuntimeType AS DeDup,
        Name,
        Value
    	FROM (
    		SELECT
      			t.[Key] AS TenantKey,
    			t.[AccountId] AS OrganizationKey,
    			mc.[RuntimeType],
    			EOMONTH(mc.[CreationTime]) AS [Date],
    			MAX(mc.[RunningTotal]) AS JobsMaxConcurrency
    		FROM [MaxConcurrency] mc
    		JOIN #TenantsAndAccounts t ON t.[Id] = mc.[TenantId]
    		GROUP BY EOMONTH(mc.[CreationTime]), t.[Key], t.[AccountId], mc.[RuntimeType]) AS SummaryData
    UNPIVOT (Value FOR Name IN (JobsMaxConcurrency)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE)
    ,
    (SELECT 
        OrganizationKey,
    	TenantKey,
        [Date],
        Name,
        Value
    	FROM (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		EOMONTH([CreationTime]) AS [Date],
    		COUNT(1) AS 'ProcessesCreatedCount'
    	FROM [dbo].[Releases] WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    	WHERE [IsDeleted] = 0
    	GROUP BY EOMONTH([CreationTime]), t.[Key], t.[AccountId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (ProcessesCreatedCount)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE),
    
    (SELECT 
        OrganizationKey,
    	TenantKey,
        [Date],
    	(
            SELECT RuntimeType
            FOR XML PATH(''), TYPE, ELEMENTS
        ) AS Custom,
    	RuntimeType AS DeDup,
        Name,
        Value
    	FROM (
    	SELECT 
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		EOMONTH([CreationTime]) AS [Date],
    		[RuntimeType],
    		CAST(COUNT(1) AS NVARCHAR(50)) AS 'JobsCreated',
    		CAST(SUM(CASE WHEN [State] = 5 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsStateSuccessfulCount',
    		CAST(SUM(CASE WHEN [State] = 4 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsStateFaultedCount',
    		CAST(SUM(CASE WHEN [ResumeVersion] <> NULL THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsStateWentThroughSuspendedCount',
    		CAST(SUM(CASE WHEN [Source] = 0 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsSourceManualCount',
    		CAST(SUM(CASE WHEN [Source] = 1 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsSourceScheduleCount',
    		CAST(SUM(CASE WHEN [Source] = 2 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsSourceQueueCount',
    		CAST(SUM(CASE WHEN [Source] = 12 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsSourceAssistantCount',
    		CAST(COUNT(DISTINCT(CASE WHEN [State] IN (4, 5) THEN RobotId END)) AS NVARCHAR(50)) AS 'JobsExecutionsDistinctRobotsCount',
    		CAST(MIN(CASE WHEN [State] IN (4,5) THEN [CreationTime] ELSE GETUTCDATE() END) AS NVARCHAR(50)) AS 'JobsCreatedMinimumCreationTime',
    		CAST(MAX(CASE WHEN [State] IN (4,5) THEN [CreationTime] ELSE GETUTCDATE() END) AS NVARCHAR(50)) AS 'JobsCreatedMaximumCreationTime'
    	FROM [dbo].[Jobs] WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    	WHERE [CreationTime] >= @startTime
    	GROUP BY EOMONTH([CreationTime]), t.[Key], t.[AccountId], RuntimeType) AS SummaryData
    UNPIVOT (Value FOR Name IN (JobsCreated, JobsStateSuccessfulCount, JobsStateFaultedCount, JobsStateWentThroughSuspendedCount, JobsSourceManualCount, JobsSourceScheduleCount, JobsSourceQueueCount, JobsSourceAssistantCount, JobsExecutionsDistinctRobotsCount, JobsCreatedMinimumCreationTime, JobsCreatedMaximumCreationTime)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE),
    (SELECT 
        OrganizationKey,
    	TenantKey,
        [Date],
        Name,
        Value
    FROM 
        (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		EOMONTH([CreationTime]) AS [Date],
    		COUNT(1) AS 'QueueItemsCreated',
    		SUM(CASE WHEN [Status] = 0 THEN 1 ELSE 0 END) AS 'QueueItemsStateNewCount',
    		SUM(CASE WHEN [Status] = 2 THEN 1 ELSE 0 END) AS 'QueueItemsStateFailedCount',
    		SUM(CASE WHEN [Status] = 3 THEN 1 ELSE 0 END) AS 'QueueItemsStateSuccessfulCount',
    		SUM(CASE WHEN [Status] = 4 THEN 1 ELSE 0 END) AS 'QueueItemsStateAbandonedCount',
    		SUM(CASE WHEN [Status] = 5 THEN 1 ELSE 0 END) AS 'QueueItemsStateRetriedCount',
    		SUM(CASE WHEN [Status] = 6 THEN 1 ELSE 0 END) AS 'QueueItemsStateDeletedCount'
    	FROM [dbo].[QueueItems] WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    	WHERE [CreationTime] >= @startTime
    	GROUP BY EOMONTH([CreationTime]), t.[Key], t.[AccountId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (QueueItemsCreated, QueueItemsStateNewCount, QueueItemsStateFailedCount, QueueItemsStateSuccessfulCount, QueueItemsStateAbandonedCount, QueueItemsStateRetriedCount, QueueItemsStateDeletedCount)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE),
    (SELECT 
        OrganizationKey,
    	TenantKey,
        Name,
        Value
    FROM 
        (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		COUNT(1) AS 'UsersTotalCount',
    		SUM(CASE WHEN AllowedSessions & 2 = 2  THEN 1 ELSE 0 END) AS 'UsersAllowedSessionAttendedCount',
    		SUM(CASE WHEN AllowedSessions & 4 = 4  THEN 1 ELSE 0 END) AS 'UsersAllowedSessionUnattendedCount',
    		SUM(CASE WHEN LicenseType = 1  THEN 1 ELSE 0 END) AS 'UsersRobotsAttendedCount',
    		SUM(CASE WHEN LicenseType = 3  THEN 1 ELSE 0 END) AS 'UsersRobotsRpaDeveloperCount',
    		SUM(CASE WHEN LicenseType = 4  THEN 1 ELSE 0 END) AS 'UsersRobotsCitizenDeveloperCount',
    		SUM(CASE WHEN LicenseType = 6  THEN 1 ELSE 0 END) AS 'UsersRobotsRpaDeveloperProCount',
    		SUM(CASE WHEN [Type] = 0  THEN 1 ELSE 0 END) AS 'UsersTypeUserCount',
    		SUM(CASE WHEN [Type] = 1  THEN 1 ELSE 0 END) AS 'UsersTypeRobotCount',
    		SUM(CASE WHEN [Type] = 2  THEN 1 ELSE 0 END) AS 'UsersTypeDirectoryUserCount',
    		SUM(CASE WHEN [Type] = 3  THEN 1 ELSE 0 END) AS 'UsersTypeDirectoryGroupCount',
    		SUM(CASE WHEN [Type] = 4  THEN 1 ELSE 0 END) AS 'UsersTypeDirectoryRobotCount',
    		SUM(CASE WHEN [Type] = 5  THEN 1 ELSE 0 END) AS 'UsersTypeDirectoryExternalApplicationCount'
    	FROM [dbo].[Users] WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    	WHERE [IsDeleted] = 0
    	GROUP BY t.[Key], t.[AccountId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (UsersTotalCount, UsersAllowedSessionAttendedCount, UsersAllowedSessionUnattendedCount, UsersRobotsAttendedCount, UsersRobotsRpaDeveloperCount, UsersRobotsCitizenDeveloperCount, UsersRobotsRpaDeveloperProCount, UsersTypeUserCount, UsersTypeRobotCount, UsersTypeDirectoryUserCount, UsersTypeDirectoryGroupCount, UsersTypeDirectoryRobotCount, UsersTypeDirectoryExternalApplicationCount)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE),
    (SELECT * 
    FROM CombinedResults
    FOR XML PATH('Static'), TYPE),
    (SELECT 
        OrganizationKey,
    	TenantKey,
    	(
    		SELECT [DeletionTime], [CreationTime], [LicenseId], [LicenseHostLicenseId]
    		FOR XML PATH(''), TYPE, ELEMENTS
        ) AS Custom,
    	LicenseId AS DeDup,
        Name,
        Value
    FROM (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		l.[Id] AS 'LicenseId',
    		l.[EncryptedLicenseInfo] AS 'LicenseInfo',
    		l.[DeletionTime],
    		l.[CreationTime],
    		l.[HostLicenseId] AS 'LicenseHostLicenseId'
    	FROM [dbo].[Licenses] l WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = l.[TenantId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (LicenseInfo)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE),
    (SELECT 
        OrganizationKey,
    	TenantKey,
    	[Date],
    	(
    		SELECT [LicenseType]
    		FOR XML PATH(''), TYPE, ELEMENTS
        ) AS Custom,
        Name,
        Value
    FROM (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		cls.[Type] AS LicenseType,
    		SUM(cls.Used) AS UsedLicenses,
    		EOMONTH(cls.[Timestamp]) AS [Date]
    	FROM [dbo].[ConsumptionLicenseStats] cls WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = cls.[TenantId]
    	WHERE cls.[Timestamp] >= @startTime
    	GROUP BY EOMONTH(cls.[Timestamp]), [Type], t.[Key], t.[AccountId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (UsedLicenses)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE)
    FOR XML PATH('orchestrator')
    IF OBJECT_ID('tempdb..#TenantsAndAccounts') IS NOT NULL DROP TABLE #TenantsAndAccounts-- uncomment the below line if running from sqlcmd, :XML is directive for sqlcmd
    -- :XML ON
    DECLARE @monthsBack INT = 6
    IF OBJECT_ID('tempdb..#TenantsAndAccounts') IS NOT NULL DROP TABLE #TenantsAndAccounts;
    DECLARE @lastMigrationId NVARCHAR(50) = ''
    IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND  TABLE_NAME = '__MigrationHistory'))
    BEGIN
    SET @lastMigrationId = (SELECT
    		TOP 1 [MigrationId]
    	FROM [dbo].[__MigrationHistory]
    	ORDER BY MigrationId DESC)
    END
    IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND  TABLE_NAME = '__EFMigrationsHistory'))
    BEGIN
    	SET @lastMigrationId = (SELECT
    		TOP 1 [MigrationId]
    	FROM [dbo].__EFMigrationsHistory
    	ORDER BY MigrationId DESC)
    END
    SET NOCOUNT ON
    DECLARE @startTime DATETIME = DATEADD(month, DATEDIFF(month, 0, DATEADD(MONTH, -@monthsBack, GETUTCDATE())), 0)
    SELECT [Id], [Key], [AccountId] INTO #TenantsAndAccounts FROM [Tenants] WITH(NOLOCK)
    ;WITH TransitionStatesCTE AS (
      SELECT je.[TenantId],
          je.[State],
          je.[CreationTime],
    	  j.[RuntimeType],
          LEAD(je.[CreationTime]) OVER (PARTITION BY je.[JobId] ORDER BY je.[CreationTime]) as NextCreationTime,
          LEAD(je.[State]) OVER (PARTITION BY je.[JobId] ORDER BY je.[CreationTime]) as NextAction
      FROM [dbo].[JobEvents] je WITH(NOLOCK) 
      JOIN [dbo].[Jobs] j WITH(NOLOCK) ON j.[Id] = je.[JobId]
      WHERE je.[CreationTime] >= @startTime
    ),
    MaxConcurrency AS (
    	SELECT 
    		je.[TenantId],
    		je.[CreationTime],
    		j.[RuntimeType],
    		je.State,
    		SUM(CASE WHEN je.[State] = 1 THEN 1 WHEN je.[State] IN (4, 5, 6, 7) AND je.[PreviousState] IN (1, 2, 3) THEN -1 ELSE 0 END) OVER ( PARTITION BY j.[RuntimeType], je.[TenantId] ORDER BY je.[CreationTime] ASC) AS RunningTotal
    	FROM JobEvents je WITH(NOLOCK)
    	JOIN [dbo].[Jobs] j WITH(NOLOCK) ON j.[Id] = je.[JobId]
    	WHERE j.[CreationTime] >= @startTime),
    CombinedResults AS (
        SELECT [Name], [Value]
        FROM [dbo].[Settings] WITH(NOLOCK)
        WHERE [Name] = 'Legacy.InstallationId' OR [Name] = 'InstallationId'
        UNION
        SELECT 'LastAppliedMigrationId' AS [Name], @lastMigrationId AS [Value]
    	UNION
    	SELECT 'ExportDate' AS [Name], CONVERT(NVARCHAR(50), GETUTCDATE(), 126) AS [Value]
    )
    SELECT (
    (SELECT
    	OrganizationKey,
    	TenantKey,
        [Date],
    	(
            SELECT RuntimeType
            FOR XML PATH(''), TYPE, ELEMENTS
        ) AS Custom,
    	RuntimeType AS DeDup,
        Name,
        Value
    	FROM (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		tcte.RuntimeType,
    		EOMONTH(tcte.[CreationTime]) AS [Date],
    		SUM(DATEDIFF(SECOND, tcte.[CreationTime], tcte.[NextCreationTime])) AS JobsExecutionDurationSeconds
    	FROM TransitionStatesCTE tcte
    	JOIN #TenantsAndAccounts t ON t.[Id] = tcte.[TenantId]
    	WHERE tcte.[State] IN (1, 2, 3) AND tcte.[NextAction] IN (2, 3, 4, 5, 6, 7)
    	GROUP BY EOMONTH(tcte.[CreationTime]), t.[Key], t.[AccountId], tcte.[RuntimeType], tcte.[TenantId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (JobsExecutionDurationSeconds)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE)),
    (SELECT
    	OrganizationKey,
    	TenantKey,
        [Date],
    	(
            SELECT RuntimeType
            FOR XML PATH(''), TYPE, ELEMENTS
        ) AS Custom,
    	RuntimeType AS DeDup,
        Name,
        Value
    	FROM (
    		SELECT
      			t.[Key] AS TenantKey,
    			t.[AccountId] AS OrganizationKey,
    			mc.[RuntimeType],
    			EOMONTH(mc.[CreationTime]) AS [Date],
    			MAX(mc.[RunningTotal]) AS JobsMaxConcurrency
    		FROM [MaxConcurrency] mc
    		JOIN #TenantsAndAccounts t ON t.[Id] = mc.[TenantId]
    		GROUP BY EOMONTH(mc.[CreationTime]), t.[Key], t.[AccountId], mc.[RuntimeType]) AS SummaryData
    UNPIVOT (Value FOR Name IN (JobsMaxConcurrency)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE)
    ,
    (SELECT 
        OrganizationKey,
    	TenantKey,
        [Date],
        Name,
        Value
    	FROM (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		EOMONTH([CreationTime]) AS [Date],
    		COUNT(1) AS 'ProcessesCreatedCount'
    	FROM [dbo].[Releases] WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    	WHERE [IsDeleted] = 0
    	GROUP BY EOMONTH([CreationTime]), t.[Key], t.[AccountId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (ProcessesCreatedCount)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE),
    
    (SELECT 
        OrganizationKey,
    	TenantKey,
        [Date],
    	(
            SELECT RuntimeType
            FOR XML PATH(''), TYPE, ELEMENTS
        ) AS Custom,
    	RuntimeType AS DeDup,
        Name,
        Value
    	FROM (
    	SELECT 
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		EOMONTH([CreationTime]) AS [Date],
    		[RuntimeType],
    		CAST(COUNT(1) AS NVARCHAR(50)) AS 'JobsCreated',
    		CAST(SUM(CASE WHEN [State] = 5 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsStateSuccessfulCount',
    		CAST(SUM(CASE WHEN [State] = 4 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsStateFaultedCount',
    		CAST(SUM(CASE WHEN [ResumeVersion] <> NULL THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsStateWentThroughSuspendedCount',
    		CAST(SUM(CASE WHEN [Source] = 0 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsSourceManualCount',
    		CAST(SUM(CASE WHEN [Source] = 1 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsSourceScheduleCount',
    		CAST(SUM(CASE WHEN [Source] = 2 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsSourceQueueCount',
    		CAST(SUM(CASE WHEN [Source] = 12 THEN 1 ELSE 0 END) AS NVARCHAR(50)) AS 'JobsSourceAssistantCount',
    		CAST(COUNT(DISTINCT(CASE WHEN [State] IN (4, 5) THEN RobotId END)) AS NVARCHAR(50)) AS 'JobsExecutionsDistinctRobotsCount',
    		CAST(MIN(CASE WHEN [State] IN (4,5) THEN [CreationTime] ELSE GETUTCDATE() END) AS NVARCHAR(50)) AS 'JobsCreatedMinimumCreationTime',
    		CAST(MAX(CASE WHEN [State] IN (4,5) THEN [CreationTime] ELSE GETUTCDATE() END) AS NVARCHAR(50)) AS 'JobsCreatedMaximumCreationTime'
    	FROM [dbo].[Jobs] WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    	WHERE [CreationTime] >= @startTime
    	GROUP BY EOMONTH([CreationTime]), t.[Key], t.[AccountId], RuntimeType) AS SummaryData
    UNPIVOT (Value FOR Name IN (JobsCreated, JobsStateSuccessfulCount, JobsStateFaultedCount, JobsStateWentThroughSuspendedCount, JobsSourceManualCount, JobsSourceScheduleCount, JobsSourceQueueCount, JobsSourceAssistantCount, JobsExecutionsDistinctRobotsCount, JobsCreatedMinimumCreationTime, JobsCreatedMaximumCreationTime)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE),
    (SELECT 
        OrganizationKey,
    	TenantKey,
        [Date],
        Name,
        Value
    FROM 
        (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		EOMONTH([CreationTime]) AS [Date],
    		COUNT(1) AS 'QueueItemsCreated',
    		SUM(CASE WHEN [Status] = 0 THEN 1 ELSE 0 END) AS 'QueueItemsStateNewCount',
    		SUM(CASE WHEN [Status] = 2 THEN 1 ELSE 0 END) AS 'QueueItemsStateFailedCount',
    		SUM(CASE WHEN [Status] = 3 THEN 1 ELSE 0 END) AS 'QueueItemsStateSuccessfulCount',
    		SUM(CASE WHEN [Status] = 4 THEN 1 ELSE 0 END) AS 'QueueItemsStateAbandonedCount',
    		SUM(CASE WHEN [Status] = 5 THEN 1 ELSE 0 END) AS 'QueueItemsStateRetriedCount',
    		SUM(CASE WHEN [Status] = 6 THEN 1 ELSE 0 END) AS 'QueueItemsStateDeletedCount'
    	FROM [dbo].[QueueItems] WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    	WHERE [CreationTime] >= @startTime
    	GROUP BY EOMONTH([CreationTime]), t.[Key], t.[AccountId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (QueueItemsCreated, QueueItemsStateNewCount, QueueItemsStateFailedCount, QueueItemsStateSuccessfulCount, QueueItemsStateAbandonedCount, QueueItemsStateRetriedCount, QueueItemsStateDeletedCount)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE),
    (SELECT 
        OrganizationKey,
    	TenantKey,
        Name,
        Value
    FROM 
        (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		COUNT(1) AS 'UsersTotalCount',
    		SUM(CASE WHEN AllowedSessions & 2 = 2  THEN 1 ELSE 0 END) AS 'UsersAllowedSessionAttendedCount',
    		SUM(CASE WHEN AllowedSessions & 4 = 4  THEN 1 ELSE 0 END) AS 'UsersAllowedSessionUnattendedCount',
    		SUM(CASE WHEN LicenseType = 1  THEN 1 ELSE 0 END) AS 'UsersRobotsAttendedCount',
    		SUM(CASE WHEN LicenseType = 3  THEN 1 ELSE 0 END) AS 'UsersRobotsRpaDeveloperCount',
    		SUM(CASE WHEN LicenseType = 4  THEN 1 ELSE 0 END) AS 'UsersRobotsCitizenDeveloperCount',
    		SUM(CASE WHEN LicenseType = 6  THEN 1 ELSE 0 END) AS 'UsersRobotsRpaDeveloperProCount',
    		SUM(CASE WHEN [Type] = 0  THEN 1 ELSE 0 END) AS 'UsersTypeUserCount',
    		SUM(CASE WHEN [Type] = 1  THEN 1 ELSE 0 END) AS 'UsersTypeRobotCount',
    		SUM(CASE WHEN [Type] = 2  THEN 1 ELSE 0 END) AS 'UsersTypeDirectoryUserCount',
    		SUM(CASE WHEN [Type] = 3  THEN 1 ELSE 0 END) AS 'UsersTypeDirectoryGroupCount',
    		SUM(CASE WHEN [Type] = 4  THEN 1 ELSE 0 END) AS 'UsersTypeDirectoryRobotCount',
    		SUM(CASE WHEN [Type] = 5  THEN 1 ELSE 0 END) AS 'UsersTypeDirectoryExternalApplicationCount'
    	FROM [dbo].[Users] WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    	WHERE [IsDeleted] = 0
    	GROUP BY t.[Key], t.[AccountId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (UsersTotalCount, UsersAllowedSessionAttendedCount, UsersAllowedSessionUnattendedCount, UsersRobotsAttendedCount, UsersRobotsRpaDeveloperCount, UsersRobotsCitizenDeveloperCount, UsersRobotsRpaDeveloperProCount, UsersTypeUserCount, UsersTypeRobotCount, UsersTypeDirectoryUserCount, UsersTypeDirectoryGroupCount, UsersTypeDirectoryRobotCount, UsersTypeDirectoryExternalApplicationCount)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE),
    (SELECT * 
    FROM CombinedResults
    FOR XML PATH('Static'), TYPE),
    (SELECT 
        OrganizationKey,
    	TenantKey,
    	(
    		SELECT [DeletionTime], [CreationTime], [LicenseId], [LicenseHostLicenseId]
    		FOR XML PATH(''), TYPE, ELEMENTS
        ) AS Custom,
    	LicenseId AS DeDup,
        Name,
        Value
    FROM (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		l.[Id] AS 'LicenseId',
    		l.[EncryptedLicenseInfo] AS 'LicenseInfo',
    		l.[DeletionTime],
    		l.[CreationTime],
    		l.[HostLicenseId] AS 'LicenseHostLicenseId'
    	FROM [dbo].[Licenses] l WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = l.[TenantId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (LicenseInfo)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE),
    (SELECT 
        OrganizationKey,
    	TenantKey,
    	[Date],
    	(
    		SELECT [LicenseType]
    		FOR XML PATH(''), TYPE, ELEMENTS
        ) AS Custom,
        Name,
        Value
    FROM (
    	SELECT
    		t.[Key] AS TenantKey,
    		t.[AccountId] AS OrganizationKey,
    		cls.[Type] AS LicenseType,
    		SUM(cls.Used) AS UsedLicenses,
    		EOMONTH(cls.[Timestamp]) AS [Date]
    	FROM [dbo].[ConsumptionLicenseStats] cls WITH(NOLOCK)
    	JOIN #TenantsAndAccounts t ON t.[Id] = cls.[TenantId]
    	WHERE cls.[Timestamp] >= @startTime
    	GROUP BY EOMONTH(cls.[Timestamp]), [Type], t.[Key], t.[AccountId]) AS SummaryData
    UNPIVOT (Value FOR Name IN (UsedLicenses)) AS UnpivotedData
    FOR XML PATH('Tenant'), TYPE)
    FOR XML PATH('orchestrator')
    IF OBJECT_ID('tempdb..#TenantsAndAccounts') IS NOT NULL DROP TABLE #TenantsAndAccounts
  2. 执行 SQL 脚本。
  3. 从上下文菜单中选择“结果至” ,然后选择“结果至网格” 。此选项将生成 XML 文件。
    注意:选择“结果到文本”选项或“结果到文件”选项会截断导出的数据。
  4. 在 SQL Server Management Studio 中打开 XML 文件,然后保存文件。
  5. (可选)将 XML 文件上传到 UiPath™ Customer Portal。

通过 sqlcmd 实用程序导出使用情况数据

要通过sqlcmd实用程序导出使用情况数据,请执行以下操作:
  1. 将以下代码复制到文本编辑器中,并将其保存为名为ExportScriptOrchMSI.sql的 SQL 文件:
    DECLARE @monthsBack INT = 6
    
    SET NOCOUNT ON
    DECLARE @startTime DATETIME = DATEADD(month, DATEDIFF(month, 0, DATEADD(MONTH, -@monthsBack, GETUTCDATE())), 0)
    SELECT [Id], [Key], [AccountId] INTO #TenantsAndAccounts FROM [Tenants] WITH(NOLOCK)
    ;WITH TransitionStatesCTE AS (
      SELECT je.[TenantId],
          je.[State],
          je.[CreationTime],
    	  j.[RuntimeType],
          LEAD(je.[CreationTime]) OVER (PARTITION BY je.[JobId] ORDER BY je.[CreationTime]) as NextCreationTime,
          LEAD(je.[State]) OVER (PARTITION BY je.[JobId] ORDER BY je.[CreationTime]) as NextAction
      FROM [dbo].[JobEvents] je WITH(NOLOCK) 
      JOIN [dbo].[Jobs] j WITH(NOLOCK) ON j.[Id] = je.[JobId]
      WHERE je.[CreationTime] > @startTime
    )
    SELECT
    	tcte.[TenantId],
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	tcte.RuntimeType,
    	FORMAT(tcte.[CreationTime], 'MM.yyyy') AS [Date],
    	SUM(DATEDIFF(SECOND, tcte.[CreationTime], tcte.[NextCreationTime])) as ExecutionDurationSeconds,
    	'JobExecutionTime' AS DatasetName
    FROM TransitionStatesCTE tcte
    JOIN #TenantsAndAccounts t ON t.[Id] = tcte.[TenantId]
    WHERE tcte.[State] IN (1, 2, 3) AND tcte.[NextAction] IN (2, 3, 4, 5, 6, 7)
    GROUP BY FORMAT(tcte.[CreationTime], 'MM.yyyy'), t.[Key], t.[AccountId], tcte.[RuntimeType], tcte.[TenantId]
    
    SELECT
    	[TenantId],
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	FORMAT([CreationTime], 'MM.yyyy') AS [Date],
    	COUNT(1) AS 'Processes.Created.Count',
    	'NumberOfProcesses' AS DatasetName
    FROM [dbo].[Releases] WITH(NOLOCK)
    JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    WHERE [IsDeleted] = 0
    GROUP BY TenantId, FORMAT([CreationTime], 'MM.yyyy'), t.[Key], t.[AccountId]
    
    SELECT 
    	TenantId,
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	FORMAT([CreationTime], 'MM.yyyy') AS [Date],
    	[RuntimeType],
    	COUNT(1) AS 'Jobs.Created',
    	SUM(CASE WHEN [State] = 5 THEN 1 ELSE 0 END) AS 'Jobs.State.Successful.Count',
    	SUM(CASE WHEN [State] = 4 THEN 1 ELSE 0 END) AS 'Jobs.State.Faulted.Count',
    	SUM(CASE WHEN [ResumeVersion] <> NULL THEN 1 ELSE 0 END) AS 'Jobs.State.WentThroughSuspended.Count',
    	SUM(CASE WHEN [Source] = 0 THEN 1 ELSE 0 END) AS 'Jobs.Source.Manual.Count',
    	SUM(CASE WHEN [Source] = 1 THEN 1 ELSE 0 END) AS 'Jobs.Source.Schedule.Count',
    	SUM(CASE WHEN [Source] = 2 THEN 1 ELSE 0 END) AS 'Jobs.Source.Queue.Count',
    	SUM(CASE WHEN [Source] = 12 THEN 1 ELSE 0 END) AS 'Jobs.Source.Assistant.Count',
    	COUNT(DISTINCT(CASE WHEN [State] IN (4, 5) THEN RobotId END)) AS 'Jobs.Executions.DistinctRobots.Count',
    	MIN(CASE WHEN [State] IN (4,5) THEN [CreationTime] ELSE GETUTCDATE() END) AS 'Jobs.Created.MinimumCreationTime',
    	MAX(CASE WHEN [State] IN (4,5) THEN [CreationTime] ELSE GETUTCDATE() END) AS 'Jobs.Created.MaximumCreationTime',
    	'JobsMetrics' AS DatasetName
    FROM [dbo].[Jobs] WITH(NOLOCK)
    JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    WHERE [CreationTime] > @startTime
    GROUP BY FORMAT([CreationTime], 'MM.yyyy'), t.[Key], t.[AccountId], RuntimeType, [TenantId]
    
    SELECT
    	[TenantId],
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	FORMAT([CreationTime], 'MM.yyyy') AS [Date],
    	COUNT(1) AS 'QueueItems.Created',
    	SUM(CASE WHEN [Status] = 0 THEN 1 ELSE 0 END) AS 'QueueItems.State.New.Count',
    	SUM(CASE WHEN [Status] = 2 THEN 1 ELSE 0 END) AS 'QueueItems.State.Failed.Count',
    	SUM(CASE WHEN [Status] = 3 THEN 1 ELSE 0 END) AS 'QueueItems.State.Successful.Count',
    	SUM(CASE WHEN [Status] = 4 THEN 1 ELSE 0 END) AS 'QueueItems.State.Abandoned.Count',
    	SUM(CASE WHEN [Status] = 5 THEN 1 ELSE 0 END) AS 'QueueItems.State.Retried.Count',
    	SUM(CASE WHEN [Status] = 6 THEN 1 ELSE 0 END) AS 'QueueItems.State.Deleted.Count',
    	'QueueItemsMetrics' AS DatasetName
    FROM [dbo].[QueueItems] WITH(NOLOCK)
    JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    WHERE [CreationTime] > @startTime
    GROUP BY FORMAT([CreationTime], 'MM.yyyy'), [TenantId], t.[Key], t.[AccountId]
    
    SELECT
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	TenantId,
    	COUNT(1) AS 'Users.Total.Count',
    	SUM(CASE WHEN AllowedSessions & 2 = 2  THEN 1 ELSE 0 END) AS 'Users.AllowedSession.Attended.Count',
    	SUM(CASE WHEN AllowedSessions & 4 = 4  THEN 1 ELSE 0 END) AS 'Users.AllowedSession.Unattended.Count',
    	SUM(CASE WHEN LicenseType = 1  THEN 1 ELSE 0 END) AS 'Users.Robots.Attended.Count',
    	SUM(CASE WHEN LicenseType = 3  THEN 1 ELSE 0 END) AS 'Users.Robots.RpaDeveloper.Count',
    	SUM(CASE WHEN LicenseType = 4  THEN 1 ELSE 0 END) AS 'Users.Robots.CitizenDeveloper.Count',
    	SUM(CASE WHEN LicenseType = 6  THEN 1 ELSE 0 END) AS 'Users.Robots.RpaDeveloperPro.Count',
    	SUM(CASE WHEN [Type] = 0  THEN 1 ELSE 0 END) AS 'Users.Type.User.Count',
    	SUM(CASE WHEN [Type] = 1  THEN 1 ELSE 0 END) AS 'Users.Type.Robot.Count',
    	SUM(CASE WHEN [Type] = 2  THEN 1 ELSE 0 END) AS 'Users.Type.DirectoryUser.Count',
    	SUM(CASE WHEN [Type] = 3  THEN 1 ELSE 0 END) AS 'Users.Type.DirectoryGroup.Count',
    	SUM(CASE WHEN [Type] = 4  THEN 1 ELSE 0 END) AS 'Users.Type.DirectoryRobot.Count',
    	SUM(CASE WHEN [Type] = 5  THEN 1 ELSE 0 END) AS 'Users.Type.DirectoryExternalApplication.Count',
    	'UsersMetrics' AS DatasetName
    FROM [dbo].[Users] WITH(NOLOCK)
    JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    WHERE [IsDeleted] = 0
    GROUP BY [TenantId], t.[Key], t.[AccountId]
    
    DECLARE @lastMigrationId NVARCHAR(50) = ''
    IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND  TABLE_NAME = '__MigrationHistory'))
    BEGIN
    SET @lastMigrationId = (SELECT
    		TOP 1 [MigrationId]
    	FROM [dbo].[__MigrationHistory]
    	ORDER BY MigrationId DESC)
    END
    IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND  TABLE_NAME = '__EFMigrationsHistory'))
    BEGIN
    	SET @lastMigrationId = (SELECT
    		TOP 1 [MigrationId]
    	FROM [dbo].__EFMigrationsHistory
    	ORDER BY MigrationId DESC)
    END
    
    SELECT
    	[Name],
    	[Value],
    	'EnvironmentSettings' AS DatasetName
    FROM [dbo].[Settings] WITH(NOLOCK)
    WHERE [Name] = 'Legacy.InstallationId' OR [Name] = 'InstallationId'
    UNION
    SELECT
    	'LastAppliedMigrationId' AS [Name],
    	@lastMigrationId AS [Value],
    	'EnvironmentSettings' AS DatasetName
    
    SELECT
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	l.[TenantId],
    	l.[Id] AS 'License.Id',
    	l.[EncryptedLicenseInfo] AS 'License.Info',
    	l.[DeletionTime] AS 'License.DeletionTime',
    	l.[CreationTime] AS 'License.CreationTime',
    	l.[HostLicenseId] AS 'License.HostLicenseId',
    	'LicenseInfoDataSet' as DatasetName
    FROM [dbo].[Licenses] l
    LEFT JOIN #TenantsAndAccounts t ON t.[Id] = l.[TenantId]
    
    IF OBJECT_ID('tempdb..#TenantsAndAccounts') IS NOT NULL DROP TABLE #TenantsAndAccountsDECLARE @monthsBack INT = 6
    
    SET NOCOUNT ON
    DECLARE @startTime DATETIME = DATEADD(month, DATEDIFF(month, 0, DATEADD(MONTH, -@monthsBack, GETUTCDATE())), 0)
    SELECT [Id], [Key], [AccountId] INTO #TenantsAndAccounts FROM [Tenants] WITH(NOLOCK)
    ;WITH TransitionStatesCTE AS (
      SELECT je.[TenantId],
          je.[State],
          je.[CreationTime],
    	  j.[RuntimeType],
          LEAD(je.[CreationTime]) OVER (PARTITION BY je.[JobId] ORDER BY je.[CreationTime]) as NextCreationTime,
          LEAD(je.[State]) OVER (PARTITION BY je.[JobId] ORDER BY je.[CreationTime]) as NextAction
      FROM [dbo].[JobEvents] je WITH(NOLOCK) 
      JOIN [dbo].[Jobs] j WITH(NOLOCK) ON j.[Id] = je.[JobId]
      WHERE je.[CreationTime] > @startTime
    )
    SELECT
    	tcte.[TenantId],
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	tcte.RuntimeType,
    	FORMAT(tcte.[CreationTime], 'MM.yyyy') AS [Date],
    	SUM(DATEDIFF(SECOND, tcte.[CreationTime], tcte.[NextCreationTime])) as ExecutionDurationSeconds,
    	'JobExecutionTime' AS DatasetName
    FROM TransitionStatesCTE tcte
    JOIN #TenantsAndAccounts t ON t.[Id] = tcte.[TenantId]
    WHERE tcte.[State] IN (1, 2, 3) AND tcte.[NextAction] IN (2, 3, 4, 5, 6, 7)
    GROUP BY FORMAT(tcte.[CreationTime], 'MM.yyyy'), t.[Key], t.[AccountId], tcte.[RuntimeType], tcte.[TenantId]
    
    SELECT
    	[TenantId],
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	FORMAT([CreationTime], 'MM.yyyy') AS [Date],
    	COUNT(1) AS 'Processes.Created.Count',
    	'NumberOfProcesses' AS DatasetName
    FROM [dbo].[Releases] WITH(NOLOCK)
    JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    WHERE [IsDeleted] = 0
    GROUP BY TenantId, FORMAT([CreationTime], 'MM.yyyy'), t.[Key], t.[AccountId]
    
    SELECT 
    	TenantId,
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	FORMAT([CreationTime], 'MM.yyyy') AS [Date],
    	[RuntimeType],
    	COUNT(1) AS 'Jobs.Created',
    	SUM(CASE WHEN [State] = 5 THEN 1 ELSE 0 END) AS 'Jobs.State.Successful.Count',
    	SUM(CASE WHEN [State] = 4 THEN 1 ELSE 0 END) AS 'Jobs.State.Faulted.Count',
    	SUM(CASE WHEN [ResumeVersion] <> NULL THEN 1 ELSE 0 END) AS 'Jobs.State.WentThroughSuspended.Count',
    	SUM(CASE WHEN [Source] = 0 THEN 1 ELSE 0 END) AS 'Jobs.Source.Manual.Count',
    	SUM(CASE WHEN [Source] = 1 THEN 1 ELSE 0 END) AS 'Jobs.Source.Schedule.Count',
    	SUM(CASE WHEN [Source] = 2 THEN 1 ELSE 0 END) AS 'Jobs.Source.Queue.Count',
    	SUM(CASE WHEN [Source] = 12 THEN 1 ELSE 0 END) AS 'Jobs.Source.Assistant.Count',
    	COUNT(DISTINCT(CASE WHEN [State] IN (4, 5) THEN RobotId END)) AS 'Jobs.Executions.DistinctRobots.Count',
    	MIN(CASE WHEN [State] IN (4,5) THEN [CreationTime] ELSE GETUTCDATE() END) AS 'Jobs.Created.MinimumCreationTime',
    	MAX(CASE WHEN [State] IN (4,5) THEN [CreationTime] ELSE GETUTCDATE() END) AS 'Jobs.Created.MaximumCreationTime',
    	'JobsMetrics' AS DatasetName
    FROM [dbo].[Jobs] WITH(NOLOCK)
    JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    WHERE [CreationTime] > @startTime
    GROUP BY FORMAT([CreationTime], 'MM.yyyy'), t.[Key], t.[AccountId], RuntimeType, [TenantId]
    
    SELECT
    	[TenantId],
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	FORMAT([CreationTime], 'MM.yyyy') AS [Date],
    	COUNT(1) AS 'QueueItems.Created',
    	SUM(CASE WHEN [Status] = 0 THEN 1 ELSE 0 END) AS 'QueueItems.State.New.Count',
    	SUM(CASE WHEN [Status] = 2 THEN 1 ELSE 0 END) AS 'QueueItems.State.Failed.Count',
    	SUM(CASE WHEN [Status] = 3 THEN 1 ELSE 0 END) AS 'QueueItems.State.Successful.Count',
    	SUM(CASE WHEN [Status] = 4 THEN 1 ELSE 0 END) AS 'QueueItems.State.Abandoned.Count',
    	SUM(CASE WHEN [Status] = 5 THEN 1 ELSE 0 END) AS 'QueueItems.State.Retried.Count',
    	SUM(CASE WHEN [Status] = 6 THEN 1 ELSE 0 END) AS 'QueueItems.State.Deleted.Count',
    	'QueueItemsMetrics' AS DatasetName
    FROM [dbo].[QueueItems] WITH(NOLOCK)
    JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    WHERE [CreationTime] > @startTime
    GROUP BY FORMAT([CreationTime], 'MM.yyyy'), [TenantId], t.[Key], t.[AccountId]
    
    SELECT
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	TenantId,
    	COUNT(1) AS 'Users.Total.Count',
    	SUM(CASE WHEN AllowedSessions & 2 = 2  THEN 1 ELSE 0 END) AS 'Users.AllowedSession.Attended.Count',
    	SUM(CASE WHEN AllowedSessions & 4 = 4  THEN 1 ELSE 0 END) AS 'Users.AllowedSession.Unattended.Count',
    	SUM(CASE WHEN LicenseType = 1  THEN 1 ELSE 0 END) AS 'Users.Robots.Attended.Count',
    	SUM(CASE WHEN LicenseType = 3  THEN 1 ELSE 0 END) AS 'Users.Robots.RpaDeveloper.Count',
    	SUM(CASE WHEN LicenseType = 4  THEN 1 ELSE 0 END) AS 'Users.Robots.CitizenDeveloper.Count',
    	SUM(CASE WHEN LicenseType = 6  THEN 1 ELSE 0 END) AS 'Users.Robots.RpaDeveloperPro.Count',
    	SUM(CASE WHEN [Type] = 0  THEN 1 ELSE 0 END) AS 'Users.Type.User.Count',
    	SUM(CASE WHEN [Type] = 1  THEN 1 ELSE 0 END) AS 'Users.Type.Robot.Count',
    	SUM(CASE WHEN [Type] = 2  THEN 1 ELSE 0 END) AS 'Users.Type.DirectoryUser.Count',
    	SUM(CASE WHEN [Type] = 3  THEN 1 ELSE 0 END) AS 'Users.Type.DirectoryGroup.Count',
    	SUM(CASE WHEN [Type] = 4  THEN 1 ELSE 0 END) AS 'Users.Type.DirectoryRobot.Count',
    	SUM(CASE WHEN [Type] = 5  THEN 1 ELSE 0 END) AS 'Users.Type.DirectoryExternalApplication.Count',
    	'UsersMetrics' AS DatasetName
    FROM [dbo].[Users] WITH(NOLOCK)
    JOIN #TenantsAndAccounts t ON t.[Id] = [TenantId]
    WHERE [IsDeleted] = 0
    GROUP BY [TenantId], t.[Key], t.[AccountId]
    
    DECLARE @lastMigrationId NVARCHAR(50) = ''
    IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND  TABLE_NAME = '__MigrationHistory'))
    BEGIN
    SET @lastMigrationId = (SELECT
    		TOP 1 [MigrationId]
    	FROM [dbo].[__MigrationHistory]
    	ORDER BY MigrationId DESC)
    END
    IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND  TABLE_NAME = '__EFMigrationsHistory'))
    BEGIN
    	SET @lastMigrationId = (SELECT
    		TOP 1 [MigrationId]
    	FROM [dbo].__EFMigrationsHistory
    	ORDER BY MigrationId DESC)
    END
    
    SELECT
    	[Name],
    	[Value],
    	'EnvironmentSettings' AS DatasetName
    FROM [dbo].[Settings] WITH(NOLOCK)
    WHERE [Name] = 'Legacy.InstallationId' OR [Name] = 'InstallationId'
    UNION
    SELECT
    	'LastAppliedMigrationId' AS [Name],
    	@lastMigrationId AS [Value],
    	'EnvironmentSettings' AS DatasetName
    
    SELECT
    	t.[Key] AS TenantKey,
    	t.[AccountId] AS OrganizationKey,
    	l.[TenantId],
    	l.[Id] AS 'License.Id',
    	l.[EncryptedLicenseInfo] AS 'License.Info',
    	l.[DeletionTime] AS 'License.DeletionTime',
    	l.[CreationTime] AS 'License.CreationTime',
    	l.[HostLicenseId] AS 'License.HostLicenseId',
    	'LicenseInfoDataSet' as DatasetName
    FROM [dbo].[Licenses] l
    LEFT JOIN #TenantsAndAccounts t ON t.[Id] = l.[TenantId]
    
    IF OBJECT_ID('tempdb..#TenantsAndAccounts') IS NOT NULL DROP TABLE #TenantsAndAccounts
  2. 通过执行以下命令来运行 SQL 脚本:
    sqlcmd -i ExportScriptOrchMSI.sql -S<Server>' -U '<User>' -P '<Password>' -d '<DB>' -o '<output-file>' -y 0sqlcmd -i ExportScriptOrchMSI.sql -S ‘<Server>' -U '<User>' -P '<Password>' -d '<DB>' -o '<output-file>' -y 0
  3. 要在本地查看导出的数据文件,请运行以下格式化命令:
    (Get-Content output.xml) -join '' | Set-Content output.xml(Get-Content output.xml) -join '' | Set-Content output.xml
  4. 将 XML 文件上传到 UiPath™ Customer Portal。

此页面有帮助吗?

获取您需要的帮助
了解 RPA - 自动化课程
UiPath Community 论坛
Uipath Logo White
© 2005-2025 UiPath。保留所有权利。