Вопрос

Я создаю новую аудиторию программно, но я хочу установить его guid по коду (мой собственный)

Это возможно сделать это?Если да, то как?

Это было полезно?

Решение

AudiodyID - это внутреннее поле, установленное SharePoint.Вы не можете его установить, но вы можете получить его, если он был сохранен в БД.

Каково ваше требование, которое означает, что вы должны контролировать идентификатор аудитории?Как правило, вы получите аудиторию по имени.Если вам нужно, чтобы вы могли получить доступ к значению аудиосистемы.

Надеюсь, что помогает.

Другие советы

Пожалуйста, напишите ссылку ниже Link Mr. Raju

http:// Социальные.Technet.microsoft.com/forums/da/sharepoint2010programming/thrad/181fdb91-b16d-4e51-a9a4-454c8ad1c374

Вы обнаружите, что это невозможно, потому что SharePoint управляет GUID внутренне.Так что вы не можете его назначить.В некоторых случаях это возможно, но в вашем случае это невозможно.

Я смог сделать это.Я создал пользовательскую хранимую процедуру (копируя и изменяя тот, который используется API для создания аудитории) для создания аудитории с нужным GUID.Посмотрите на Orgle Procs внутри профиля DB, чтобы увидеть, как это сделано.

В любом случае, как только я создал аудиторию с помощью proc.Я использовал центральный администратор, чтобы настроить правила.

В общем, возиться с базами данных SharePoint не рекомендуется.Будьте осторожны в этом.Всегда лучше использовать API.Это сказано, что это отработало отлично.Без вопросов.Хорошо проверено.

код:

--Created by James Hodges 10-19-2012
/****** Object:  StoredProcedure [dbo].[usp_AddAudience_Custom]    Script Date: 10/19/2012 08:52:19 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_AddAudience_Custom]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[usp_AddAudience_Custom]
GO


/****** Object:  StoredProcedure [dbo].[usp_AddAudience_Custom]    Script Date: 10/19/2012 08:52:19 ******/
SET ANSI_NULLS OFF
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[usp_AddAudience_Custom]
@AudienceID uniqueidentifier,
@OrgleName nvarchar(500),
@OrgleDescription nvarchar(1500) = NULL

AS

DECLARE
@correlationId uniqueidentifier,
@OrgleID uniqueidentifier,
@Error int,
@srError int,
@GroupType smallint,
@bRemove bit,
@OwnerAccountName nvarchar(400),
@partitionID uniqueidentifier

SET NOCOUNT ON

SET @correlationId = NEWID()
SET @GroupType = 2
SET @bRemove = 0
SET @OwnerAccountName = NULL
SET @partitionID = (SELECT TOP 1 PartitionID FROM Orgle_List WITH(NOLOCK) WHERE OrgleID = '00000000-0000-0000-0000-000000000000')  --JRH ..This worked for my company. If you have more than one partition you may need to edit this.


SELECT @Error = 1
--check the OrgleID: Note: we make the Audience Name unique across the board.
SELECT @OrgleID = OrgleID FROM Orgle_List WHERE OrgleName = @OrgleName AND PartitionID = @partitionID

IF @bRemove = 1
BEGIN
    IF @OrgleID IS NOT NULL
    BEGIN
        EXEC @Error =  Orgle_RemoveOrgle @partitionID, @OrgleID, @correlationId=@correlationId
    END
END
ELSE  -- add a new one
BEGIN
    SELECT @Error = 3

    IF @OrgleID IS NOT NULL -- can't create a duplicate orgle name
        GOTO CODE_EXIT

    SET @Error = 0
    BEGIN
        -- create the new orgle name
        SELECT @OrgleID = @AudienceID
        BEGIN TRANSACTION
        BEGIN
            INSERT INTO Orgle_List ( PartitionID, OrgleID, OrgleName, OrgleNameDescription, OwnerAccountName )
                VALUES ( @partitionID, @OrgleID, @OrgleName, @OrgleDescription, @OwnerAccountName )

            IF @@ROWCOUNT = 1
            BEGIN
                -- insert into stats
                DECLARE @UpdateTime as DATETIME
                    SET @UpdateTime = GETUTCDATE()
                -- insert into stats
                INSERT INTO Orgle_Stats 
                    (PartitionID, OrgleID, GroupType, CreateTime, LastPropertyUpdate, QueryCOunt, GroupCount, MembershipCount, OrgleLock) 
                    VALUES (@partitionID, @OrgleID, @GroupType, @UpdateTime, @UpdateTime, 0, 0, 0, 0)
                IF @@ROWCOUNT <> 1
                SET @Error = 3  
            END
            ELSE
                SET @Error = 3
        END
        IF @Error = 0
            COMMIT TRANSACTION
        ELSE
            ROLLBACK TRANSACTION
    END

END

CODE_EXIT:
    SELECT @Error AS ERROR, @OrgleID AS OrgleID

SET NOCOUNT OFF
GO
.

Вы можете указать аудиторию GUID в правиле аудитории.

$newrule = New-Object Microsoft.Office.Server.Audience.AudienceRuleComponent($property,"Not Contains","GUID");
[Void]$newaud.AudienceRules.Add($newrule);
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top