Пользовательская веб-часть SharePoint выдает разрешение SELECT, запрещенное для объекта «xxx», базы данных «yyy», владельца «dbo» - PullRequest
1 голос
/ 02 февраля 2010

Я создал пользовательскую веб-часть в SharePoint 2007 с использованием VS 2008 на сервере dev. Он использует базу данных SQL. Все отлично работает на моем сервере с тестированием БД, которое я воссоздал из клиента резервного копирования.

Теперь я перенес его на рабочий сервер клиентов. Я смог развернуть, установить и активировать его.

Но когда я пытаюсь добавить веб-часть на страницу, появляется диалоговое окно с сообщением «Произошла ошибка при выполнении определения команды. Подробности см. Во внутреннем исключении».

Вот что я вижу в файле LOG: ... Отказано в разрешении SELECT для объекта 'xxx', базы данных 'yyy', владельца 'dbo' ...

Веб-часть обращается к БД с использованием расширенных привилегий, т. Е. С использованием учетной записи службы пула приложений портала. Эта учетная запись имеет соответствующие права для доступа к БД. Я не понимаю, что может вызвать проблему.

Любая помощь в выяснении причин ошибки очень ценится!

EDIT:

Код, вставленный в комментарий для добавления форматирования:

SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 
    using (WAStockBinEntities context = new WAStockBinEntities()) 
    { 
        var userStockBin = (from stockBins in context.T1view_SP_StockBin 
                            where stockBins.ADName == currUserName 
                            select stockBins) .ToList().FirstOrDefault(); 

        StockRoomNumber.Text = userStockBin.Stockroom; 
        BinNumber.Text = userStockBin.BIN; 
    } 
});

1 Ответ

1 голос
/ 03 февраля 2010

SPSecurity.RunWithElevatedPrivileges не влияет на пользователя, которого LINQ использует для доступа к базе данных. Я хотел бы посмотреть на строку подключения, которую LINQ использует для доступа к базе данных, и убедиться, что у пользователя, на которого есть ссылка в строке подключения, есть разрешения на базу данных

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

using (WAStockBinEntities context = new WAStockBinEntities()) 
{ 
    return context.Connection.ConnectionString;
}
...