从 Project Server 中导出用户数据

重要说明!:本文介绍如何从 Project Server 2016、Project Server 2013 或 Project Server 2010 导出用户数据。 从 Project Server 2019 中导出用户数据的过程与早期版本大为不同,本文中未包含此过程。 若要了解如何从早期版本的 Project Server 2019 公共预览版导出用户数据,请参阅在 Project Server 2019 公共预览版中导出用户数据。

您的组织可以从您的 Project 服务器环境中导出特定用户的内容。 若要导出此内容,Project服务器场管理员可以执行以下步骤:

步骤 1 - 下载导出脚本文件

步骤 2- 在 Project Web App 服务器场中查找SharePoint实例

步骤 3- 导出用户的工作区项目

步骤 4 - 查找每个网站中的用户的资源 ID 或PWA帐户

步骤 5 - 查找包含要查找的用户的项目

步骤 6 - 导出数据的其他查询

步骤 7 - 存档的项目

步骤 8 - 查找和保存附件、视图和 VBA 文件

流程概述

以下是从特定用户导出特定用户信息的过程的Project Web App:

  1. 下载导出脚本:下载用于导出用户数据的 .sql 和 Microsoft PowerShell 脚本。

  2. 查找PWA中的网站:查找 Project Web App Server 场中的Project实例列表。

  3. 查找用户的资源 ID:在每个资源Project Web App,查找用户的唯一资源 ID。 您还可以选择指定用户声明。

  4. 执行用户数据的 导出:使用密码导出要查看的信息。

    将脚本用于不同版本的 Project Server

本文适用于 Project Server 2016 Server 2013 Project server 2010 Project Server 2010。 虽然常规过程适用于所有三个版本,但有些具体内容可能适用于不同的版本,尤其是在运行 SQL 脚本时。 以下各节对此进行说明。 请确保已对服务器场和客户端部署Project Professional更新。

备注

Project作者不会导出为本文中的过程的一部分。

步骤 1 - 下载导出脚本文件

从 Microsoft 下载中心下载 导出脚本

下载包含一个 ZIP 文件,其中包含每个版本的 Project Server 的单独文件夹。 使用适用于版本或 Project 服务器的脚本,如下面的步骤 5 中所述。

有关运行导出脚本的重要说明:

  • 脚本文件夹包含多个 .wsdl 文件。 PowerShell 脚本需要这些脚本。 在运行 PowerShell 脚本时,请确保它们与它们在同一目录中。

  • SetupReportingProcedures201x.sql 脚本临时在内存中创建 sql 会话中可用的一些全局存储过程。 以下脚本需要这些存储过程:

    • ExportReportingProject201x.sql

    • ExportReportingResource201x.sql

    • ExportTimesheetReporting201x.sql

备注

运行 SetupReportingProcedures201x.sql,然后再运行这些脚本之一。

  • 每个脚本都有一个或多个必须定义的变量(如 UserID 或数据库名称)才能运行它。 检查脚本本身的说明部分,了解所需的任何参数。

  • 在信息所在的数据库上下文中运行每个 .sql 脚本。 您必须具有db_datareader权限。

  • 您可能需要"取消阻止"zip 文件,因为默认情况下,不允许执行从 Internet 下载的脚本。 执行以下操作以取消阻止文件:

  1. 在文件资源管理器中,转到 zip 文件的保存位置。

  2. 右键单击 zip 文件,然后单击"属性 "

  3. 在" 常规"选项卡 上,选择 "取消阻止"取消阻止文件。

  4. 单击“确定”。

    zip 文件中包含的所有文件现在都应为"取消阻止"。 您可以通过检查文件"属性"页的"常规"选项卡中是否不再显示"取消阻止"复选框选项,在个别文件中验证 这一 点。

    备注

    如果仅有权访问解压缩文件,还可以单独取消阻止每个文件。

步骤 2- 在 Project Web App 服务器场中查找SharePoint实例

将 Get-SPProjectWebInstance cmdlet 与以下筛选器一起用于获取 SharePoint Server 服务器场中已存在的 PWA 网站的 URL、网站 ID 和SharePoint名称:

 Get-SPProjectWebInstance | ft -a Url,SiteId,DatabaseName,DatabaseServer

在稍后的步骤中删除用户个人数据时,您需要每个网站的信息。

例如,在示例 Contoso Project 服务器场上运行 cmdlet 可能会返回以下三PWA网站:

URL SiteID 数据库 DatabaseServer
https://contoso/pwa1
63ed0197-3647-4279-ed5e80855fc7
WSS_Content
SQL01
https://contoso/pwa2
67fd0727-5279-3321-ef4e90956fc8
WSS_Content
SQL01
https://contoso/pwa3
63ed0197-3647-4279-eg7e20233fg9
WSS_Content
SQL02

在 Project Web App Server 2010 场SharePoint实例

对于 Project Server 2010,还需要查找 Project Server PSI 服务应用程序的服务应用程序 ID。 运行 具有以下参数的 Get-ServiceApplication PowerShell cmdlet 可完成此操作:

Get-SPServiceApplication | ? { $_.TypeName -eq "Project Server PSI Service Application" } | ft -a

这还将返回 Project 服务器服务应用程序的名称。 然后,可以使用 Get-SPProjectWebInstance cmdlet 返回四个 Project Server 数据库的名称,具体方法为使用 -ServiceApplication 参数指定服务应用程序名称:

Get-SPProjectWebInstance -ServiceApplication "Project Server"  | ft -a Url,PrimaryServer,PublishedDatabase,DraftDatabase,ArchiveDatabase,ReportingServer,ReportingDatabase

您需要能够引用每个数据库的数据库名称。

备注

Project Server 2010 报告数据库可以位于其他三个数据库SQL Server数据库的其他实例上。

步骤 3 - 导出用户的工作区项目

运行 ExportWorkspaceItemsByDisplayName201x.sql 脚本,然后使用可能的用户显示名称搜索数据 (部分名称搜索) 。

在 Project Server 2010 的报告数据库或更高版本的相关 PWA 数据库运行脚本。 在步骤 1 中提供的示例结果中,所有三个实例Project Web App数据库为 WSS_Content

在脚本中为以下参数提供值:

参数 说明
@siteID (Project Server 2016仅)
the PWA site ID for the site in which you want to find the user's Resource ID. 在步骤 1 PWA找到PWA网站的网站 ID 值。
@resDisplayName
显示名称服务器显示名称的用户Project部分权限。

步骤 4 - 查找每个网站中的用户的资源 ID 或PWA帐户

获取 Project Server 场上所有 PWA 网站的信息后,接下来需要查找要删除其个人数据的用户的资源 ID (ResID) 或声明帐户。 在步骤 1 PWA发现的每个网站中 (,因为 ResID 因每个实例实例PWA不同) 。

运行 FindUser201x.sql SQL 脚本以查找用户的资源 ID 或声明帐户。

备注

您需要在 SQL Server Management Studio 中运行 FindUser201x.sql SQL 脚本,并且必须具有服务器场管理员权限才能访问适当的数据库。

在 Project Server 2010 的已发布数据库或更高版本的相关 PWA 数据库运行脚本。 在步骤 1 中提供的示例结果中,所有三个实例Project Web App数据库为 WSS_Content

在脚本中为以下参数提供值:

参数 说明
@siteID (Project Server 2016仅)
the PWA site ID for the site in which you want to find the user's Resource ID. 在步骤 1 PWA找到PWA网站的网站 ID 值。
@searchName
显示名称服务器Project的组。

例如,如果要在步骤 1 中的示例找到 Contoso PWA1 网站上 Adam Barr 的 userID,可以编辑脚本中参数的值,如下所示:

DECLARE @siteId uniqueidentifier = '63ed0197-3647-4279-ed5e80855fc7'
DECLARE @searchName nvarchar(255) = 'Adam Barr'

脚本返回用户的资源名称、资源 ID、电子邮件地址和声明帐户值。

步骤 5 - 查找包含要查找的用户的项目

您可以使用在步骤 4 中发现的资源 ID 来查找用户涉及的项目。 这是通过使用脚本SQL查询为项目Project存储的数据。

Project Server 中每个数据存储都有Project脚本。 脚本的结果可能相似,但如果您具有尚未发布的草稿项目,您可能会看到一些差异。

在运行脚本之前,使用要查找的资源 ID 更新它们。

对于 Project Server 2010,请运行以下脚本:

(请务必阅读每个脚本顶部的说明。 某些脚本要求您添加数据库名称或更新其他参数。)

  • ExportDraftProjectList2010.sql

  • ExportPublishedProjectList2010.sql

  • ExportReportingProjectList2010.sql

对于 Project Server 2013,请运行以下脚本:

  • ExportDraftProjectList2013.sql

  • ExportPublishedProjectList2013.sql

  • ExportReportingProjectList2013.sql

对于Project Server 2016,请运行以下脚本:

  • ExportDraftProjectList2016.sql

  • ExportPublishedProjectList2016.sql

  • ExportReportingProjectList2016.sql

检查查询的输出,并确定要查找特定用户数据的项目。 为方便起见,你可能SQL Server列表导出到 CSV 文件。

当您确定要搜索哪些项目以搜索用户信息后,使用以上脚本返回的 ProjectUID 为每个项目运行以下脚本:

对于 Project Server 2010,请运行以下脚本:

(请务必阅读每个脚本顶部的说明。 某些脚本要求您添加数据库名称或更新其他参数。)

  • ExportDraftProject2010.sql

  • ExportPublishedProject2010.sql

  • ExportReportingProjects2010.sql

  • ExportReportingProjectTimephasedData2010.sql

对于 Project Server 2013,请运行以下脚本:

  • ExportDraftProject2013.sql

  • ExportPublishedProject2013.sql

  • ExportReportingProjects2013.sql

  • ExportReportingProjectTimephasedData2013.sql

对于Project Server 2016,请运行以下脚本:

  • ExportDraftProject2016.sql

  • ExportPublishedProject2016.sql

  • ExportReportingProjects2016.sql

  • ExportReportingProjectsTimephased2016.sql

有关这些查询的输出值的信息,请参阅Project数据中的特定用户数据

如果需要其他用户信息,请参阅脚本步骤 6 以检索有关资源、时间表、状态等的信息。

步骤 6 - 导出数据的其他查询

运行这些额外的查询以查找有关资源、时间表、状态等的其他信息。

请参阅 运行下面的 PowerShell 脚本,了解如何运行 PowerShell 脚本。

从 Project Server 2010 导出数据

若要从 Project Server 2010 导出数据,请使用 .sql 脚本和 Microsoft PowerShell 脚本,如下表所示。 有关输出中每个字段的详细信息,请参阅输出 定义列中 的链接。

(请务必阅读每个脚本顶部的说明。 某些脚本要求您添加数据库名称或更新其他参数。)

