Compartir a través de


SharePoint GetMigrationJobProgress API

Después de enviar un trabajo de migración,ya sea un trabajo de importación o un trabajo de lectura asincrónica de metadatos (AMR), puede usar la API GetMigrationJobProgress para realizar un seguimiento de su progreso. La API está disponible a través de las interfaces DE REST y SDK.

Devuelve una secuencia de eventos de estado de trabajo, incluidos: JobQueued, JobStart, JobProgress, JobError y JobEnd.

Permissions

Use la autenticación basada en aplicaciones al enviar un trabajo de migración. Asegúrese de que a la aplicación se le concede el permiso Sites.Read.All o superior.

Método GetMigrationJobProgress (SDK)

Sintaxis

public ClientResult Site.GetMigrationJobProgress(
  Guid jobId, 
  String nextToken
)

Parámetros del método

Nombre Tipo Obligatorio Descripción
jobId Guid Identificador único del trabajo de migración
nextToken Cadena Token para la posición de paginación. Uso de "0" para la solicitud inicial

Para un trabajo completado, las solicitudes que usan nextToken son idempotentes; si se repite la misma solicitud, se devolverá el mismo resultado de forma coherente.

Valores devueltos

Nombre Tipo Descripción
Registros IList Devuelve una colección de eventos de estado de trabajo cuando hay nuevo progreso disponible o una colección vacía si no hay actualizaciones.
NextToken Cadena Devuelve un valor de cadena actualizado cuando hay nuevo progreso disponible o el mismo valor que el parámetro nextToken si no hay actualizaciones.

Ejemplo de uso del método

ClientResult result = context.Site.GetMigrationJobProgress(jobId, nextToken ?? "0");
context.ExecuteQuery();
IList logs = result.Value.Logs;
string newNextToken = result.Value.NextToken;

GetMigrationJobProgress REST API

Solicitud HTTP

GET https://{site_url}/_api/site/GetMigrationJobProgress(jobId='{jobId}',nextToken=0)

Parámetros de URI

Nombre Tipo Obligatorio Descripción
jobId Guid Identificador único del trabajo de migración
nextToken Cadena Token para la posición de paginación. Uso de "0" para la solicitud inicial

Encabezados de solicitud

Encabezado Obligatorio
Autorización: Portador {token}
Accept: application/json; odata=verbose

Respuesta

Objeto JSON cuando el código de estado HTTP es 200.

Objeto JSON vacío cuando el código de estado HTTP es distinto de 200.

Manejo de errores

Código de estado Significado Acción
403 No autorizado (Unauthorized) Asegúrese de que la aplicación o el usuario tiene al menos permisos Sites.Read.All.
429 Demasiadas solicitudes (Too Many Requests) Analice Retry-After encabezado y vuelva a intentarlo después del retraso especificado.
500 Error interno del servidor (Internal Server Error) Analice las respuestas de error para identificar errores internos. No vuelva a intentarlo.
503 Servicio no disponible (Service Unavailable) Analice Retry-After encabezado y vuelva a intentarlo después del retraso especificado.
Código de error interno Significado
-2147213145 Trabajo no encontrado
-2147213146 Estado del trabajo expirado (válido durante menos de 5 días)

Ejemplo de uso de API

Ejemplo de solicitud

GET https://contoso.sharepoint.com/_api/site/GetMigrationJobProgress(jobId=' 3e280efa-78a3-4ba1-bac6-e447aa538ca5', nextToken=0)

Ejemplo de respuesta correcta

Código de estado: 200 Cuerpo de la respuesta:

{
  "d": {
    "GetMigrationJobProgress": {
      "Logs": {
        "__metadata": {
          "type": "Collection(Edm.String)"
        },
        "results": [
          "{\"MigrationType\":\"None\",\"MigrationDirection\":\"Import\",\"SiteId\":\"48f1898f-77d9-4a1b-bddc-1f49bb6dc134\",\"DbId\":\"de6b85cd-726e-4b13-ae04-629798fddbf3\",\"TotalRetryCount\":\"0\",\"JobId\":\"3e280efa-78a3-4ba1-bac6-e447aa538ca5\",\"Time\":\"05/20/2025 09:18:48.132\",\"CorrelationId\":\"91884a0c-5ee8-4e1f-a23f-e4f7ec170182\",\"Event\":\"JobQueued\"}",
          "{\"MigrationType\":\"None\",\"MigrationDirection\":\"Import\",\"SiteId\":\"48f1898f-77d9-4a1b-bddc-1f49bb6dc134\",\"WebId\":\"7206fc09-e4af-48b3-8730-ed7321396d7a\",\"DbId\":\"de6b85cd-726e-4b13-ae04-629798fddbf3\",\"FarmId\":\"f77d7b6c-ef43-4609-8fce-0e93142ce8a0\",\"ServerId\":\"44af885c-393b-4236-9417-bae7a9edc44e\",\"SubscriptionId\":\"82abb045-250e-4186-ba83-b9295930f272\",\"TotalRetryCount\":\"0\",\"JobId\":\"3e280efa-78a3-4ba1-bac6-e447aa538ca5\",\"Time\":\"05/20/2025 09:20:51.129\",\"CorrelationId\":\"7d3e7a8e-4445-4ce0-adb1-078e78cbf686\",\"Event\":\"JobStart\"}",
          "{\"MigrationType\":\"None\",\"MigrationDirection\":\"Import\",\"TotalRetryCount\":\"0\",\"ObjectType\":\"ListItem\",\"Url\":\"\",\"Id\":\"cb471d5f-593f-4a63-b59e-8eae3e35b08a\",\"SourceListItemIntId\":\"3\",\"TargetListItemIntId\":\"3\",\"ErrorCode\":\"-2147286782\",\"ErrorType\":\"Microsoft.SharePoint.SPException\",\"Message\":\"Attempted to use an object that has ceased to exist. (Exception from HRESULT: 0x80030102 (STG_E_REVERTED)) \",\"JobId\":\"3e280efa-78a3-4ba1-bac6-e447aa538ca5\",\"Time\":\"05/20/2025 09:20:55.490\",\"CorrelationId\":\"7d3e7a8e-4445-4ce0-adb1-078e78cbf686\",\"Event\":\"JobError\"}",
          "{\"MigrationType\":\"None\",\"MigrationDirection\":\"Import\",\"TotalRetryCount\":\"0\",\"FilesCreated\":\"0\",\"BytesProcessed\":\"0\",\"ObjectsProcessed\":\"4\",\"TotalExpectedSPObjects\":\"15\",\"TotalErrors\":\"3\",\"TotalWarnings\":\"0\",\"WaitTimeOnSqlThrottlingMilliseconds\":\"0\",\"TotalDurationInMs\":\"0\",\"CpuDurationInMs\":\"0\",\"SqlDurationInMs\":\"0\",\"SqlQueryCount\":\"0\",\"IsShallowCopy\":\"False\",\"CreatedOrUpdatedFileStatsBySize\":\"{}\",\"ObjectsStatsByType\":\"{\\\"SPUser\\\":{\\\"Count\\\":1,\\\"TotalTime\\\":124,\\\"AccumulatedVersions\\\":0,\\\"ObjectsWithVersions\\\":0},\\\"SPFolder\\\":{\\\"Count\\\":1,\\\"TotalTime\\\":153,\\\"AccumulatedVersions\\\":0,\\\"ObjectsWithVersions\\\":0},\\\"SPDocumentLibrary\\\":{\\\"Count\\\":1,\\\"TotalTime\\\":404,\\\"AccumulatedVersions\\\":0,\\\"ObjectsWithVersions\\\":0},\\\"SPFile\\\":{\\\"Count\\\":1,\\\"TotalTime\\\":0,\\\"AccumulatedVersions\\\":0,\\\"ObjectsWithVersions\\\":0},\\\"SPListItem\\\":{\\\"Count\\\":1,\\\"TotalTime\\\":1880,\\\"AccumulatedVersions\\\":0,\\\"ObjectsWithVersions\\\":0}}\",\"TotalExpectedBytes\":\"0\",\"FilesCreatedIrrespectiveOfVersions\":\"0\",\"BytesProcessedOnlyCurrentVersion\":\"0\",\"JobId\":\"3e280efa-78a3-4ba1-bac6-e447aa538ca5\",\"Time\":\"05/20/2025 09:20:57.380\",\"CorrelationId\":\"7d3e7a8e-4445-4ce0-adb1-078e78cbf686\",\"Event\":\"JobEnd\"}"
        ]
      },
      "NextToken": "1764",
      "__metadata": {
        "type": "SP.MigrationJobProgress"
      }
    }
  }
}

Ejemplo de respuesta de error

Código de estado: 500 Cuerpo de la respuesta:

{
  "error": {
    "code": "-2147213145, Microsoft.SharePoint.SPException",
    "innererror": {
      "message": "Job not found",
      "stacktrace": "STACK_TRACE"
    },
    "message": {
      "lang": "en-US",
      "value": "Job not found"
    }
  }
} 

Procedimiento recomendado

Comience con nextToken=0, almacene el token devuelto y sondee a intervalos determinados. Este método es adecuado para trabajos de larga duración y ayuda a garantizar que no se pierda ninguna actualización.

Dado que los trabajos de migración suelen tardar varios minutos o más, se recomienda sondear cada minuto, a la vez que se adhiere a la guía para evitar la limitación.

Consulta también