Я работаю в течение последних 7 месяцев на С# ASP.NET, используя Visual Studio 2008 и SQL Server 2008.
Сегодня я выполнял часть моего приложения, которое ранее выполнялось, и я получил следующую ошибку:
Разрешение SELECT было отклонено для объекта "Адрес", базы данных "CNET_85731", схемы "dbo".
Я прошел через свой код и обнаружил, что эта ошибка вызвана в следующем элементе управления пользователя:
protected void sdsAddressesList_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
{
ddlAddresses.Items.Insert((0), new ListItem("No Billing Addresses", "0"));
}
}
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>
В принципе, что делает элемент управления, это получить список адресов для зарегистрированного пользователя из таблицы [Адрес], а затем заполнить выпадающий список ddlAddresses.
Таблица адресов имеет все те же права, что и остальные таблицы в базе данных. У меня около 60 таблиц и около 200 хранимых процедур, которые весело работают с SELECT и т.д. Нет проблем. Кроме этого одного вопроса. Что происходит? Я не внес никаких изменений в разрешения базы данных или таблицы.
Кто-нибудь может мне помочь.
Привет
Вальтер