Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите разобраться в процедуре!!  [new]
Anna2013
Member

Откуда:
Сообщений: 37
Здравствуйте!Данная процедура связана с SharePoint, которая удаляет все права пользователям, а потом обратно прописывает, я не могу разобраться, где права прописываются обратно или здесь где-то ошибка?

USE [WSS_Content]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[proc_SecResetItemPerm2](
    @SiteId     uniqueidentifier,
    @WebId      uniqueidentifier,
    @Url        nvarchar(260),
    @DocId      uniqueidentifier,
    @NewScopeId uniqueidentifier = NULL OUTPUT,
    @RequestGuid uniqueidentifier = NULL OUTPUT)    
AS
    SET NOCOUNT ON
    DECLARE @OldScopeId   uniqueidentifier
    DECLARE @DirName  nvarchar(256)
    DECLARE @LeafName nvarchar(128)
    DECLARE @ParentDirName  nvarchar(256)
    DECLARE @ParentLeafName nvarchar(128)
    DECLARE @UrlLike nvarchar(1024)
    DECLARE @ListId     uniqueidentifier
    DECLARE @ThicketFlag bit
    DECLARE @ListBaseType int
    IF (@Url IS NOT NULL)
    BEGIN
        EXEC proc_SplitUrl @Url, @DirName OUTPUT, @LeafName OUTPUT
    END
    ELSE
    BEGIN
        SELECT TOP 1
            @DirName = D.DirName,
            @LeafName = D.LeafName,
            @Url = CASE WHEN (DATALENGTH(D.DirName) = 0) THEN D.LeafName WHEN (DATALENGTH(D.LeafName) = 0) THEN D.DirName ELSE D.DirName + N'/' + D.LeafName END
        FROM
            TVF_Docs_Id(@DocId) AS D
        WHERE
            D.SiteId = @SiteId   
    END
    SELECT TOP 1
        @OldScopeId  = D.ScopeId
    FROM
        TVF_Docs_Url(@SiteId, @DirName, @LeafName) AS D
    OUTER APPLY
        TVF_Lists_NoLock_CI(D.WebId, D.ListId) AS L
    OUTER APPLY
        TVF_AllListsAux_NoLock_ListId(L.tp_Id) AS ALAux    
    
    
    
    IF (@Url IS NOT NULL)
     BEGIN
        EXEC proc_SplitUrl @Url, @DirName OUTPUT, @LeafName OUTPUT
        SELECT TOP 1
            @ThicketFlag = D.ThicketFlag
        FROM
            TVF_Docs_Url(@SiteId, @DirName, @LeafName) AS D
    END
    ELSE
    BEGIN
        SELECT TOP 1
            @ThicketFlag = D.ThicketFlag,
            @DirName = D.DirName,
            @LeafName = D.LeafName,
            @Url = CASE WHEN (DATALENGTH(D.DirName) = 0) THEN D.LeafName WHEN (DATALENGTH(D.LeafName) = 0) THEN D.DirName ELSE D.DirName + N'/' + D.LeafName END
        FROM
            TVF_Docs_Id(@DocId) AS D
    END
    
    
    
    
    EXEC proc_EscapeForLike @Url, @UrlLike OUTPUT
    EXEC proc_SplitUrl @DirName, @ParentDirName OUTPUT, @ParentLeafName OUTPUT
    SELECT TOP 1
        @NewScopeId = D.ScopeId,
        @ListId = D.ListId
    FROM
        TVF_Docs_Url(@SiteId, @ParentDirName, @ParentLeafName) AS D
    IF @@ROWCOUNT = 0 OR @ListId IS NULL 
    BEGIN
        RETURN 3
    END
    DECLARE @RET int SET @RET = 0 BEGIN TRAN
    SELECT TOP 1
        @ListId = ALAux.ListID
    FROM
        TVF_AllListsAux_XLock_ListId(@ListId) AS ALAux
    SELECT TOP 1
        @ListBaseType = L.tp_BaseType 
    FROM
        TVF_Lists_CI(@WebId, @ListId) AS L
    UPDATE 
        W
    SET 
        W.CachedNavDirty =1 
    FROM
        TVF_Webs_SiteId(@SiteId) AS W
    DELETE
        RA
    FROM    
        TVF_RoleAssignment_SiteId_ScopeID(@SiteId, @OldScopeId) AS RA
    EXEC proc_SecUpdateDepsFromScope @SiteId, @OldScopeId
    EXEC proc_SecLogChange @SiteId, @WebId, @OldScopeId, NULL, NULL, NULL, 
            33554432, 1
    EXEC proc_SecLogChange @SiteId, @WebId, @OldScopeId, NULL, NULL, NULL, 
            41943040, 1
    EXEC proc_SecChangeSecurityScopeForFolderShared 
        @SiteId, @WebId, @ListId, @ListBaseType, @DirName, @LeafName, @Url, 
        @UrlLike, @ThicketFlag, @OldScopeId, @NewScopeId, 
        0  
    DELETE
        P
    FROM 
        TVF_Perms_ScopeId(@SiteId, @OldScopeId) AS P
    EXEC proc_SecUpdateListInternalFGP @SiteId, @WebId, @ListId, 1    
    EXEC proc_SecUpdateSiteLevelSecurityMetadata @SiteId, 1, 0
