none
Erro Procedure or function 'proc_AppendSiteQuota' expects parameter '@DocId', which was not supplied. RRS feed

  • Pergunta

  • Boa tarde,

    Migrei o sharepoint da versão 2007 para a 2010, porém quando vou editar qualquer documento em uma lista é apresentado um erro e gerado esta mensagem no log do windows.

    Exceção SQL desconhecida 201. Informações adicionais sobre o erro do SQL Server estão incluídas abaixo.

    Procedure or function 'proc_AppendSiteQuota' expects parameter '@DocId', which was not supplied

    Detalhe, tenho uma base teste IGUAL e lá isto nao ocorre...
    quarta-feira, 9 de janeiro de 2013 18:45

Respostas

  • Gustavo,

    Eu achei super interessante quando fiz um Bing, um search no Technet e um Google e praticamente a única referência é esse seu post. É bem particular.

    Resolvi dar uma olhada na stored procedure nos bancos aqui (olhei em 10 deles) e invariavelmente o código é o mesmo. 

    O fato de sua instalação estar reclamando da ausência de um parâmetro que não está lá na versão original Isso significa que houve modificação desta stored procedure. Você precisa verificar se tem alguma aplicação (features, sites, etc.) que modificou essa procedure.

    Você pode comparar as duas stored procedures entre sua instalação de teste (que funciona) e a de produção (que não funciona). Eu sugiro aplicar a de teste em produção.

    Segue abaixo o código original para referência. Não esqueça de marcar este post como respondido se essas dicas resolverem seu problema.

    ALTER PROCEDURE [dbo].[proc_AppendSiteQuota]
        @SiteId uniqueidentifier,
        @cbDelta bigint,
        @UpdateTimeStamp bit
    AS
        SET NOCOUNT ON
        DECLARE @SessionID smallint
        SET @SessionID = @@SPID
        IF @SessionID IS NULL
            SET @SessionID = 0
        IF @cbDelta IS NULL
            SET @cbDelta = 0
        IF NOT EXISTS (
            SELECT TOP 1
                1
            FROM
                TVF_SiteQuota_CI(@SiteId, @SessionID) AS SQ)
        BEGIN        
            INSERT INTO SiteQuota
                (SiteId, DiskUsed, UpdateTimeStamp, SessionId)
            VALUES
                (@SiteId, @cbDelta, @UpdateTimeStamp, @SessionID)
        END
        ELSE
        BEGIN
            SET ROWCOUNT 1
            UPDATE 
                SQ
            SET 
                DiskUsed = DiskUsed + @cbDelta,
                UpdateTimeStamp = CASE WHEN @UpdateTimeStamp = 1 THEN 1
                           ELSE UpdateTimeStamp END
            FROM
                TVF_SiteQuota_CI(@SiteId, @SessionID) AS SQ
            SET ROWCOUNT 0
        END


    Armando Lacerda

    • Marcado como Resposta Gustavo Mognon terça-feira, 22 de janeiro de 2013 09:43
    terça-feira, 22 de janeiro de 2013 04:01

