프로필이 삭제되고 복원 된 후 SharePoint "My Links"를 어떻게 되 찾을 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1506327

문제

우리는 SharePoint 2007 SP1을 실행하고 있으며 프로파일은 Active Directory에서 가져옵니다 (전체 가져 오기는 매일 실행됩니다). 우리는 많은 사용자가 Active Directory에서 의도 대비 비활성화 된 문제가 있었기 때문에 SharePoint에서 프로필을 제거했습니다. 우리는 그들의 Active Directory 계정을 다시 활성화하고 SharePoint 프로파일을 복원하는 전체 가져 오기를 실행했습니다. 그러나 모든 링크가 누락되었습니다. 복원 방법이나 모범 사례가 있습니까?

도움이 되었습니까?

해결책

어디서나 내 문제에 대한 답을 찾을 수 없었기 때문에 이것을 게시했습니다. Joel Oleson 의이 게시물 그것은 비슷한 문제를 설명하여 누락 된 데이터를 찾는 곳에 대한 힌트를 주었다. 그리고 Corey Roth 의이 게시물 내 링크 사용자에게 링크를 프로그래밍 방식으로 추가하는 방법을 보여주었습니다.

먼저 먼저 - My Links 데이터가 포함 된 데이터베이스의 백업을 복원해야합니다. 작업 데이터베이스를 통해 복원하고 싶지 않으며 다른 위치로 복원하고 싶습니다. SSP 데이터베이스에 저장된 링크. (Central Admin -> Shared Services Admin으로 이동하여 데이터베이스 이름을 찾은 다음 SSP의 메뉴를 열고 속성 편집을 클릭 할 수 있습니다. SSP 데이터베이스는 속성 페이지에 나열되어 있습니다.)

데이터베이스가 복원되면 링크 정보를 검색하려고합니다.

  • 링크를 소유 한 사용자의 도메인 계정 이름
  • 링크의 URL
  • 링크의 이름

이 쿼리는 해당 정보를 얻을 수 있습니다.

SELECT UPF.NTName, UL.Url, UL.Title
FROM UserLinks UL INNER JOIN UserProfile_full UPF ON UL.recordID = UPF.recordID
INNER JOIN UserPrivacyPolicy UPP ON UL.PolicyId = UPP.id
ORDER BY NTName

(링크가 어떤 그룹이나 어떤 개인 정보 보호 수준으로 설정되었는지 고려하지 않았으므로 사용자 프리 바이 립 폴리 티 테이블의 정보를 보면 해당 정보를 찾을 수 있습니다).

결과를 Excel로 복사하고 .CSV 파일 (Comma 분리 목록)으로 저장했습니다. 제작 서버가 데이터베이스를 복원 한 위치에 액세스 할 수 없었기 때문입니다. 제목에 쉼표가 포함되어 있기 때문에 제목으로 열을 마지막으로 주문했습니다. (나는 확인했고 다른 두 분야에는 쉼표가 포함되어 있지 않습니다.이 가정을하기 전에 확인해야합니다.)

그런 다음 데이터를 가져 오기 위해 작은 콘솔 앱을 작성했습니다. 두 가지 논쟁이 필요합니다.

  • 모든 링크가 포함 된 파일이있는 경로 (예 : C : temp links.csv)
  • 내 링크와 함께 SSP의 URL이 누락되었습니다 (즉 https://portal.mydomain.com)

이들은 사용 된 참조입니다.

  • Microsoft.office.server (C : Program Files Common Files Microsoft Shared Web Server Extensions 12 Isapi Microsoft.office.server.dll)
  • Microsoft.sharePoint (C : Program Files Common Files Microsoft Shared Web Server Extensions 12 Isapi Microsoft.sharepoint.dll)
  • 체계
  • System.Data
  • System.Web
  • System.xml

그리고 이것은 코드입니다.

using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server;
using Microsoft.Office.Server.UserProfiles;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using System.Web;

namespace UserLinks
{
    class Program
    {
        static void Main(string[] args)
        {
            string _accountName = "", _linkTitle = "", _url = "", _tmp = "", _path = "", _SPSsite = "";

            // Check arguments
            if (args.Length != 2)
            {
                ShowUsage();
                return;
            }

            _path = args[0];
            _SPSsite = args[1];

            using (SPSite _site = new SPSite(_SPSsite))
            {
                ServerContext _context = ServerContext.GetContext(_site);
                UserProfileManager _userProfileManger = new UserProfileManager(_context);

                /* Expecting a comma seperated list with 3 columns:  
                 * AccountName in the format Domain\Account name - I am assuming there are no commas in this field
                 * URL - I am assuming there are no commas in this field
                 * Link Title - link title is last because there may be commas in the title
                */
                TextReader _reader = new StreamReader(_path, System.Text.Encoding.Default);
                while (_reader.Peek() != -1)
                {
                    _tmp = _reader.ReadLine();
                    _accountName = _tmp.Substring(0, _tmp.IndexOf(','));
                    _tmp = _tmp.Replace(_accountName + ",", "");
                    _url = _tmp.Substring(0, _tmp.IndexOf(','));
                    _linkTitle = _tmp.Replace(_url + ",", "");

                    try
                    {
                        UserProfile _currentUser = _userProfileManger.GetUserProfile(_accountName);
                        QuickLinkManager _quickLinkManager = _currentUser.QuickLinks;
                        _quickLinkManager.Create(_linkTitle, _url, QuickLinkGroupType.General, null, Privacy.Private);  //I am assuming that all links have no group assigned to them and they are all private links
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(_accountName);
                        Console.WriteLine(ex);
                    }

                }
                _reader.Close();

            }
        }

        private static void ShowUsage()
        {
            Console.WriteLine("Usage");
            Console.WriteLine("UserLinks [FilePath] [SharePoint URL]");
        }

    }
}

따라서 문제 해결 및 부수적 이점으로,이 프로그램은 링크가 사용자의 My Links 목록에 표시되도록 강제로 사용될 수 있습니다.

다른 팁

이 게시물은 MyLinks와 SSP 데이터베이스와의 관계에 대한 아주 좋은 정보를 가지고 있습니다 (실제로 이러한 링크가 반자체로 저장되는 곳입니다.) DBA가 이러한 링크가 여전히 존재하는지 확인할 수 있기를 바랍니다. 그리고 그들은 올바른 프로파일과 관련이 있습니다.

http://www.k2distillery.com/2009/01/moving-sharepoint-my-links-between-ssps.html

프로필 가져 오기를하면 일반적으로 기존 사용자 정의/업데이트 된 정보를 잃을 위험이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top