导出选项 运行以下脚本: 输出定义
项目组合
ExportPortfolioModels2010.sql
驱动程序
优先顺序
分析
资源计划
Export-ResourcePlanTimephasedData2010.ps1
ExportResourcePlans2010.sql
ExportReportingResourcePlans2010.sql
ResourcePlan
资源
ExportResource2010.sql
ExportReportingResource2010.sql
资源
ReportingResource
安全
ExportSecurity2010.sql
安全性
服务设置
ExportServerSettings2010.sql
QueueJobs
CustomFields
LookupTables
日历
UnsubscribedAlerts
SubscribedReminders
ReminderEmails
代表
状态报告
ExportStatusReports2010.sql
状态报告
TaskStatus
ExportAssignmentsSavedData2010.sql
ExportSubmittedTaskStatusUpdates2010.sql
ExportAssignmentTransactionHistory2010.sql
ExportAssignmentHistoryData2010.ps1
ExportSavedTaskStatusUpdates2010.sql
Export-SavedTaskStatusUpdates2010.ps1 (注释)
StatusAssignSaved
StatusAssignHistory
时间表
ExportTimesheets2010.sql
ExportReportingTimesheets2010.sql
时间表
Timesheets_Reporting
用户视图设置
Export-UserViewSettings2010.ps1
UserViewSettings
工作流
ExportWorkflow2010.sql
工作流
工作区项目
ExportWorkspaceItemsByDisplayName2010.sql
WorkspaceItems

从 Project Server 2013 导出数据

若要从 Project Server 2013 导出数据,请使用 .sql 脚本和 Microsoft PowerShell 脚本,如下表所示。 有关输出中每个字段的详细信息,请参阅输出 定义列中 的链接。

导出选项 运行以下脚本: 输出定义
项目组合
ExportPortfolioModels2013.sql
驱动程序
优先顺序
分析
资源计划
ExportResourcePlanTimephasedData2013.ps1
ExportResourcePlans2013.sql
ResourcePlan
资源
ExportResource2013.sql
ExportReportingResource2013.sql
资源
ReportingResource
安全
ExportSecurity2013.sql
安全性
服务设置
ExportServerSettings2013.sql
QueueJobs
CustomFields
LookupTables
日历
UnsubscribedAlerts
SubscribedReminders
ReminderEmails
代表
状态报告
ExportStatusReports2013.sql
状态报告
TaskStatus
ExportAssignmentsSavedData2013.sql
ExportSubmittedTaskStatusUpdates2013.sql
ExportAssignmentTransactionHistory2013.sql
ExportAssignmentHistoryData2013.ps1
ExportSavedTaskStatusUpdates2013.sql
Export-SavedTaskStatusUpdates2013.ps1 (注释)
StatusAssignSaved
StatusAssignHistory
时间表
ExportTimesheets2013.sql
ExportReportingTimesheets2013.sql
时间表
Timesheets_Reporting
用户视图设置
Export-UserViewSettings2013.ps1
UserViewSettings
工作流
ExportWorkflow2013.sql
工作流
工作区项目
ExportWorkspaceItemsByDisplayName2013.sql
WorkspaceItems

从数据库导出Project Server 2016

若要从数据库Project Server 2016,请使用 .sql 脚本和 Microsoft PowerShell 脚本,如下表所示。 有关输出中每个字段的详细信息,请参阅输出 定义列中 的链接。

导出选项 运行以下脚本: 输出定义
服务
ExportEngagementScripts2016.sql
服务
项目组合
ExportPortfolioModels2016.sql
驱动程序
优先顺序
分析
资源计划
ExportResourcePlans2016.sql
ResourcePlan
资源
ExportResource2016.sql
ExportReportingResource.sql
资源
ReportingResource
安全
ExportSecurity2016.sql
安全性
服务设置
ExportServerSettings2016.sql
QueueJobs
CustomFields
LookupTables
日历
UnsubscribedAlerts
SubscribedReminders
ReminderEmails
代表
状态报告
ExportStatusReports2016.sql
状态报告
TaskStatus
ExportAssignmentsSavedData2016.sql
ExportSubmittedTaskStatusUpdates2016.sql
ExportAssignmentTransactionHistory2016.sql
ExportAssignmentHistoryData.ps1
ExportSavedTaskStatusUpdates2016.sql
Export-SavedTaskStatusUpdates2016.ps1
StatusAssignSaved
StatusAssignHistory
时间表
ExportTimesheets2016.sql
ExportReportingTimesheets2016.sql
时间表
Timesheets_Reporting
用户视图设置
Export-UserViewSettings2016.ps1
UserViewSettings
工作流
ExportWorkflow2016.sql
工作流
工作区项目
ExportWorkspaceItemsByDisplayName2016.sql
WorkspaceItems