Todas as Respostas

  • Algumas perguntas para que possa te ajudar:

    1. você comenta que tem uma base igual e o problema não ocorre. Esta outro base está no mesmo farm ou outro farm?

    2. Quando você acessa o Central Adminsitratiom -> System Setings -> Manage Servers in the farm, para algum servidor, mostra o status "Upgrade Available" ou qualquer outro diferente de "No action required"?

    3. Você já tentou criar um novo web application e vincular esta base a este novo web application?

    Att.,

    segunda-feira, 21 de janeiro de 2013 12:55
  • Gustavo,

    Eu achei super interessante quando fiz um Bing, um search no Technet e um Google e praticamente a única referência é esse seu post. É bem particular.

    Resolvi dar uma olhada na stored procedure nos bancos aqui (olhei em 10 deles) e invariavelmente o código é o mesmo. 

    O fato de sua instalação estar reclamando da ausência de um parâmetro que não está lá na versão original Isso significa que houve modificação desta stored procedure. Você precisa verificar se tem alguma aplicação (features, sites, etc.) que modificou essa procedure.

    Você pode comparar as duas stored procedures entre sua instalação de teste (que funciona) e a de produção (que não funciona). Eu sugiro aplicar a de teste em produção.

    Segue abaixo o código original para referência. Não esqueça de marcar este post como respondido se essas dicas resolverem seu problema.

    ALTER PROCEDURE [dbo].[proc_AppendSiteQuota]
        @SiteId uniqueidentifier,
        @cbDelta bigint,
        @UpdateTimeStamp bit
    AS
        SET NOCOUNT ON
        DECLARE @SessionID smallint
        SET @SessionID = @@SPID
        IF @SessionID IS NULL
            SET @SessionID = 0
        IF @cbDelta IS NULL
            SET @cbDelta = 0
        IF NOT EXISTS (
            SELECT TOP 1
                1
            FROM
                TVF_SiteQuota_CI(@SiteId, @SessionID) AS SQ)
        BEGIN        
            INSERT INTO SiteQuota
                (SiteId, DiskUsed, UpdateTimeStamp, SessionId)
            VALUES
                (@SiteId, @cbDelta, @UpdateTimeStamp, @SessionID)
        END
        ELSE
        BEGIN
            SET ROWCOUNT 1
            UPDATE 
                SQ
            SET 
                DiskUsed = DiskUsed + @cbDelta,
                UpdateTimeStamp = CASE WHEN @UpdateTimeStamp = 1 THEN 1
                           ELSE UpdateTimeStamp END
            FROM
                TVF_SiteQuota_CI(@SiteId, @SessionID) AS SQ
            SET ROWCOUNT 0
        END


    Armando Lacerda

    • Marcado como Resposta Gustavo Mognon terça-feira, 22 de janeiro de 2013 09:43
    terça-feira, 22 de janeiro de 2013 04:01
  • Bom dia Armando.

    Primeiramente quero agradecer pela sua resposta!

    Sim, realmente utilizo um software de terceiros chamado "Insight Server For Sharepoint Foundation 2010".

    É um software da Siemens, além dele instalar algumas features no Sharepoint, ele cria um Full Text Catalog na base wss_content. Fiz as simulações aqui e realmente o problema passa a ocorrer depois que ele cria o full text.

    Aqui esta o meu proc_AppendSiteQuota

    USE [WSS_Content]
    GO
    /****** Object:  StoredProcedure [dbo].[proc_AppendSiteQuota]    Script Date: 01/22/2013 07:35:22 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[proc_AppendSiteQuota]
        @SiteId uniqueidentifier,
        @cbDelta bigint,
        @UpdateTimeStamp bit,
        @DocId uniqueidentifier
    AS
        SET NOCOUNT ON
        DECLARE @SessionID smallint
        SET @SessionID = @@SPID
        IF @SessionID IS NULL
            SET @SessionID = 0
        IF @cbDelta IS NULL
            SET @cbDelta = 0
        IF NOT EXISTS (
            SELECT TOP 1
                1
            FROM
                TVF_SiteQuota_SMOpCode(@SiteId, @SessionID, 0) AS SQ)
        BEGIN        
            INSERT INTO SiteQuota
                (SiteId, DiskUsed, UpdateTimeStamp, SessionId)
            VALUES
                (@SiteId, @cbDelta, @UpdateTimeStamp, @SessionID)
        END
        ELSE
        BEGIN
            SET ROWCOUNT 1
            UPDATE 
                SQ
            SET 
                DiskUsed = DiskUsed + @cbDelta,
                UpdateTimeStamp = CASE WHEN @UpdateTimeStamp = 1 THEN 1
                           ELSE UpdateTimeStamp END
            FROM
                TVF_SiteQuota_SMOpCode(@SiteId, @SessionID, 0) AS SQ
            SET ROWCOUNT 0
        END
        IF @DocId IS NOT NULL
        BEGIN
            EXEC proc_AddStorageMetricsChange @SiteId, @DocId, @cbDelta, @UpdateTimeStamp
        END

    

    Há divergências entre a original e a minha.

    Aplicando a atualização de dezembro ele corrige o meu problema. Cabe descobrir agora como criar o full text e não alterar a procedure!

    Obrigado Armando.

    terça-feira, 22 de janeiro de 2013 09:43
  • Maravilha! 

    Fico feliz por poder ter ajuda, Gustavo.

    Paz.


    Armando Lacerda

    terça-feira, 22 de janeiro de 2013 16:43