консольное приложение - объектная модель - отображение базы данных - PullRequest
1 голос
/ 14 января 2009

Я пытаюсь запустить консольное приложение, которое использует объектную модель SharePoint.

Я получаю сообщение об ошибке Невозможно открыть базу данных "dbname", запрошенную при входе в систему. Ошибка входа Ошибка входа для пользователя 'DOMAIN \ userid'.

В каком-то месте, которое я прочитал, пользователь должен иметь разрешение на базу данных контента.

Не могу найти статью, в которой объясняются какие разрешения для настройки. Мне нужно это как боеприпасы, чтобы пойти к моему парню из Sys Admin, чтобы получить настройки разрешения.

Где статья, которая объясняет это? Я искал в Google, но безуспешно.

Ответы [ 3 ]

0 голосов
/ 14 января 2009

ваш пользователь, вероятно, не имеет прав доступа к этим спискам или сетям. Вы можете запускать свой код с повышенными привилегиями, но иногда он может дать вам неожиданные результаты. Пример использования повышенных привилегий можно найти здесь

Или вы можете настроить пользователя, который запускает приложение консоли учетной записи как администратор семейства сайтов.

Ваш код, обновленный для работы с повышенными привилегиями, может выглядеть следующим образом:

private static void DisplayAllLists(string site, string webToOpen)
{
    try
    {
       SPSecurity.RunWithElevatedPrivileges(delegate() 
       {


          using ( SPSite siteCollection = new SPSite(site) )
          {
            try
            {
                using (SPWeb web = siteCollection.OpenWeb(webToOpen))
                {
                    SPListCollection lists = web.Lists;
                    foreach (SPList list in lists)
                    {
                        Console.WriteLine(string.Format("List Title: {0}", list.Title));
                    }
                }
             }
           }
           finally
            {
                siteCollection.RootWeb.Dispose();
                Console.ReadLine();
            }
        }

    }
    catch (Exception ex)
    {
        Console.WriteLine("Exception: "+ex.Message);
    }
}

Примечание: этот код был написан на моей голове, так что, возможно, что-то отсутствует ... вам придется попробовать это

0 голосов
/ 19 января 2009

RunWithElevatedPrivileges не помогает, потому что он просто меняет пользователя потока на идентификатор процесса - в консольном приложении это не имеет никакого эффекта, потому что они одинаковые. «Повышение» в олицетворенном веб-контексте работает, потому что удостоверение процесса - это учетная запись пула приложений, для которой в базе данных контента есть db_owner.

Если я спрашиваю, чтобы используемой учетной записи был предоставлен полный доступ в соответствии с Политиками для веб-приложений, это должно работать?

Не в соответствии с Исаи Саги: Код объектной модели и stsadm завершаются с ошибкой «Отказано в доступе» . Короче говоря, кажется, что разрешения db_owner для базы данных контента необходимы пользователю для запуска кода объектной модели (включая STSADM) без веб-контекста.

0 голосов
/ 14 января 2009

Запускаете ли вы консольное приложение на самом сервере? Я так полагаю.

В этом случае может возникнуть проблема с разрешениями учетной записи, которую вы используете (RDP?) На сервере. Ошибка в части базы данных может вводить в заблуждение, так как вам потребуется разрешение в самом SharePoint, который затем предоставит разрешения для базы данных.

Я бы попросил ваших системных администраторов создать для вас учетную запись службы, которой можно предоставить правильные права. (Администратор семейства сайтов часто требуется, но это зависит от кода внутри консольного приложения. Однако большинство из них предполагают наличие прав администратора семейства сайтов). Вы можете получить больше пробега от просмотра инструкций к приложению (или, если это ваш собственный код, просто обратитесь к администратору семейства сайтов)

Запуск консольного приложения немного сложнее, так что вам, возможно, повезет больше, если вы дадите системным администраторам приложение для запуска и инструкции ... хотя я сомневаюсь, что вы запускаете это в окне prod.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...