Compartilhar via


Como a: Personalizar de implantação para cenários desconectadas

Conteúdo implantação funciona bem quando um Clear conexão entre a farms de origem destino e está sempre disponível. No entanto, um seguro, conexão funcional entre uma origem criação farm e um farm de produção destino não está sempre disponível. Por exemplo, as barreiras geográficos, firewalls que acessar evitar, ou interrupções na rede são todas as situações nas quais usando uma conexão rede para transporte um pacote exportar a um farm de produção destino não é seguro. Nessas situações, Microsoft recomenda que você trabalho com o modelo objeto Microsoft Office do SharePoint Server 2007 ossossversion12 e o Windows SharePoint Services 3.0 Content Migration API para completo programaticamente as etapas exportar e importação do de conteúdo a migração e localizar um alternativo maneira para transporte o pacote exportar para o destino de produção farm e, em seguida, executar o personalizado codificar importação.

Conforme descrito em A implantação de conteúdo entre servidores, cada de conteúdo implantação compreende três etapas: exportar, transporte e importação. Neste cenário, transporte é tratado manualmente, não programaticamente. De exemplo, você poderá transporte de de conteúdo exportado pacote em mídia portátil ou cliente usar um FTP para carregar os dados para um compartilhamento de arquivo independente da qual você pode importação.

Para exportar um de conteúdo pacote usando a Content Migration API

  1. Chamar o Content Migration API com as opções desejar para especificar.

  2. Armazene um token alteração.

  3. O aplicativo é executado a exportar, verificações de exceções e relatórios exceções quando necessário. Se a executar é bem-sucedido, o aplicativo cria o pacote exportado com o nome fornecido e armazena-la na localidade fornecida.

Dica

Após exportar está completo e você criar um de conteúdo pacote, você pode transporte exportados pacote com o uso de mídia portátil, FTP e assim por diante.Depois de transporte de dados para uma localidade arquivo que o processo de importação pode acessar, você pode começar a importação.

A importação de de conteúdo pacote usando a Content Migration API

  1. Localize o arquivo que você criou usando o modelo de objeto durante exportar. Se você estiver usando o exemplo de código fornecido, nome de arquivo é Export.cmp.

  2. Execute a codificar importação. A codificar importação faz o seguinte:

    1. Cria um objeto SPImportSettings T:Microsoft.SharePoint.Deployment.SPImportSettings com propriedades definidas conforme definido na codificar.

    2. Cria um novo objeto T:Microsoft.SharePoint.Deployment.SPImport SPImport e gerencia tokens alteração Pre-Import e Post-Import, de conteúdo versionamento, armazenar em cache configurações e o agendamento para de conteúdo recém-implantado.

    Dica

    Por motivos desempenho, O Office SharePoint Server 2007 não chamar evento receptores Por padrão.Por padrão, ouvintes não acionar quando de conteúdo implantação cria de conteúdo.No entanto, se você estiver usando outra-parte aplicativos ou personalizado codificar que requer receptores evento a ser acionado durante importação, você pode definir o SuppressAfterEvents a false SuppressAfterEvents.Quando este sinalizador estiver definido, você pode enfrentar perda desempenho significativos, mas todos os requisitos especificados na importação são recebidos.

    Dica

    Você chamar o Content Migration API no servidor origem e conjunto opções, such as o RetainObjectIdentity P:Microsoft.SharePoint.Deployment.SPImportSettings.RetainObjectIdentity propriedade, a true específicas.

Exemplo

Para ajudá-lo a usar o Windows SharePoint Services 3.0 Content Migration API com o de conteúdo O Office SharePoint Server 2007 ossossshort recurso implantação, este tópico inclui um amostra de código que usa o Content Migration API COM de conteúdo O Office SharePoint Server 2007 ossossshort implantação. O exemplo mostra como o de conteúdo recurso implantação interage com o Content Migration API para criar um exportar; Conceitos e sintaxe exigido ao usar o Content Migration API para completo a exportar, importação e caminho; e trabalho definição e as etapas de execução de de conteúdo O Office SharePoint Server 2007 ossossshort implantação.

Codificar o exemplo é dividido em dois menor aplicativos: um aplicativo exportar e um aplicativo importação.

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint.Deployment;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Publishing;
using Microsoft.SharePoint.Publishing.Administration;

/* Note: Before running this sample code, or any custom deployment solution, disable auto-spawning for the Variations feature
 * on your source site if it is enabled.
 **/
namespace CustomDeployment
{
    class Program
    {
        private static SavedCacheSettings savedCacheSettings;
        private static string sourceUrl = "http://samplesource/";
        private static string destinationUrl = "http://sampledestination/";
        private static string destinationRootWebUrl;

