ASP.NET / SSAS / SQL Server - существующее соединение было принудительно закрыто удаленным узлом

Возможный дубликат:
Могу ли я отключить выдачу себя за другое лицо всего пару раз?

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

System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host

Вот моя строка подключения:

AdomdConnection conn = new AdomdConnection("Data Source=BTN-SQL1;Initial Catalog=BTNTurboAnalysisServices;");

Стоит отметить, что BTN-SQL1 находится на другом сервере, чем мой веб-сервер, может ли это вызывать проблему? Я также использую проверку подлинности Windows.

Ниже моя трассировка стека:

[SocketException (0x2746): An existing connection was forcibly closed by the remote host]
   System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +245

[IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.]
   System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +7856541
   System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count) +253
   Microsoft.AnalysisServices.AdomdClient.DimeRecord.ForceRead(Stream stream, Byte[] buffer, Int32 length) +61
   Microsoft.AnalysisServices.AdomdClient.DimeRecord.ReadHeader() +53
   Microsoft.AnalysisServices.AdomdClient.DimeReader.ReadRecord() +112
   Microsoft.AnalysisServices.AdomdClient.TcpStream.GetResponseDataType() +120

[AdomdConnectionException: The connection either timed out or was lost.]
   Microsoft.AnalysisServices.AdomdClient.XmlaClient.EndRequest() +1367
   Microsoft.AnalysisServices.AdomdClient.XmlaClient.CreateSession(ListDictionary properties, Boolean sendNamespaceCompatibility) +387
   Microsoft.AnalysisServices.AdomdClient.XmlaClientProvider.Microsoft.AnalysisServices.AdomdClient.AdomdConnection.IXmlaClientProviderEx.CreateSession(Boolean sendNamespaceCompatibility) +148
   Microsoft.AnalysisServices.AdomdClient.AdomdConnection.ConnectToXMLA(Boolean createSession, Boolean isHTTP) +235
   Microsoft.AnalysisServices.AdomdClient.AdomdConnection.Open() +973
   btn_intranet.Areas.Sales.Controllers.HomeController.CumulativeChart(String month, String year) in <path to file>/HomeController.cs:52
   lambda_method(Closure , ControllerBase , Object[] ) +182
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +264
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
   System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +129
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +798650
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +314
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +798704
   System.Web.Mvc.Controller.ExecuteCore() +159
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +335
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +62
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +20
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +54
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +469
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375

Любая помощь будет оценена, спасибо!


person CallumVass    schedule 21.10.2011    source источник


Ответы (3)


Похоже, вы осуществляете доступ через MVC, так есть ли у вашего удостоверения пула приложений IIS разрешения на доступ к экземпляру SSAS? Возможно, вам потребуется создать учетную запись Windows (в идеале - домен) и запустить под ней пул приложений, предоставив ему разрешения на доступ к SSAS.

person Meff    schedule 21.10.2011
comment
Я заметил, что пул приложений для моего проекта в IIS имеет идентификатор сетевой службы. Итак, если я затем настрою свой экземпляр SSAS, чтобы разрешить идентификацию сетевой службы, это сработает? - person CallumVass; 21.10.2011
comment
Я не уверен на 100%, что вы можете разрешить сетевое обслуживание, но если вы можете, то это должно сработать. Вы, наверное, уже исправили это, учитывая, что неделя прошла ...? - person Meff; 27.10.2011
comment
Нет, вообще-то нет. Я только что перешел к другим вещам. Это меня озадачило, потому что он отлично работает локально, поэтому я не думаю, что это моя строка подключения? - person CallumVass; 28.10.2011
comment
@BiffBaffBoff Если это не разрешения - если внимательно присмотреться к вашей ошибке, это проблема с 30-секундным таймаутом? Отслеживайте многомерные выражения в SQL Server Profiler, как быстро это выполняется? - person Meff; 28.10.2011
comment
Конечно, тогда это тоже не сработает локально? Но тот факт, что это не так, должен означать проблему с разрешением от IIS ›SSAS. Я попробую поиграть в IIS и посмотрю, смогу ли я заставить его работать - person CallumVass; 28.10.2011
comment
@BiffBaffBoff Я имел в виду, что запрос может нормально выполняться локально на вашем тестовом кубе, но тайм-аут в производстве, если данных намного больше? - person Meff; 28.10.2011
comment
Если трассировка SQL Server Profiler не показывает входа в систему или выполнения запроса, мы возвращаемся к рассмотрению разрешений. Вы говорите, что они находятся в разных ящиках (IIS и SSAS), находятся ли они в одном домене Windows? - person Meff; 28.10.2011
comment
Да, они в одном домене - person CallumVass; 28.10.2011
comment
Хорошо, попробуйте трассировку профилировщика для SSAS, посмотрите, что произойдет, когда вы запустите страницу, на которой выполняется запрос кумулятивной диаграммы - если он запускается и истекает время ожидания, с разрешениями все в порядке. Если он не запускается, создайте пользователя домена, получите соответствующий пул приложений IIS для запуска от имени этого пользователя и предоставьте этому пользователю разрешения на куб. - person Meff; 28.10.2011
comment
Мое приложение теперь работает как конкретный пользователь, и я дал этому пользователю разрешение на доступ к SSAS, что я должен указать в строке подключения, потому что я все еще получаю ту же ошибку: / - person CallumVass; 31.10.2011
comment
@BiffBaffBoff, если ваш пул приложений IIS работает от имени этого пользователя, вам больше ничего не нужно в строке подключения, поскольку проверка подлинности Windows будет исходить из удостоверения пула приложений. Вы вошли в систему как этот пользователь и убедились, что можете просматривать куб через студию управления? Может ли этот пользователь запустить MDX, который вы хотите запустить, через студию MGMT? - person Meff; 31.10.2011
comment
@BiffBaffBoff, вы запускаете трассировку профилировщика для SSAS, пока пытаетесь это сделать? Показывает ли неудачный вход в систему? Тайм-аут запроса? - person Meff; 31.10.2011
comment
Это снова я, извините за поздний ответ: я запустил трассировку профилировщика как свой идентификатор IIS, и он попытался подключиться к SSAS как анонимный пользователь: / - person CallumVass; 04.11.2011
comment
Еще немного информации: я отключил олицетворение IIS, и оно сработало, поэтому я даже не использовал мое удостоверение IIS при взаимодействии с SSAS. Поэтому я считаю, что это проблема с двойным прыжком, я попытался установить Kerberos в строке подключения, но все равно получаю сообщение об ошибке. - person CallumVass; 04.11.2011
comment
Мне нужно включить олицетворение, поэтому отключить его нельзя. - person CallumVass; 04.11.2011
comment
Ошибка: [Win32Exception (0x80004005): в пакете безопасности нет учетных данных] и [AdomdConnectionException: Ошибка аутентификации.] - person CallumVass; 04.11.2011
comment
Я задал новый вопрос, который можно найти здесь как отдельную проблему / исключение из этого: stackoverflow.com/questions/8009198/ - person CallumVass; 04.11.2011

Я бы рекомендовал убедиться, что брандмауэр на компьютере с SQL Server не блокирует ваш запрос.

person Wiktor Zychla    schedule 21.10.2011