asp.net/sql server / iis разрешения - PullRequest
1 голос
/ 01 января 2012

Я занимаюсь разработкой веб-приложения ASP.NET, которому необходим доступ к базе данных SQL Server. Сервер, на котором должно работать приложение, работает под управлением Windows Server 2000, SQL Server 2000, IIS6 и .NET 2.0.

Если я запускаю веб-приложение на своем компьютере с Visual Web Developer 2010 с тестирующим веб-сервером в Visual Studio, но обращаюсь к базе данных на реальном веб-сервере, оно работает нормально. Тем не менее, если я помещаю это приложение на настоящий веб-сервер и пытаюсь получить к нему доступ через браузер, я получаю сообщения об ошибках, в которых говорится, что у меня нет доступа к этим таблицам.

Есть две таблицы, к которым мое приложение должно получить доступ. В одном из них я изменил разрешения в SQL Management Studio, чтобы позволить публичной группе выбирать разрешения, и это решило проблему. На другой таблице (очень большой стол) я попытался сделать то же самое, но получил ошибку, сообщающую, что истекло время ожидания блокировки таблицы. Есть ли способ изменить это время ожидания или другой способ изменить разрешения?

Я не думаю, что мне даже придется менять разрешения, потому что на этом сервере есть классические приложения ASP, которые обращаются к тем же таблицам. Я думаю, что проблема в том, что пользователь используется для доступа к таблицам. Если я могу получить доступ к таблицам, на которых запущено веб-приложение, с моего компьютера, и классические приложения ASP на сервере могут получить к ним доступ, но мое приложение ASP.NET не может, мое приложение ASP.NET должно использовать другую учетную запись пользователя. Как я могу проверить это и внести необходимые изменения?

Ответы [ 2 ]

1 голос
/ 02 января 2012

Относительно ошибки вашего разрешения, возможно, это связано с тем, что на вашем компьютере приложение обращается к базе данных с вашими разрешениями, используя встроенный вход Windows.

Обычно веб-приложение должно обращаться к базе данных с помощью технического пользователя., это указано в файле web.config, в разделе строк подключения.Это что-то вроде

<configuration>
  <connectionStrings>
    <add name="myConnsStr" connectionString="server=myserver.example.com;database=mydatabase;uid=tech_account;pwd=tech_account_password" providerName="System.Data.SqlClient" />
  </connectionStrings>
...
</configuration>

Как выглядит ваш файл?

Для другого, да, измените разрешение в T-SQL.Если вы не уверены, как это сделать, внесите изменения в конструкторе, затем, прежде чем нажать кнопку «ОК», используйте кнопку «Сценарий» в области заголовка.Запишите изменения в буфер обмена и попробуйте запустить в новом окне запроса.Вы можете поиграть с таймаутами запроса в диалоге настроек.

0 голосов
/ 01 января 2012

Вы можете попробовать установить тайм-аут блокировки на -1 (это означает, что он никогда не прекратится)

SET LOCK_TIMEOUT -1
GO

И вы также можете попробовать добавить разрешения, используя запрос

sp_addrolemember @rolename = 'db_datareader', @membername = 'YourAspApp'

Вы также можете попробовать изменить своего пользователя asp.net в строке подключения asp.net на пользователя, который уже имеет права выбора.

Дайте мне знать, если что-то из этого сработало, это хорошее место для начала =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...