        static void Main(string[] args)
        {
            // This region defines content deployment export settings,
            // runs the export, and catches an exceptions during export
            // and outputs them.
            #region Export

            try
            {
                SPExportSettings exportSettings = new SPExportSettings();
                // Turn on extra output for testing
                exportSettings.CommandLineVerbose = true; 
                // The name of the file targeted by the export
                exportSettings.BaseFileName = "export.cmp"; 
                // The directory on the file system in which
                // to put the exported package
                exportSettings.FileLocation = @"%temp%"; 
                // If the file exists, overwrite it
                exportSettings.OverwriteExistingDataFile = true;
                // Export all security settings; change this if needed
                exportSettings.IncludeSecurity = SPIncludeSecurity.All;
                // The URL of the site being exported
                exportSettings.SiteUrl = sourceUrl;
                // The last major and minor versions
                exportSettings.IncludeVersions = SPIncludeVersions.LastMajorAndMinor;
                // Compress the exported file
                exportSettings.FileCompression = true; 
                // Create a new export object with the correct settings
                SPExport export = new SPExport(exportSettings); 
                // Optionally add event handlers to the export
                // object for:
                    // Started
                    // ProgressUpdated
                    // Completed
                    // Canceled
                    // Error
                    // Compressing
                // Run the export
                   export.Run(); 
                   }
                // Catch any exceptions during export and output them
                   catch (Exception ex) 
                   {
                   Console.Error.Write(ex.ToString());
                   throw;
                }
            #endregion //Export

            // This region defines import settings, creates a new
            // SPImportObject with those settings, manages versioning
            // and caching, and applies appropriate conditions if the
            // object is a Web site or root Web site
            #region Import
            try
            {
                SPImportSettings importSettings = new SPImportSettings();
                // Turn on extra output for testing
                importSettings.CommandLineVerbose = true; 
                // IMPORTANT: retains object IDs
                importSettings.RetainObjectIdentity = true; 
                // The directory of the file being imported
                importSettings.FileLocation = @"%temp%"; 
                // The name of the file being imported
                importSettings.BaseFileName = "export.cmp";
                // The URL of the site into which content is being imported
                importSettings.SiteUrl = destinationUrl; 
                //Import all the security settings from the package
                importSettings.IncludeSecurity = SPIncludeSecurity.All;
                // Retain author name during import; change if needed
                importSettings.UserInfoDateTime = SPImportUserInfoDateTimeOption.ImportAll;
                // Don't fire event receivers during import; 
                // change if needed
                importSettings.SuppressAfterEvents = true;
                // Add new versions when importing items that 
                // already exist
                importSettings.UpdateVersions = SPUpdateVersions.Append; 
                // Create a new import object with specified settings
                SPImport import = new SPImport(importSettings); 
                // Turn down caching during the import
                  SiteCacheSettingsWriter.UpdateCacheSettingsDuringImport(importSettings.SiteUrl, true); 
                // Save the cache settings to restore after 
                // the import finishes
                savedCacheSettings = SiteCacheSettingsWriter.SaveCacheSettingsBeforeImport(importSettings.SiteUrl);
                // Change tokens for pre-import and post-import
                SPChangeToken startChangeToken, endChangeToken; 
                using (SPSite destinationSite = new SPSite(importSettings.SiteUrl))
                {
                    // Get the change token from the destination site
                    startChangeToken = destinationSite.CurrentChangeToken; 
                    // Save the root Web URL for future use
                    destinationRootWebUrl = destinationSite.RootWeb.ServerRelativeUrl; 
                }

                import.ObjectImported += new EventHandler<SPObjectImportedEventArgs>(import_ObjectImported);
                // Optionally add event handlers to the 
                // import object for:
                    // Started
                    // ProgressUpdated
                    // Completed
                    // Cancelled
                    // Error
                    // Uncompressing

                // Run the import
                import.Run();

                using (SPSite destinationSite = new SPSite(importSettings.SiteUrl))
                {
                    // Get the change token from the
                    // destination site AFTER import
                    endChangeToken = destinationSite.CurrentChangeToken; 

                    // Enable scheduling of the items just deployed
                    ScheduledItem.EnableSchedulingOnDeployedItems(destinationSite, startChangeToken, endChangeToken, "Succeeded");
                }
            }
            // Catch any exceptions during import and output them
            catch (Exception ex) 
            {
                Console.Error.Write(ex.ToString());
                throw;
            }
            finally
            {
                // Update the cache settings because import is done
                SiteCacheSettingsWriter.UpdateCacheSettingsDuringImport(destinationUrl, false);
            }
            #endregion
        }

        private static void import_ObjectImported(object sender, SPObjectImportedEventArgs e)
        {
            // Is the imported object a Web site?
            if ((e != null) && (e.Type == SPDeploymentObjectType.Web))
            {
                // Is the imported object the root Web site?
                if (string.Compare(e.TargetUrl, destinationRootWebUrl, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    // The root Web site is being imported, so restore
                    // the cache-related root Web site properties.
                    SiteCacheSettingsWriter.RestoreCacheSettingsOnImport(destinationUrl, savedCacheSettings);
                }
            }

            return;
        }
    }
}

Consulte também

Referência

Web

Outros recursos

A implantação de conteúdo entre servidores
Como a: implantar conteúdo entre servidores