Usuário com melhor resposta
Erro Procedure or function 'proc_AppendSiteQuota' expects parameter '@DocId', which was not supplied.

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...
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
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.,
-
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
-
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.
-