Artigo: 936759 - Última revisão: quinta-feira, 1 de Maio de 2008 - Revisão: 2.2

Não são enviadas notificações por correio electrónico de alertas quando conteúdo numa lista migrada ou numa biblioteca de documentos migrados alterado depois de efectuar uma migração de base de dados para actualizar para o Windows SharePoint Services 3.0

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Considere o seguinte cenário. Efectuar uma migração de base de dados para actualizar o Microsoft Windows SharePoint Services 2.0 para o Microsoft Windows SharePoint Services 3.0. Para efectuar este procedimento, implementar o Windows SharePoint Services 3.0. Em seguida, adicione as bases de dados de conteúdos as aplicações Web no novo ambiente do Windows SharePoint Services 3.0.

No entanto, após a migração, Windows SharePoint Services 3.0 não envia notificações de correio electrónico quando conteúdo alterado numa lista migrada ou numa biblioteca de documentos migrados. Utilizadores detectar os seguintes sintomas:
  • Os utilizadores não recebem notificações de correio electrónico para alertas existentes para obter uma lista ou para uma biblioteca de documentos foi migrada a partir do Windows SharePoint Services 2.0.
  • Os utilizadores não recebem notificações de correio electrónico para novos alertas que criam para obter uma lista ou para uma biblioteca de documentos foi migrada a partir do Windows SharePoint Services 2.0. Para receber notificações por correio electrónico, o utilizador tem de eliminar o alerta existente. Em seguida, o utilizador tem de criar um novo alerta.
Além disso, se activar o rastreio de verbose, é registada uma mensagem de erro semelhante à seguinte no ficheiro de registo Uls:
Excepção FileNotFound

Causa

Este problema ocorre se o URL do servidor Windows SharePoint Services 2.0 for diferente do URL do servidor Windows SharePoint 3.0. Por exemplo, este problema ocorre se o URL do servidor Windows SharePoint Services 3.0 é http:// ServerName Version3 e o URL do servidor Windows SharePoint Services 2.0 é http:// ServerName Version2.

A tabela ImmedSubscription no base de dados de conteúdos tem uma coluna Siteurl . Se o valor na coluna Siteurl não coincidir com o URL da aplicação Web, o Windows SharePoint Services não envia notificações de correio electrónico quando o conteúdo numa lista ou uma alteração de biblioteca de documento.

Como contornar

Para contornar este problema, utilize um dos seguintes métodos.

Método 1: Utilizar o novo comando "stsadm -o updatealert"

O novo comando stsadm -o updatealert foi disponibilizado no Toolkit de administração do SharePoint. Para mais informações e para transferir o toolkit, visite um dos seguintes Web sites da Microsoft, dependendo da versão do Windows SharePoint Services que está a ser executado.

Toolkit de administração do SharePoint x 64

http://www.microsoft.com/downloads/details.aspx?FamilyId=F8EEA8F0-FA30-4C10-ABC9-217EEACEC9CE&displaylang=en (http://www.microsoft.com/downloads/details.aspx?FamilyId=F8EEA8F0-FA30-4C10-ABC9-217EEACEC9CE&displaylang=en)

Toolkit de administração do SharePoint x 86

http://www.microsoft.com/downloads/details.aspx?FamilyId=263CD480-F6EB-4FA3-9F2E-2D47618505F2&displaylang=en (http://www.microsoft.com/downloads/details.aspx?FamilyId=263CD480-F6EB-4FA3-9F2E-2D47618505F2&displaylang=en)
Para mais informações, consulte a documentação técnica "Microsoft SharePoint administração Toolkit". Para o fazer, visite o seguinte Web site da Microsoft:
http://go.microsoft.com/fwlink/?LinkId=117212&clcid=0x409 (http://go.microsoft.com/fwlink/?LinkId=117212&clcid=0x409)

Método 2: Utilizar o código para actualizar os URL

Utilize o seguinte código para actualizar os URL de alertas na coluna da tabela ImmedSubscription a base de dados conteúdo Siteurl .

