Wal*_*art 23 c# asp.net-3.5 sql-server-2008
我使用Visual Studio 2008和SQL Server 2008在C#ASP.NET上工作了7个月.
今天,我正在运行以前运行的应用程序的一部分,我收到以下错误:
对象'地址',数据库'CNET_85731',架构'dbo'上的SELECT权限被拒绝.
我浏览了我的代码并发现此错误是由以下用户控件引起的:
protected void sdsAddressesList_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
{
ddlAddresses.Items.Insert((0), new ListItem("No Billing Addresses", "0"));
}
}
Run Code Online (Sandbox Code Playgroud)
SQLDataSource定义如下:
<asp:SqlDataSource ID="sdsAddressesList" runat="server" OnSelecting="sdsAddressesList_Selecting" OnSelected="sdsAddressesList_Selected"
SelectCommand="SELECT [AddressId], [ZipPostalCode], ZipPostalCode + ' -- ' + Address1 AS CombinedAddress FROM [Address] WHERE ([CustomerID] = @CustomerID AND [IsBillingAddress] = @IsBillingAddress) ORDER BY [ZipPostalCode]"
ConnectionString="<%$ ConnectionStrings:eCoSysConnection %>">
<SelectParameters>
<asp:Parameter Name="CustomerID" Type="Int32" />
<asp:Parameter Name="IsBillingAddress" Type="Boolean" />
</SelectParameters>
</asp:SqlDataSource>
Run Code Online (Sandbox Code Playgroud)
基本上,控件执行的操作是从[Address]表中检索登录用户的地址列表,然后填充下拉列表ddlAddresses.
Address表具有与数据库中其余表相同的权限.我有大约60个表和大约200个存储过程都快乐地做SELECTs等工作.没问题.除了这一个问题.到底是怎么回事?我没有对数据库或表权限进行任何更改.
任何人都可以帮助我.
问候
沃尔特
san*_*ula 61
正如问题所述,"对象'地址',数据库'CNET_85731',架构'dbo'"拒绝了SELECT权限.
我想你可以简单地解决这个问题:
现在,我希望你不要再犯这个错误.
小智 14
好吧,我不确定你的数据库用户拒绝SELECT权限的根本原因是什么,但是如果你运行它然后它确实再次工作,那么在某个地方,你的SELECT权限确实被删除了.
GRANT SELECT ON [dbo].[Address] TO [your user name here]
Run Code Online (Sandbox Code Playgroud)
好消息是权限不会神奇地消失; 坏消息是(工具或其他方面)确实要么删除或撤销权限.
我认为我们没有足够的信息来回答你关于"为什么"它发生的问题 - 尽管你发布的内容似乎都不是罪魁祸首.