这对于 SharePoint 开发来说是一个非常棘手的问题。
就 SQL Server 而言(对于非 SharePoint 的东西),您可以使用 SQL Server 中提供的工具同步您的数据库。例如复制数据库向导,或者如果您需要完成自定义工作,您甚至可以编写自己的 SSIS 包。
SharePoint 是另一回事。您不能仅通过复制数据库来将网站集/ Web 应用程序从一台服务器同步到另一台服务器,它不会工作(有很多原因,但主要是因为当您在服务器上创建 Web 应用程序时,它使用GUID 作为应用程序 ID。该 GUID 在数据库中随处使用,如果您尝试更改它,表之间的所有链接都将断开)。 SharePoint 数据库的结构没有记录,MS 建议不要手动修改它。老实说,即使您确实设法直接从 SQL Server 同步数据库,您也会遇到其他问题,因为并非您所做的所有自定义都保存到数据库中(很多东西都保存在 12 配置单元中)。
所以这取决于你想要达到的目标。
如果您尝试同步已编码的自定义项(即您的内容类型、列表模板、Web 部件等)。我建议您只从您的开发环境中构建 WSP 包,并在每次需要同步时部署它们。
如果您只是尝试同步数据(即列表项),您可以使用备份/恢复解决方案(您可以在管理中心找到它)。请注意,如果您有自定义,它并不太可靠。它在开箱即用的网站上运行良好,但一旦您使用自己的列表模板等,恢复起来可能会很棘手。
您还可以编写代码以使用web services 或Content Deployment API 进行同步,看看它是否适合您的需求。
您还可以寻找可以为您完成全部或部分工作的工具。 Here is one
所以基本上,无论你决定如何去做,它都不会像你想象的那么简单。 DEV/TEST/PROD 环境同步问题是 SharePoint 开发的经典问题。
我在一个高度定制的 SharePoint Web 应用程序上工作,我们发现的最佳解决方案是:
- 严格遵守我们的代码:通过代码进行所有自定义并使用该代码构建 WSP 包。没有 SharePoint 设计器。使用 SharePoint 设计器自定义页面后,您将无法同步任何内容。
- 使用网络服务在任何服务器之间同步列表