A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento. No entanto, não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.
///
///  This source code is freeware and is provided on an "as is" basis without warranties of any kind, 
///  whether express or implied. This includes without limitation warranties that the code is free of defect, 
///  fit for a particular purpose or non-infringing.  The whole risk as to the quality and performance of 
///  the code is with the end-user.
///

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

namespace V3UpdateAlerts
{
    class V3UpdateAlerts
    {
        static void Main(string[] args)
        {
            string strSiteCollection = string.Empty;

            // First (and only) argument is the URL to the Site Collection
            if (args.Length > 0)
            {
                strSiteCollection = args[0];

                try
                {
                    using (SPSite spsitecol = new SPSite(strSiteCollection))
                    {
                        using (SPWeb sprootweb = spsitecol.RootWeb)
                        {
                            ListAndFixAlerts(sprootweb);
                        } // using sprootweb
                    } // using spsitecol
                }
                catch (System.IO.FileNotFoundException ioex)
                {
                    Console.WriteLine("Could not access Site Collection: {0}", ioex.Message);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("An unexpected error occurred: {0}", ex.Message);
                } // try
            }
            else
                Console.WriteLine("No Site Collection URL was specified.");
        }

        //Enumerates all Alerts present on a Site Collection and modifies them
        //so that wrong information (for example, in the SiteUrl column) is corrected.
        static void ListAndFixAlerts(SPWeb spweb)
        {
            Console.WriteLine("\n{0} Alert(s) for site: {1} ({2})", spweb.Alerts.Count, spweb.Title, spweb.Url);

            foreach (SPAlert alert in spweb.Alerts)
            {
                try
                {
                    Console.WriteLine(" {2} Alert \"{0}\" for user \"{1}\" \n  (Id: {3})\n", alert.Title, (alert.User != null ? alert.User.Name : "<unknown>"), alert.AlertFrequency.ToString(), alert.ID.ToString());

                    //Preserve the initial Alert frequency (Immed., Daily, Weekly).
                    SPAlertFrequency afPrevious = alert.AlertFrequency;

                    //Change the Alert frequency so the datarow inside
                    //is touched by SharePoint API.
                    if (afPrevious == SPAlertFrequency.Immediate)
                        alert.AlertFrequency = SPAlertFrequency.Weekly;
                    else
                        alert.AlertFrequency = SPAlertFrequency.Immediate;

                    try
                    {
                        alert.Update();

                        //Change the Alert frequency back to the initial state.
                        alert.AlertFrequency = afPrevious;
                        alert.Update();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(" -> Error changing Alert. {0}", ex.Message);
                    } // inner try
                }
                catch (Exception ex)
                {
                    Console.WriteLine(" An unexpected error occurred while accessing the Alert object: {0}", ex.Message);
                } // outer try
            } // foreach alert

            //Handle all Sub-Webs recursively.
            if (spweb.Webs.Count > 0)
            {
                for(int i = spweb.Webs.Count -1; i >= 0; i--)
                {
                    using(SPWeb spsubweb = spweb.Webs[i])
                    {
                        ListAndFixAlerts(spsubweb);
                    } // using spsubweb
                } //for subwebs
            } //if has subweb
        }
    }
}

Mais Informação

Para obter mais informações sobre como actualizar para o Windows SharePoint Services 3.0, visite o seguinte Web site da Microsoft:
http://technet2.microsoft.com/windowsserver/WSS/en/library/91046a84-57a1-40cb-a32c-ff3395073dc91033.mspx (http://technet2.microsoft.com/windowsserver/WSS/en/library/91046a84-57a1-40cb-a32c-ff3395073dc91033.mspx)

A informação contida neste artigo aplica-se a:
  • Microsoft Windows SharePoint Services 3.0
Palavras-chave: 
kbmt kbtshoot kbexpertiseinter kbprb KB936759 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 936759  (http://support.microsoft.com/kb/936759/en-us/ )