2010-10-25 4 views
1

Я работаю через образец приложения .Net MVC. Я добавил таблицы api для членства aspnet в существующую базу данных. Я изменил файл web.config следующим образом:Не удается открыть базу данных «База данных», запрошенную логином

<connectionStrings> 
    <add name="ApplicationServices" connectionString="Data Source=localhost;Initial Catalog=nerddinner;Integrated Security=True;User Instance=true" providerName="System.Data.SqlClient" /> 
    <add name="nerddinnerEntities" connectionString="metadata=res://*/Models.NerdDinner.csdl|res://*/Models.NerdDinner.ssdl|res://*/Models.NerdDinner.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=nerddinner;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

В моем фактическом применении тогда, если я хочу, чтобы зарегистрироваться в качестве пользователя, я получаю следующее исключение при нажатии кнопки отправить:

$exception {"Cannot open database \"nerddinner\" requested by the login. The login failed.\r\nLogin failed for user 'TaraW-PC\\TaraW'."} System.Exception {System.Data.SqlClient.SqlException} 

Я использую Visual Studio 2010 и SQL Server 2008. Когда я установил SQL Server, я установил экземпляр по умолчанию с проверкой подлинности Windows.

Я не изменил AccountModel.cs, который был автоматически создан в приложении MVC, однако книга подразумевает, что мне не нужно регистрировать нового пользователя.

бы я знал, что имел в виду трассировки стека, но для тех, кто знает, вот это:

[SqlException (0x80131904): Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'.] 
    System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +2030802 
    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +5009584 
    System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +234 
    System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2275 
    System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +215 
    System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +987 
    System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162 
    System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +178 
    System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +137 
    System.Web.Util.SecUtility.CheckSchemaVersion(ProviderBase provider, SqlConnection connection, String[] features, String version, Int32& schemaVersionCheck) +392 
    System.Web.Security.SqlMembershipProvider.CheckSchemaVersion(SqlConnection connection) +84 
    System.Web.Security.SqlMembershipProvider.CreateUser(String username, String password, String email, String passwordQuestion, String passwordAnswer, Boolean isApproved, Object providerUserKey, MembershipCreateStatus& status) +2517 
    NerdDinner.Models.AccountMembershipService.CreateUser(String userName, String password, String email) in C:\Users\TaraW\Documents\Visual Studio 2010\Projects\MVC\NerdDinner\NerdDinner\Models\AccountModels.cs:127 
    NerdDinner.Controllers.AccountController.Register(RegisterModel model) in C:\Users\TaraW\Documents\Visual Studio 2010\Projects\MVC\NerdDinner\NerdDinner\Controllers\AccountController.cs:93 
    lambda_method(Closure , ControllerBase , Object[]) +162 
    System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +51 
    System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +409 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +52 
    System.Web.Mvc.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() +127 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +436 
    System.Web.Mvc.<>c__DisplayClassf.<InvokeActionMethodWithFilters>b__c() +61 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +305 
    System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +830 
    System.Web.Mvc.Controller.ExecuteCore() +136 
    System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +111 
    System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +39 
    System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__4() +65 
    System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +44 
    System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +42 
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +141 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +54 
    System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) +40 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +52 
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +38 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8841105 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184 

ответ

2

Как правильно указано @no_one и проблема @Darkxes должна быть интегрированной проверки безопасности.

Try Exec:

exec sp_grantlogin 'TaraW-PC\TaraW' 
go 

use nerddinner 
go 

exec sp_grantdbaccess 'TaraW-PC\TaraW' 
go 
+0

@Nick, Спасибо за ответ. Я использовал инструмент aspnet_regsql.exe. Вот как я добавил дополнительные таблицы api членства (роли, членство, пользователи и т. Д.) В мою существующую базу данных nerddinner. – 109221793

+0

Но dbo.aspnet_CheckSchemaVersion определенно создается этим процессом. Может быть, вы зарегистрируете его для другой базы данных? Вы проверяете вручную через SQL Management Studio, есть ли хранимая процедура dbo.aspnet_CheckSchemaVersion в nerddinner? Вы можете проверить это через Server Explorer в VS тоже –

+0

Хммм, aspnet_SchemaVersions есть, но не aspnet_CheckSchemaVersion. Возможно, это другое имя? – 109221793

1

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

1

Поскольку вы работаете под интегрированной проверкой безопасности, выполните следующие действия.

Проверьте, имеет ли пользователь права на вход на сервер.

  1. Если вы используете Visual Studio Web сервера, если учетная запись, под которой вы работаете имеет разрешения на SQL Server и базы данных.

  2. Если вы работаете под IIS, если пул приложений, при которых ваше приложение работает имеет разрешения на сервере базы данных и базы данных.

+0

Привет @no_one, спасибо за ответ. На данный момент я просто запускаю приложение локально на своем собственном ноутбуке. Можете ли вы рассказать мне, как проверить разрешения, описанные в опции 1? – 109221793

+0

смотрите, можете ли вы подключиться к базе данных с помощью SQL Server Management Studio. Используйте пользователя TaraW-PC \\ TaraW. –

+0

Hi no_one, я могу подключиться к базе данных отлично, используя студию управления сервером sql – 109221793

Смежные вопросы