sql server 拒绝了select权限

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 拒绝了select权限相关的知识,希望对你有一定的参考价值。

参考技术A

建议你这样试试看:

     查看登录的数据库用户是否具备select权限 登录sa账号来进行select

SharePoint 自定义 Web 部件在对象“xxx”、数据库“yyy”、所有者“dbo”上引发 SELECT 权限被拒绝

【中文标题】SharePoint 自定义 Web 部件在对象“xxx”、数据库“yyy”、所有者“dbo”上引发 SELECT 权限被拒绝【英文标题】:SharePoint Custom Web Part throws SELECT permission denied on object 'xxx', database 'yyy', owner 'dbo' 【发布时间】:2011-01-12 06:59:23 【问题描述】:

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

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

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

这是我在 LOG 文件中看到的内容:... SELECT permission denied on object 'xxx', database 'yyy', owner 'dbo' ...

Web 部件使用升级的权限访问数据库,即使用门户应用程序池服务帐户。此帐户具有访问数据库的适当权限。我不明白是什么导致了这个问题。

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

编辑:

在此处包含的注释中粘贴代码以添加格式:

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; 
     
);

【问题讨论】:

您是如何访问数据库的?可以发一些代码吗? 您在使用 SPSecurity.RunWithElevatedPrivileges 吗?从您的问题来看,我并不太清楚。 您在查询 SharePoint 数据库吗?如果是这样,强烈建议不要直接查询SP数据库。 Kyle Trauberman,我使用 Linq to Entities,这是代码 sn-p: SPSecurity.RunWithElevatedPrivileges(delegate() using (WAStockBinEntities context = new WAStockBinEntities()) var userStockBin = (from stockBins在 context.T1view_SP_StockBin where stockBins.ADName == currUserName select stockBins) .ToList().FirstOrDefault(); StockRoomNumber.Text = userStockBin.Stockroom; BinNumber.Text = userStockBin.BIN; ); JD,是的,我正在使用 SPSecurity.RunWithElevatedPrivileges 【参考方案1】:

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

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

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

【讨论】:

以上是关于sql server 拒绝了select权限的主要内容,如果未能解决你的问题,请参考以下文章

[Microsoft][ODBC SQL Server Driver][SQL Server]拒绝了对对象'用户信息'(数据库'lianxi',所有者'db

我在运行查询时启动了 RDS SQL Server(SQL Server Web 版)并抛出了权限被拒绝错误

Sql server 2008拒绝了对对象 'xx表' (数据库 'xx',架构 'dbo')的 SELECT 权限解决办法

SQL Server用户权限问题

sql2008拒绝了对对象 (数据库 ,架构'dbo')的SELECT权限

SQL server身份验证模式下登入,创建数据库报错:“master”拒绝了CREATE DATABASE权限问题