步骤 7 - 存档的项目

ExportArchievdData201x.sql 将返回存储在与资源相关的存档数据库中的以下数据。

导出选项 输出定义
存档项目 - 日历 日历
存档项目 - 自定义字段 CustomFields
存档项目 - 查找表 查阅表格
存档项目 - 项目 Project列表
ProjectVersionId (存档版本 ID)
ProjectVersionDescription (备份日志的日期和时间)
ProjectVersionDate (备份日期)
已存档项目 - 资源 资源
已存档项目 - 资源自定义域 资源 - 自定义域

Archived Project Data: To export archived projects:

  1. 存档当前项目。 (2010)
  2. 还原存档的版本。 (2010)
  3. 导出与用户相关的数据。
  4. 从存档还原项目。

存档的非Project数据:

  1. 使用 SharePoint 2010 (备份和恢复) 创建当前服务器场的克隆。
  2. 从管理备份和还原过程中还原存档 (请参阅上一过程) 。
  3. 导出与用户相关的数据。

步骤 8 - 查找和保存附件、视图和 VBA 文件

若要查找附件和视图,建议您将给定项目导出为 XML。 为此,请将其打开Project Professional,然后另存为 XML 文件。 在您具有要查看的项目的 XML 文件后,请参阅在 Project Online 中查找自定义用户Project Server 用户导出数据

运行 PowerShell 脚本

下表显示了给定脚本所需的参数。 以服务器场管理员SharePoint命令行管理程序中运行每个脚本。

Script 参数
ResourcePlanTimephasedData201x.ps1
Export-SavedTaskStatusUpdates201x.ps1
ExportTaskStatusUpdateHistory201x.ps1
ProjectServerURL
ResId
OutputPath
PromptForCredential
UseWebLogin
Sync-ProjectWorkspace201x.ps1 ProjectServerURL
ProjectId
PromptForCredential
UseWebLogin
Export-UserViewSettings201x.ps1 ProjectServerURL
ResId
OutputPath

下表介绍了这些参数。

参数 说明
ProjectServerURL 网站PWA URL
ResId 用户的资源 ID
OutputPath 存储导出文件的位置。
ProjectId Project工作区进行同步

此外,每次运行脚本时,请包含以下授权参数之一:

Auth 参数 说明
[不传入任何项] 以当前用户身份使用 NTLM 和 Kerberos 协议进行身份验证。
PromptForCredential 使用基本或摘要协议或与其他用户一起使用 NTLM 和/或 Kerberos 进行身份验证。
UseWebLogin 使用表单和 ADFS/SAML 协议进行身份验证。

例如:

.\Export-UserViewSettings2016.ps1 -ProjectServerURL "https://pwa" -resId "55efd6ff-853c-4fec-8abd-6df2c90b94e5" -OutputPath "C:\"

有关参数的更多示例和信息,请参阅每个 PowerShell 脚本文件。

仅在 Export-SavedTaskStatusUpdates201x.ps1 (2010 和 2013)

若要运行Export-SavedTaskStatusUpdates201x.ps1脚本,您必须作为要导出的用户的代理运行才能查看保存的工作分配。 请使用以下过程:

  1. 在 Project Server 中启用委派
  2. 对要导出的用户启用委派权限
  3. 为自己启用委派权限以该用户角色委派。 (作为管理员,你可能已拥有权限。)
  4. 将自己配置为要导出的用户的代理
  5. 登录到 Project Web App。
  6. 单击齿轮图标,然后单击" 充当代理人"
  7. 启动代理会话。
  8. 运行 Export-SavedTaskStatusUpdates201x.ps1 PowerShell 脚本。
  9. 停止代理会话。

另请参阅

从 Project Server 中删除用户数据