Le pool d'applications IIS s'exécutant sous le service réseau ne peut pas se connecter à SQL Server

Je viens de déployer une application ASP.NET MVC 4 sur IIS 7, mais lorsque je la search, j'obtiens l'erreur suivante:

Cannot open database "PCSPI" requested by the login. The login failed. Login failed for user 'NT AUTHORITY\SYSTEM'. 

Et quand je change l'identité du pool d'applications en networkService, j'obtiens:

 Exception Details: System.Data.SqlClient.SqlException: Login failed for user 'WORKGROUP\OSCAR-PC$'. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Data.SqlClient.SqlException: Cannot open database "PCSPI" requested by the login. The login failed. Login failed for user 'NT AUTHORITY\SYSTEM'. Source Error: Line 23: Line 24: //* Role initialization method Line 25: WebSecurity.InitializeDatabaseConnection( Line 26: "DatabaseConnection", Line 27: "UserProfile", Source File: c:\Users\OSCAR\Documents\Visual Studio 2012\Projects\PCSPI\WebUI\Global.asax.cs Line: 25 Stack Trace: [SqlException (0x80131904): Cannot open database "PCSPI" requested by the login. The login failed. Login failed for user 'NT AUTHORITY\SYSTEM'.] System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +6675286 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +688 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4403 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +84 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +55 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, Ssortingng newPassword, SecureSsortingng newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +368 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, Ssortingng newPassword, SecureSsortingng newSecurePassword, Boolean redirectedUserInstance, SqlConnectionSsortingng connectionOptions, SqlCredential credential, TimeoutTimer timeout) +6703926 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionSsortingng connectionOptions, SqlCredential credential, Ssortingng newPassword, SecureSsortingng newSecurePassword, Boolean redirectedUserInstance) +6704427 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionSsortingng connectionOptions, SqlCredential credential, Object providerInfo, Ssortingng newPassword, SecureSsortingng newSecurePassword, Boolean redirectedUserInstance, SqlConnectionSsortingng userConnectionOptions) +610 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +1049 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +74 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnectionOptions userOptions) +6706995 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnectionOptions userOptions) +78 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +2192 System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +116 System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +1012 System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +6711619 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +152 System.Data.SqlClient.SqlConnection.Open() +229 WebMasortingx.Data.Database.EnsureConnectionOpen() +115 WebMasortingx.Data.<QueryInternal>d__0.MoveNext() +79 System.Linq.Enumerable.FirstOrDefault(IEnumerable`1 source) +247 WebMasortingx.WebData.SimpleMembershipProvider.CheckTableExists(IDatabase db, Ssortingng tableName) +90 WebMasortingx.WebData.SimpleMembershipProvider.CreateTablesIfNeeded() +64 WebMasortingx.WebData.WebSecurity.InitializeMembershipProvider(SimpleMembershipProvider simpleMembership, DatabaseConnectionInfo connect, Ssortingng userTableName, Ssortingng userIdColumn, Ssortingng userNameColumn, Boolean createTables) +95 WebMasortingx.WebData.WebSecurity.InitializeProviders(DatabaseConnectionInfo connect, Ssortingng userTableName, Ssortingng userIdColumn, Ssortingng userNameColumn, Boolean autoCreateTables) +86 WebUI.MvcApplication.Application_Start() in c:\Users\OSCAR\Documents\Visual Studio 2012\Projects\PCSPI\WebUI\Global.asax.cs:25 [HttpException (0x80004005): Cannot open database "PCSPI" requested by the login. The login failed. Login failed for user 'NT AUTHORITY\SYSTEM'.] System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +12864673 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +175 System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +304 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +404 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +475 [HttpException (0x80004005): Cannot open database "PCSPI" requested by the login. The login failed. Login failed for user 'NT AUTHORITY\SYSTEM'.] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12881540 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +12722601 

Mais lorsque je modifie l'identité du pool d'applications, la connection qu'IIS utilise pour accéder aux modifications de SQL Server, j'ai donc identifié que je dois autoriser l'access au service réseau sur mon problème SQL Server, car je n'arrive pas à le comprendre.

S'il vous plaît, comment puis-je accorder l'access au networkService?

Toute aide sera appréciée, merci d'avance

Notez que vous n'utilisiez probablement pas le service réseau, mais le count système. 'NT AUTHORITY \ SYSTEM' n'est pas un count de service réseau.

Allez dans Sécurité -> logins et créez un nouveau count qui ressemble à ceci. Définissez ensuite le mappage user pour le service réseau afin qu'il dispose uniquement des privilèges nécessaires.

entrez la description de l'image ici

SQL Server est-il sur le même server que IIS? Si c'est le cas, accédez à SSMS (SQL Server Management Server), accordez l'access de connection "NT AUTHORITY \ NETWORK SERVICE".

Si SQL Server est sur un server distinct, vous devrez utiliser un count distinct ou une connection SQL Server.