cleanup:
    IF (@RET <> 0 AND @@TRANCOUNT = 1) ROLLBACK TRAN ELSE COMMIT TRAN
    IF @RET <> 0
        RETURN @RET
    EXEC proc_GetAuditMaskSniffItemTypeInternal @SiteId, @DirName, @LeafName, @RequestGuid OUTPUT
    RETURN @RET


Сообщение было отредактировано: 17 сен 13, 11:53
17 сен 13, 11:51    [14848344]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в процедуре!!  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Добрый день, а код процедур proc_SplitUrl и других мы должны как-то угадать?:)
17 сен 13, 11:53    [14848357]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в процедуре!!  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Судя по названиям где-то здесь
    EXEC proc_SecUpdateListInternalFGP @SiteId, @WebId, @ListId, 1    
    EXEC proc_SecUpdateSiteLevelSecurityMetadata @SiteId, 1, 0
17 сен 13, 11:54    [14848372]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в процедуре!!  [new]
Glory
Member

Откуда:
Сообщений: 104751
Anna2013
которая удаляет все права пользователям, а потом обратно прописывает

Откуда вы знаете, что делает эта процедура ?

Anna2013
я не могу разобраться, где права прописываются обратно

Команд занесения данных в таблицы не так много - INSERT/UPDATE возможно MERGE
В предоставленном вами тексте только одна команда UPDATE
17 сен 13, 11:57    [14848399]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в процедуре!!  [new]
Anna2013
Member

Откуда:
Сообщений: 37
Glory,

У нас был программист, он оставил процедуру и в кратце сказал что она делает. Только вот когда её запускаем, там еще скрипт есть к ней, то права всеравно не прописываются.
17 сен 13, 12:01    [14848432]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в процедуре!!  [new]
Glory
Member

Откуда:
Сообщений: 104751
Anna2013
У нас был программист, он оставил процедуру и в кратце сказал что она делает.

В вашей процедуре еще с десяток процедур и таблиц

Anna2013
Только вот когда её запускаем, там еще скрипт есть к ней, то права всеравно не прописываются.

И вы хотите, чтобы кто-то разобрался во всем этом коде и структуре ?
17 сен 13, 12:02    [14848449]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в процедуре!!  [new]
Anna2013
Member

Откуда:
Сообщений: 37
Если это было бы возможным, то хотелось бы.
вот еще не хвотающих процедур
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[proc_SplitUrl](
@Url nvarchar(260),
@DirName nvarchar(256) OUTPUT,
@LeafName nvarchar(128) OUTPUT)
AS
SET NOCOUNT ON
DECLARE @iSlash int
SET @iSlash = CHARINDEX(N'/', REVERSE(@Url) COLLATE Latin1_General_BIN)
SET @DirName = dbo.fn_GetDirName(@Url, @iSlash)
SET @LeafName = dbo.fn_GetLeafName(@Url, @iSlash)


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[proc_EscapeForLike](
@Source nvarchar(260),
@Escaped nvarchar(1024) OUTPUT,
@AddTerminalWildcard bit = 1)
AS
SET NOCOUNT ON
SELECT @Escaped = dbo.fn_EscapeForLike(@Source, @AddTerminalWildcard)
RETURN 0
17 сен 13, 12:07    [14848488]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в процедуре!!  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Anna2013
вот еще не хвотающих процедур

Ага, которые тянут за собой ещё как минимум три:
fn_GetDirName
fn_GetLeafName
fn_EscapeForLike

С такой постановкой задачи вам лучше обратиться сюда.
17 сен 13, 12:29    [14848659]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в процедуре!!  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Anna2013
вот еще не хвотающих процедур

Да и эти тоже как бы не помешало бы...
 proc_SecUpdateDepsFromScope 
 proc_SecLogChange 
proc_SecLogChange 
 proc_SecChangeSecurityScopeForFolderShared 
 proc_SecUpdateListInternalFGP     
proc_SecUpdateSiteLevelSecurityMetadata 
 proc_GetAuditMaskSniffItemTypeInternal 

и скорее всего в каждой из них есть самописные функции... Поддержу предыдущего отвещающего. Тут достаточно долго надо корываться.
17 сен 13, 12:32    [14848680]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться в процедуре!!  [new]
Anna2013
Member

Откуда:
Сообщений: 37
Спасибо)теперь все поняла
17 сен 13, 12:56    [14848866]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить