SharePoint自定义Web部件对对象'xxx',数据库'yyy',所有者'dbo'抛出SELECT权限

时间:2010-02-02 18:16:55

标签: c# .net sharepoint sharepoint-2007 web-parts

我在开发服务器上使用VS 2008在SharePoint 2007中创建了自定义Web部件。它使用SQL DB。使用我从备份客户端重新创建的测试数据库,我的服务器上的一切正常。

现在我将它移到客户的生产服务器上。我能够部署,安装和激活它。

但是当我尝试将Web部件添加到页面时,它会抛出一个对话框,其中包含“执行命令定义时发生错误。有关详细信息,请参阅内部异常”。

这是我在LOG文件中看到的: ...对象'xxx',数据库'yyy',所有者'dbo'...

拒绝SELECT权限

Web部件使用升级的priveleges访问数据库,即使用门户网站应用程序池服务帐户。此帐户具有访问数据库的适当权限。我不明白是什么原因造成的。

非常感谢任何帮助,找出导致错误的原因!

编辑:

此处包含的评论中粘贴的代码用于添加格式:

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 个答案:

答案 0 :(得分:1)

SPSecurity.RunWithElevatedPrivileges不会影响LINQ用于访问数据库的用户。我将查看LINQ用于访问数据库的连接字符串,并确保连接字符串中引用的用户具有数据库的权限

您可以通过调用数据上下文的Connection.ConnectionString属性来检查正在使用的连接字符串。

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