General network error sql

Как найти причину ошибки сети при работе с Microsoft SQL Server В большинстве случаев истинная причина периодически возникающей проблемы с подключением клиентского компьютера к удаленному серверу базы данных MS SQL Server связана с сетевым уровнем модели OSI. Собирая данные трассировки сети и анализируя их, мы можем сузить зону поиска и определить точную причину того, […]

Содержание

  1. Как найти причину ошибки сети при работе с Microsoft SQL Server
  2. IP-адреса и точное время возникновение проблемы
  3. Анализ трассировок сервера приложений
  4. Анализ трассировок сервера Microsoft SQL Server
  5. General network error check your network documentation sql server
  6. General network error check your network documentation sql server
  7. Asked by:
  8. Question
  9. All replies
  10. General network error check your network documentation sql server
  11. Asked by:
  12. Question

Как найти причину ошибки сети при работе с Microsoft SQL Server

В большинстве случаев истинная причина периодически возникающей проблемы с подключением клиентского компьютера к удаленному серверу базы данных MS SQL Server связана с сетевым уровнем модели OSI. Собирая данные трассировки сети и анализируя их, мы можем сузить зону поиска и определить точную причину того, почему не удалось установить соединение или было внезапно разорвано существующее соединение.

Для большей наглядности предоставляемой информации в рамках данной статьи, мы дополнили ее пошаговыми иллюстрациями практического решения проблемы из реальной жизни. Проблема в предлагаемом нами кейсе заключалась в том, что клиент с определенной периодичностью получал сообщение GNE (General Network error, «Общая ошибка сети») от приложения, которое пыталось подключиться удаленно к серверу Microsoft SQL Server. Ниже приведен пример такого сообщения об ошибке:

«OleDB Error Microsoft OLE DB Provider for SQL Server [0x80004005][11] : [DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation».

После проведения некоторых стандартных начальных процедур по поиску неисправностей (таких как проверка, не была ли отключена функция разгрузки TCP chimney, или не было ли превышено значение установленного максимального количества соединений и т.д.) были в одно и то же время собраны сетевые трассировки, как с сервера приложений, так и с MS SQL server. Когда вы собираете трассировки сети, всегда соблюдайте следующие два правила:

  • Используйте данные, полученные с помощью утилиты «ipconfig», запущенную с ключом «/all», со всех задействованных серверов.
  • Ориентируйтесь на сообщения об ошибке с установленной временной меткой (timestamp). Если по какой-то причине сообщения об ошибке с временной меткой вам недоступны, попросите клиента сделать запись точного времени возникновения проблемы и отправить ее вам.

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

Для захвата и анализа трассировок вы можете использовать Wireshark, либо любой другой инструментарий с подобной функциональностью. В данном примере был использован Wireshark, поскольку трассировки, отправленные клиентом, не могли быть открыты другим инструментарием (это было связано с расширением полученных файлов).

IP-адреса и точное время возникновение проблемы

Для начала стоит проверить информацию, полученную с помощью утилиты ipconfig, чтобы узнать необходимые нам IP-адреса. В рассматриваемом примере они следующие:

IP Address. . . . . . . . . . . . : 10.10.100.131

IP Address. . . . . . . . . . . . : 10.10.100.59»

Теперь из сообщения об ошибке выясним, когда именно возникла проблема. Наше сообщение об ошибке выглядит так:

«02/24/2010 09:28:08 DataBase Warning OleDB Error Microsoft OLE DB Provider for SQL Server [0x80004005][11] : [DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation».

Таким образом, проблема произошла 24.02.2010 в 09:28:08.

Почему так важно точное время события? Зачастую, при сборе трассировок сети для решения периодически возникающих сетевых проблем вы получите внушительное количество файлов трассировки с каждого сервера, так как вам может понадобиться осуществлять захват сетевых трассировок в течение довольно продолжительного периода времени, и это может привести к генерации большого количества файлов трассировки, хранящих информацию о всей цепочке событий, произошедших за это время. В рассматриваемом нами примере клиент отправил более 60 файлов трассировки размером 25 МБ каждый для сервера приложений, а также было получено 6 подобных файлов для сервера Microsoft SQL Server. Когда у вас слишком много данных для анализа, информация о точном времени возникновения проблемы становится бесценной.

Анализ трассировок сервера приложений

Начнем наш анализ с файлов трассировки, полученных от сервера приложений. С помощью временной метки мы можем определить, какой файл трассировки необходимо проанализировать первым. Первое, что необходимо сделать, когда мы имеем дело с периодически возникающими проблемами сетевого соединения, это проверить данные трассировки сети на наличие каких-либо сбросов соединения (сообщений по протоколу TCP с установленным флагом RST, означающим «RESET»). Кроме того, из журнала ошибок сервера SQL можно узнать, какой порт прослушивает SQL-сервер. В рассматриваемом нами примере это был порт 1433. Таким образом, мы начинаем свой анализ со следующего фильтра:

«tcp.port eq 1433 && tcp.flags.reset==1»

С помощью данного фильтра можно получить список всех сообщений «RESET», относящихся к данному SQL-серверу (конечно же, сразу стоит удостовериться, что сервер приложений подключается только к проблемному SQL-серверу, и не происходит других подключений еще к какому-то другому SQL-серверу, который также прослушивает порт 1433). В рассматриваемом нами примере с помощью этого фильтра было обнаружено около 20 сообщений по протоколу TCP с флагом RST:

Следующим нашим шагом будет проверка полного взаимодействия в течение состоявшегося TCP-соединения, частью которого является сообщение о сбросе соединения. Для того чтобы увидеть сетевое взаимодействие, включающее в себя фрейм с флагом RST, следуйте следующему шаблону действий:

«Выберите фрейм с флагом RST —> кликните правой кнопкой мыши —> Conversation Filter («Фильтр взаимодействия») —> TCP».

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

Теперь, если вы работаете с несколькими файлами трассировки, формирующих непрерывную цепочку событий, а не с одним файлом, вам следует проанализировать и другие файлы трассировки, которые содержат информацию о событиях непосредственно до и после обнаруженного вами события, чтобы найти и другие фреймы этого сетевого взаимодействия, если таковые существуют. Нам необходимо восстановить полную картину событий и узнать, что происходило до того, как сообщение о сбросе соединения было отправлено. Эта информация поможем нам узнать первопричину отправки сообщения с флагом RST. Чтобы сделать это, скопируйте фильтр для данного взаимодействия из текущего файла трассировки. Для нашего примера он следующий:

«(ip.addr eq 10.10.100.59 and ip.addr eq 10.10.100.131) and (tcp.port eq 1194 and tcp.port eq 1433)»

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

Если вы не нашли проблему, а только наблюдаете нормальный траффик (наподобие пакетов «keep-alive»), откройте файл трассировки, предшествующий этому, и проанализируйте его, используя тот же фильтр. Продолжайте делать это, пока не увидите какую-то проблему или не дойдете до начала разговора (трехстороннего рукопожатия TCP для установления соединения).

В нашем примере было много траффика «keep-alive». Microsoft SQL Server (10.10.100.131) и сервер приложений (10.10.100.59) отправляли туда и обратно пакеты «TCP Keep-Alive» и «TCP Keep-Alive ACK». Но в конце сетевого взаимодействия сервер приложений (10.10.100.59) отправил пять пакетов «TCP Keep-Alive» на сервер SQL, но не получил никакого ответа от сервера SQL, как вы можете убедиться ниже:

Проверка всех предыдущих файлов трассировки, содержащих исследуемое взаимодействие, других проблем не выявила. Затем был проверен файл трассировки, следующий за изначальным файлом трассировки (в котором было обнаружено сообщение с флагом RST), но он не содержал фреймов для текущего соединения. Таким образом, данное сетевое взаимодействие закончилось после этого сообщения с сигналом о разрыве соединения.

Анализ трассировок сервера Microsoft SQL Server

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

Источник

General network error check your network documentation sql server

Exception Details: System.Data.SqlClient.SqlException: General network error. Check your network documentation.

I get this exception intermittently

Below is the stack trace of the error

Stack Trace: at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Xtention.Lms.Components.Database.RunProc(String procName, SqlParameter[] prams) in C:Projectslms.bentley.comlmsModulescomponentsComponentsDatabase.cs:line 154 at Xtention.Lms.Components.UsersDB.Login(String username, String password, Boolean windowsLogin) in C:Projectslms.bentley.comlmsModulescomponentsComponentsSecurity.cs:line 883 at Xtention.Lms.Components.UsersDB.Login(String username, String password) in C:Projectslms.bentley.comlmsModulescomponentsComponentsSecurity.cs:line 893 at Xtention.Lms.Web.Signin.Login(String pass, String login, Boolean encodePassword) in C:Projectslms.bentley.comlmsdesktopmodulesSignin.ascx.cs:line 61 at Xtention.Lms.Web.Signin.BentleyLogin() in C:Projectslms.bentley.comlmsdesktopmodulesSignin.ascx.cs:line 188 at Xtention.Lms.Web.Signin.Page_Load(Object sender, EventArgs e) in C:Projectslms.bentley.comlmsdesktopmodulesSignin.ascx.cs:line 169 at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain()

When i debug the application this error vanishes some time.

I am using ASP.net 1.1 and .net native sql provider and sql server 2000.

Sql Server 2000 is present at remote location. When i debug the application it is opening the connection but it is throwing this error when i try to execute command object query.

I am facing this problem from many days. i need urgent solution of this.

Источник

General network error check your network documentation sql server

This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.

Asked by:

Question

considering the oldest version of sql 2008, when try to access application I receive the following error:

[DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation

SQL | Msg: 11, Level: 16, State: 1, Line: 0

SQL | [DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation

SQL | Error: -2147467259, Minor Error: 11, SQL State: 08S01

Please help, thanks all for your kindly assistance.

Does this happen with any command or a specific command?

Check the SQL Server error log if there are any stack dumps related to this error.

What happens if you run the same command from Management Studio?

Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Is it the situation totally could not access the app? This kind of g eneral network error may point to the physical connection, firewall, duplicate IP addresses and etc, the solutions include using TCP/IP instead of Named Pipes, turning off connection pooling and reopening the connection.

MSDN Community Support
Please remember to click «Mark as Answer» the responses that resolved your issue, and to click «Unmark as Answer» if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com

Do the answers above help you? It consumes much test and patience to find the cause of the problem.

If you find a solution, it’s so kind of you to come back and share it with us. By doing so, it will benefit all community members who are having this similar issue. We’ll be waiting for your reply. Your contribution is highly appreciated.

Источник

General network error check your network documentation sql server

This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.

Asked by:

Question

Hi I get a «General Network Error Check network documentation» error sometimes, but its only while insert or update statements are fired while selects keep working perfectly.

The Error details are as follows:

General network error. Check your network documentation.

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: General network error. Check your network documentation.

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

[SqlException: General network error. Check your network documentation.]

Источник

OVERVIEW

To troubleshoot network connectivity problems, you must first identify the source of the problem. Gathering as much data as possible about the operating conditions which exist at the time of the failure will help in tracking down a root cause.

These errors can be seen as entries in System Log monitor, SQL Server ERRORLOG, developer traces or Java system logs. Error conditions such as hanging client processes; a process which is doing no work and cannot be assigned, but has not reported an error in a log file, have also been observed.
Short Dumps of the type DBIF_RSQL_SQL_ERROR and DBIF_REPO_SQL_ERROR, as evidenced in ST22, may be observed in SAP system which run SQL Server databases.
The Short Dump message details will indicate SQL error 11 and, SQL error 0 and SQL error 10054, which can be raised on various objects (tables and/or views).
In addition, the OS Event Viewer Application Log may record indications of network library errors 10054.

ABAP SHORT-DUMPS AND SQL ERROR 10054

SQL Server 0 and SQL Server 11 errors mean a disconnection between Client and Server and can appear in the SQL Server Error log or in dev_w files of the client. In the dev_w files these errors will often be accompanied by the SAP short-dump DBIF_RSQL_SQL_ERROR and DBIF_REPO_SQL_ERROR, evidenced in St22. The Short Dump message details will indicate SQL error -1 and/or SQL error 0 which can be raised on various objects (tables and/or views). In addition, the OS Event Viewer Application Log may record indications of network library errors 10054, 10055, 10053 or 10061. The SQL Error 10054 errors put the work process in a reconnect status. On the server side, a SQL Error -1 can be caused by a networking error or other condition.

EXAMPLES

A list of the examples of general network errors is provided here. The list may vary and be updated once new issues are discovered.

Example 1

Error messages:

  • TCP Provider: An existing connection was forcibly closed by the remote host
  • SQL error in the database when accessing a table
  • DBIF_RSQL_SQL_ERROR

  • CX_SY_OPEN_SQL_DB

Example 2

Error messages:

  • SQL error «-1» occurred when accessing program
  • SMux Provider: Physical connection is not usable [xFFFFFFFF]
  • DBIF_REPO_SQL_ERROR

  • Resource Shortage

Example 3

 

Error messages:

  • SQL error 10054 occurred when accessing program
  • TCP Provider: An existing connection was forcibly closed by the remote host
  • DBIF_REPO_SQL_ERROR

  • Resource Shortage

OVERVIEW

Categories of Error causes
  • Lower levels of software
  • Faulty hardware
Approach

Before doing any deeper investigation on possible SQL Server and SAP application, the following steps are strongly recommended:

  1. Read Dale’s presentation about «Analyzing Network Errors on SQL Server».
  2. Read SAP Note 1593183. It describe possible scenarios where you can find such errors.
  3. Review the SAP monitors:
    1. ST22 monitor, check the dump complete text: analyze it in order to find out which work process and application server got disconnected. From there you can find out whether this happens to all application servers or specific.
    2. ST11 monitor (pay attention to work process number — WP xy — and application server name in ST22 ABAP dump text) check the developer trace, dev_Wxy, information logged right at the time the ABAP dump occurred. Check also early information prior to the known disconnection messages: it can be the case that the disconnection error is a subsequent error caused by an early dump, therefore, causing a message that can mislead to a disconnection problem.
    3. SM21 (system log) may also contain useful information you can link with ST22 short dumps and ST11 developer traces.
  4. SQL error log from Transaction DBACockpit -> Diagnostic or from <instance name>MSSQLLog folder.
  5. Log on to OS database server and check the Windows Server OS Event Viewer (Application log and System log) logs. It may contain further details about the disconnection.
  6. Check and make sure the right network protocol for SQL Server is being used; the network topology plays an important role as MS SQL Server database performance depends also on the network protocol used by the application server to connect to the database. It is important to choose the right network protocol for a given situation, the Basis administrator and DB administrator should double check SAP Note 208632.
  7. Check the version of the ODBC Driver / SNAC (SQL Server Native Client), always use at least the same version of your SQL Server database instance, review SAP Note 1823300,
  8. Implement the changes suggested by SAP Note 1593183:
    1. KeepAlive (the network traffic between ‘clients’ and a ‘SQL Server’ can be impacted by changing configurations at the server or client) on SQL Server Configuration Manager . Keep in mind that you should also perform this configuration if you have a Dialong Instance or Central Instance installed in the localhost (where SQL Server is installed).
    2. TcpMaxDataRetransmissions (determine the number of TCP retransmissions of an individual TCP segment).
    3. These recommendations are very important for HA/DR solutions like AlwaysOn, Clustering, Database Mirroringm etc, and should be implemented in all nodes/replicas.
  9. If SAP application server running on a virtual machine OS OS guest (VMware or MS Hyper-V), doublecheck the virtual machines OS guest Configuration guidelines,
    see following Notes, 2161991 (VMware),  1246467 (MS Hyper-V), 1409608 (Virtualization on Windows).
  10. If SQL Server runs on VMware, check out the updated Microsoft SQL Server on vSphere Best Practices Guide.
  11. Involve your Hardware partner for double checking the entire network infrastructure, outdated NIC drivers, Server Memory, (hardware, physical network, etc), are usually the root cause for network problem.
  12. Use SAP tool NIPING for checking the health of the network infrastructure used by your SAP application servers. See SAP Note 500235 and SAP Note 1100926 (this reference gives some good information about NIPING also). The Basis administrator has to run NIPING as a server process and then to run NIPING as a client process. Start long term niping by:
    1. Starting the niping server process on the DB server;
    2. Starting 1 niping client process on EACH application server;
    3. Further information about Niping can be found here.
  • If NiPing doesn’t run while the problems are present or when they are expected to occur, you won’t find anything wrong on the network infrastructure.
  • If NiPing doesn’t fail during its execution and you also don’t get any disconnection issue in your system, it is not an evidence that you don’t have a network issue.
  • The goal with NiPing is to ensure that during the NiPing execution, in case a disconnection happens between the SAP Application Server and SQL Server, that NiPing also fails.
  • In case NiPing does not fail and you have received a Network Disconnection dump, then it is time for pursuing other possibilities,such Overcommitting Memory, as described on this blog. If you have ever reached to this point, it is very important that you log all information so far collected on the analysis and contact SAP Support in component BC-DB-MSS.

Feedback

Please provide any feedback or questions regarding the content under the current page comments. If you have an issue or is looking for help, try to post your question on SAP community with Microsoft SQL Server tag.

In order to leave comments, you must be logged on with your SAP account.

Problem

User runs an intensive task, and receives an error message.

Scenario #1 — User running a database optimisation.
Scenario #2 — User running a ‘reports conversion’ process, as part of a migration from Controller 2.x to 8.x.
Scenario #3 — User is trying to import data into Controller, via a CSV file.

Symptom

    Information
    Standard Error
    Number: 5
    Source: FrangoDirect.GenCompStrucD.GenKStruc#ControllerProxyClient
    Description: System.Web.Services.Protocols.SoapException: Servier was unable to process request. —>
    System.Runtime.InteropServices.COMException (0x80004005): [DBNETLIB][ConnectionRead(recv()).]General
    network error. Check your network documentation.
    at FrCompanyBT.GenCompStrucTClass.GenKStruc(String sGuid, String sUser, String sConsType, String sFirstPer,
    Boolean bOnlyManual, ….

Example #2:

    Information
    Standard Error
    Number: 5
    Source: FrangoDirect.Optimize.RecreateIndex#ControllerProxyClient
    Description: The underlying connection was closed: An unexpected error occurred on a receive.
    OK

Scenario #2:

    Information
    Standard Error
    Number: 5
    Source: FrangoDirect.ExcelLinkD.SaveLayoutFile#ControllerProxyClient
    Description: System.Web.Services.Protocols.SoapException: Server was unable to process request. —>
    System.Runtime.InteropServices.COMException (0x80004005): [DBNETLIB][ConnectionOpen
    (PreLoginHandshake()).]General network error. Check your network documentation.
    at FrExcelLinkB.ExcelLinkBClass.GetLayout(String sGuid, String sUser, String sRapp)
    at Cognos.controller.Proxy.CCRWS.ExcelLinkB_GetLayout(String sGuid, String sUser, String sRapp)
    — End of inner exception stack trace —

Scenario #3

    Information
    Standard Error
    Number: -2147467259
    Source: FrServerB.ServerInfo.GetServerInfo
    Description: [DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied.
    [OK]

Cause

There are several potential causes for errors similar to those shown above.

  • For another example, see separate IBM Technote #1587557 & 1674415.

This Technote shall concentrate on the scenario where the cause is a TCP/IP network failure, causing a «General network error«, which has been triggered by one of the following Microsoft Windows TCP/IP mechanisms:

  • Scenario #1 — Microsoft TCP Chimney Offload feature is enabled on the server
    • For more details, see separate IBM Technote #1445735.
  • Scenario #2 — Microsoft SynAttackProtect feature is enabled on the server
    • This IBM Technote shall concentrate on this scenario.


The user’s task triggers a high level of network activity to/from the Microsoft SQL database server. In our scenario, this triggers Microsoft ‘SynAttackProtect’ feature on the SQL server:

  • ‘SynAttackProtect’ causes Windows to drop connections if the requests arrive faster than SQL Server can service them.
    • This is a security feature of Windows Server 2003 Service Pack 1, which implements a finite queue for incoming TCP connection requests.
  • SynAttackProtect is enabled (by default) on a server with Windows 2003 SP1 or later. This shuts down the network connection to the Controller application server, which therefore gives an error.
    • TIP: For TCP/IP in Windows XP (all versions) and Windows Server 2003 with no service packs installed, SynAttackProtect is set to 0 by default.

More information about ‘SynAttackProtect’:
To mitigate the impact on a host experiencing a SYN attack, TCP/IP minimizes the amount of resources devoted to incomplete TCP connections and reduces the amount of time before abandoning half-open connections. When a SYN attack is detected, when SynAttackProtect is enabled, TCP/IP in Windows Server 2003 and Windows XP lowers the number of retransmissions of the SYN-ACK segment and does not allocate memory or table entry resources for the connection until the TCP three-way handshake has been completed.

  • For more information, see section inside ‘Related Documents’
  • One of the best summaries on this topic can be found here: http://blogs.technet.com/b/pabenois/archive/2010/06/10/sharepoint-2007-and.aspx

Environment

Microsoft Windows 2003 servers, with Service Pack 1 or later.

NOTE: SynAttack protection is enabled by default and cannot be disabled for all modern Windows versions, for example: Vista, Windows 2008, Windows 7 and Windows 2008 R2.

  • See third-party (non-IBM) link below for more details.

Diagnosing The Problem

One method to investigate is to check the current number of TCP network connections that the server currently has. One easy method is to ‘pipe’ the results of netstat to a text file, and then open that in a spreadsheet (e.g. Excel) to analyst. In other words, run the following command (inside a command prompt) and then open the resultant file «connections.txt» inside EXCEL:

    netstat -o >connections.txt

Resolving The Problem

Fix:

Improve:

  • the quality/speed of the network connection between the Controller application server and the SQL server
  • the server hardware (CPU speed, number of CPU cores etc.) of the SQL server.

Workaround

Disable Microsoft SYN attack protection on the Windows 2003 Microsoft SQL server.

Steps to disable ‘SynAttackProtect’:

  1. Obtain some downtine to the system, to ensure no end-users are using any database on the relevant SQL server
  2. Logon to the SQL server as an administrator
  3. START — RUN — REGEDIT
  4. Navigate to the location: HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTcpipParameters
  5. Double-click on the entry SynAttackProtect (or create it if it does not exist!)
  6. Change its value from 1 to 0
  7. Reboot the SQL server

Related Information

[{«Product»:{«code»:»SS9S6B»,»label»:»IBM Cognos Controller»},»Business Unit»:{«code»:»BU059″,»label»:»IBM Software w/o TPS»},»Component»:»Controller»,»Platform»:[{«code»:»PF033″,»label»:»Windows»}],»Version»:»8.4;8.3″,»Edition»:»Not Applicable»,»Line of Business»:{«code»:»LOB10″,»label»:»Data and AI»}}]

Historical Number

1035583

ошибки сети при работе с Microsoft SQL Server

В большинстве случаев истинная причина периодически возникающей проблемы с подключением клиентского компьютера к удаленному серверу базы данных MS SQL Server  связана с сетевым уровнем модели OSI. Собирая данные трассировки сети и анализируя их, мы можем сузить зону поиска и определить точную причину того, почему не удалось установить соединение или было внезапно разорвано существующее соединение.

Для большей наглядности предоставляемой информации в рамках данной статьи, мы дополнили ее пошаговыми иллюстрациями практического решения проблемы из реальной жизни. Проблема в предлагаемом нами кейсе заключалась в том, что клиент с определенной периодичностью получал сообщение GNE (General Network error, «Общая ошибка сети») от приложения, которое пыталось подключиться удаленно к серверу Microsoft SQL Server. Ниже приведен пример такого сообщения об ошибке:

«OleDB Error Microsoft OLE DB Provider for SQL Server [0x80004005][11] : [DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation».

После проведения некоторых стандартных начальных процедур по поиску неисправностей (таких как проверка, не была ли отключена функция разгрузки TCP chimney, или не было ли превышено значение установленного максимального количества соединений и т.д.) были в одно и то же время собраны сетевые трассировки, как с сервера приложений, так и с MS SQL server. Когда вы собираете трассировки сети, всегда соблюдайте следующие два правила:

  • Используйте данные, полученные с помощью утилиты «ipconfig», запущенную с ключом «/all», со всех задействованных серверов.
  • Ориентируйтесь на сообщения об ошибке с установленной временной меткой (timestamp). Если по какой-то причине сообщения об ошибке с временной меткой вам недоступны, попросите клиента сделать запись точного времени возникновения проблемы и отправить ее вам.

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

Для захвата и анализа трассировок вы можете использовать Wireshark, либо любой другой инструментарий с подобной функциональностью. В данном примере был использован Wireshark, поскольку трассировки, отправленные клиентом, не могли быть открыты другим инструментарием (это было связано с расширением полученных файлов).

IP-адреса и точное время возникновение проблемы

Для начала стоит проверить информацию, полученную с помощью утилиты ipconfig, чтобы узнать необходимые нам IP-адреса. В рассматриваемом примере они следующие:

«SQL server:

IP Address. . . . . . . . . . . . : 10.10.100.131

App server:

IP Address. . . . . . . . . . . . : 10.10.100.59»

Теперь из сообщения об ошибке выясним, когда именно возникла проблема. Наше сообщение об ошибке выглядит так:

«02/24/2010 09:28:08 DataBase Warning OleDB Error Microsoft OLE DB Provider for SQL Server [0x80004005][11] : [DBNETLIB][ConnectionWrite (send()).]General network error. Check your network documentation».

Таким образом, проблема произошла 24.02.2010 в 09:28:08.

Почему так важно точное время события? Зачастую, при сборе трассировок сети для решения периодически возникающих сетевых проблем вы получите внушительное количество файлов трассировки с каждого сервера, так как вам может понадобиться осуществлять захват сетевых трассировок в течение довольно продолжительного периода времени, и это может привести к генерации большого количества файлов трассировки, хранящих информацию о всей цепочке событий, произошедших за это время. В рассматриваемом нами примере клиент отправил более 60 файлов трассировки размером 25 МБ каждый для сервера приложений, а также было получено 6 подобных файлов для сервера Microsoft SQL Server. Когда у вас слишком много данных для анализа, информация о точном времени возникновения проблемы становится бесценной.

Анализ трассировок сервера приложений

Начнем наш анализ с файлов трассировки, полученных от сервера приложений. С помощью временной метки мы можем определить, какой файл трассировки необходимо проанализировать первым. Первое, что необходимо сделать, когда мы имеем дело с периодически возникающими проблемами сетевого соединения, это проверить данные трассировки сети на наличие каких-либо сбросов соединения (сообщений по протоколу TCP с установленным флагом RST, означающим «RESET»). Кроме того, из журнала ошибок сервера SQL можно узнать, какой порт прослушивает SQL-сервер. В рассматриваемом нами примере это был порт 1433. Таким образом, мы начинаем свой анализ со следующего фильтра:

«tcp.port eq 1433 && tcp.flags.reset==1»

С помощью данного фильтра можно получить список всех сообщений «RESET», относящихся к данному SQL-серверу (конечно же, сразу стоит удостовериться, что сервер приложений подключается только к проблемному SQL-серверу, и не происходит других подключений еще к какому-то другому SQL-серверу, который также прослушивает порт 1433). В рассматриваемом нами примере с помощью этого фильтра было обнаружено около 20 сообщений по протоколу TCP с флагом RST:

Анализ трассировок сервера приложений

Следующим нашим шагом будет проверка полного взаимодействия в течение состоявшегося TCP-соединения, частью которого является сообщение о сбросе соединения. Для того чтобы увидеть сетевое взаимодействие, включающее в себя фрейм с флагом RST, следуйте следующему шаблону действий:

«Выберите фрейм с флагом RST —> кликните правой кнопкой мыши —> Conversation Filter («Фильтр взаимодействия») —> TCP».

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

Выберите фрейм с флагом RST

Теперь, если вы работаете с несколькими файлами трассировки, формирующих непрерывную цепочку событий, а не с одним файлом, вам следует проанализировать и другие файлы трассировки, которые содержат информацию о событиях непосредственно до и после обнаруженного вами события, чтобы найти и другие фреймы этого сетевого взаимодействия, если таковые существуют. Нам необходимо восстановить полную картину событий и узнать, что происходило до того, как сообщение о сбросе соединения было отправлено. Эта информация поможем нам узнать первопричину отправки сообщения с флагом RST. Чтобы сделать это, скопируйте фильтр для данного взаимодействия из текущего файла трассировки. Для нашего примера он следующий:

«(ip.addr eq 10.10.100.59 and ip.addr eq 10.10.100.131) and (tcp.port eq 1194 and tcp.port eq 1433)»

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

Если вы не нашли проблему, а только наблюдаете нормальный траффик (наподобие пакетов «keep-alive»), откройте файл трассировки, предшествующий этому, и проанализируйте его, используя тот же фильтр. Продолжайте делать это, пока не увидите какую-то проблему или не дойдете до начала разговора (трехстороннего рукопожатия TCP для установления соединения).

В нашем примере было много траффика «keep-alive». Microsoft SQL Server (10.10.100.131) и сервер приложений (10.10.100.59) отправляли туда и обратно пакеты «TCP Keep-Alive» и «TCP Keep-Alive ACK». Но в конце сетевого взаимодействия сервер приложений (10.10.100.59) отправил пять пакетов «TCP Keep-Alive» на сервер SQL, но не получил никакого ответа от сервера SQL, как вы можете убедиться ниже:

не получил никакого ответа от сервера MS SQL

Проверка всех предыдущих файлов трассировки, содержащих исследуемое взаимодействие, других проблем не выявила. Затем был проверен файл трассировки, следующий за изначальным файлом трассировки (в котором было обнаружено сообщение с флагом RST), но он не содержал фреймов для текущего соединения. Таким образом, данное сетевое взаимодействие закончилось после этого сообщения с сигналом о разрыве соединения.

Анализ трассировок сервера Microsoft SQL Server

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


Данный материал доступен только зарегистрированным пользователям!
Войдите или зарегистрируйтесь бесплатно, чтобы получить доступ!
Регистрация займёт несколько секунд.


См. также:

You should be able to reproduce this error condition on demand by:
1. Opening a database connection (in your client application)
2. Unplugging the network cable
3. Plugging network cable back in (wait until the network connection is restored)
4. Using the previously opened connection to query the database

As far as I can tell from experience, client side ADO code is not able to consistently determine if an underlying network connection is actually valid or not. Checking if the database connection is open (in the client code) returns true. However, performing any operations on that connection results in a General network error.

The connection pool appears to be able to determine when a connection goes ‘bad’ so it never returns a bad connection to the application. It simply opens a new connection instead.

So, if a database connection is kept alive for a long time (used or unused) by the application, the underlying TCP/IP connectivity can get broken.

The bottom line is that database connections should be closed and returned back to the connection pool when not in use.

Edit

Also, depending on the number of clients connecting to the db, not using the connection pool can cause another issue. You may hit the maximum number of sockets open on the server side. This is from memory. Once a connection is closed on the client side, the connection on the server goes into a TIME_WAIT state. By default, the server socket takes about 4 minutes to close, so it is not available to other clients during that time. The bottom line is that there is a limited number of available sockets on the server. Keeping too many connections open can create a problem.

One project I worked on easily hit this socket limit with around 120 users. A new ‘feature’ was added that absolutely hammered the server, and after a few hours of using the app, things would suddenly slow to a crawl for everyone. SQL server was not closing enough sockets in time for new connection requests. Although there are 65K sockets altogether, only the first 5000 are made available to the ADO (this is a default registry setting thing, so can be changed).

The number of sockets in TIME_WAIT state would slowly build up until the OS would not allocate any more. So clients had to wait until server side sockets closed and a new connection could then be created.

Сеанс работы завершен администратором.

Я
   Vet_ne

04.05.10 — 18:33

Ошибка: Сеанс работы завершен администратором.

по причине:

Соединение с сервером баз данных разорвано администратором

Microsoft OLE DB Provider for SQL Server: [DBNETLIB][ConnectionRead (recv()).]General network error. Check your network documentation.

HRESULT=80004005, SQLSrvr: Error state=1, Severity=10, native=11, line=0

1C 8.1.14 + MS SQl 2005 + Терминальник (на 3х серверах)

+ Пропадает ping (хаотично) на 1-4 секунды у сервера MS SQl 2005 и вилетает от 1 до 5 юзеров

Вопрос причина в падении сети или в другом?

   IceSer1

1 — 04.05.10 — 18:34

General network error. Check your network documentation.

   Vet_ne

2 — 04.05.10 — 18:37

(1) Админ говорит мол у него все хорошо  ))

   IceSer1

3 — 04.05.10 — 18:38

гдеж пигд  теряется тогда?

   IceSer1

4 — 04.05.10 — 18:38

*пинг

   Naumov

5 — 04.05.10 — 18:39

теряются пинги в локальной сети?

Это просто сказка какая-то!

   IceSer1

6 — 04.05.10 — 18:40

главное что админ не виноват )

   Vet_ne

7 — 04.05.10 — 18:45

(5) Пинг теряетса с сервера 1С к серверу СКЛ

   IceSer1

8 — 04.05.10 — 18:47

(7) нагрузка на серверы в этот момент?

   Vet_ne

9 — 04.05.10 — 18:48

(8) не более 50% проц, сеть 15% максимум

   Aswed

10 — 04.05.10 — 18:50

К админу с паяльником приставал?

   Vet_ne

11 — 04.05.10 — 18:50

Фоновые задание отключил, не помогло,
+ 1 процес на сервере 1С, не помогло,
Тестирование не помогло,

   IceSer1

12 — 04.05.10 — 18:51

(9) ping на большие пакеты как проходит?

   Vet_ne

13 — 04.05.10 — 18:51

(10) Думаю скоро буду ))

   IceSer1

14 — 04.05.10 — 18:52

(11) фоновые задания sql смотрели?

   Vet_ne

15 — 04.05.10 — 18:53

(11) ????

   Vet_ne

16 — 04.05.10 — 18:54

(12) как проверить?

   IceSer1

17 — 04.05.10 — 18:55

ping 192.168.0.x -l 5000

   IceSer1

18 — 04.05.10 — 18:56

допустимый диапазон с 0 по 65500.

   Vet_ne

19 — 04.05.10 — 18:56

(17) 1 — 2 мс.

   IceSer1

20 — 04.05.10 — 19:00

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

   Vet_ne

21 — 05.05.10 — 08:11

(20) ping пропадаєт к СКЛ серверу

   Нуф-Нуф

22 — 05.05.10 — 08:12

перезапуск службы сервера 1с

   Vet_ne

23 — 05.05.10 — 08:24

(22) помогает на 30 мин. ((

   capitanjack

24 — 05.05.10 — 09:04

было точно такое дело, это со структурой базы траблы (он тебе недаст кстати в ДТ выгрузить)

лечил базу SQL командой dbcc checkdb (в монопольном режиме естественно)

перед этим базу отмонтируй только

   capitanjack

25 — 05.05.10 — 09:06

вот так:

dbcc checkdb (‘<имя базы>’,REPAIR_ALLOW_DATA_LOSS) with tablock

   PCcomCat

26 — 05.05.10 — 09:11

(0)Это  сделал кто-то через сервис-управление пользователями и доступ- завершение работы пользователей (с установкой флага блокировка установки соединений включена). Там читайте методы борьбы через командную строку с параметрами запуска.

   Vet_ne

27 — 05.05.10 — 09:38

(24) Выгрузка в ДТ проходит успешно, и розкрутка с него в файл-вариант так же успешно

   Vet_ne

28 — 05.05.10 — 09:49

варианты? (

   capitanjack

29 — 05.05.10 — 10:01

(28) значит слава Богу с базой все ок,

проверь структуру таблиц (тестирование/исправление) конфигуратором

думаю что если пишет «сеанс завершен Администратором» то явно дело не в сетке

   Vet_ne

30 — 05.05.10 — 10:47

(29) Тестирование/исправление ошибок не обнаружено

   Vet_ne

31 — 05.05.10 — 11:18

варианты? (

   Vet_ne

32 — 05.05.10 — 11:34

варианты?

   wPa

33 — 05.05.10 — 11:36

(0) Сервер приложений замусорился — перегрузки требует периодически

   FIXXXL

34 — 05.05.10 — 11:37

(32) место на винтах есть?

   Mitriy

35 — 05.05.10 — 11:38

была Аваста и все, как в сабже, снес, больше не беспокоит…

   Vet_ne

36 — 05.05.10 — 11:40

(33) Сервер приложений перегружаем каждый день после ошибки не помогает (

   Sиlьver

37 — 05.05.10 — 11:40

(32) еще есть вариант подождать =)

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

через недельку проблема рассосалась

   Vet_ne

38 — 05.05.10 — 11:43

(37) уже две недели ждём ))

   Aprobator

39 — 05.05.10 — 11:50

   Vet_ne

40 — 05.05.10 — 12:19

(39) глянул

   Vet_ne

41 — 05.05.10 — 13:16

а может быть связано с настройками SQL?

   Vet_ne

42 — 05.05.10 — 13:29

+ Если пинговать Сервер СКЛ <- Сервером 1С , пинг пропадает а наоборот в тот же момен времени то нет

   Vet_ne

43 — 05.05.10 — 13:40

варианты? )

   Vet_ne

44 — 05.05.10 — 14:43

варианты?

   Vet_ne

45 — 05.05.10 — 16:00

Из наблюдений процес SQL в этот момет занимает болие 55 % процесора

   Vet_ne

46 — 05.05.10 — 16:50

Народ помогите, никак не решу проблему.((((

   Aprobator

47 — 05.05.10 — 17:13

скуль перегружали?

   asady

48 — 05.05.10 — 17:19

(0) ИМХО дело в кривых ролях

проанализируй из-за кого падает rphost — одна из ролей этого юзверя косячит и кладет рабочий процесс

   Vet_ne

49 — 05.05.10 — 17:30

(47) Перегружали

   Vet_ne

50 — 05.05.10 — 17:31

(48) Процес полностью не падает, другие могут работать дальше на том же процесе

   asady

51 — 05.05.10 — 17:50

(50) уверен?

   Jofa

52 — 05.05.10 — 17:55

Капай к СКУЛЮ

   Vet_ne

53 — 05.05.10 — 17:56

(52) а именно?

   Vet_ne

54 — 05.05.10 — 17:57

(52) в логах SQL ничё не пишет ((

   Vet_ne

55 — 05.05.10 — 18:11

варианты? (

   Jofa

56 — 05.05.10 — 18:20

Есть тема что в пике нагрузки на СКУЛ, СКУЛ отрубает пользователей автоматом

   IceSer1

57 — 05.05.10 — 18:22

(56) врятли

   Vet_ne

58 — 05.05.10 — 18:27

(56) в принципе пик не большой 55-60% проца

   IceSer1

59 — 05.05.10 — 18:28

(58) антивирь какой ?

   Vet_ne

60 — 05.05.10 — 18:29

  

   IceSer1

61 — 05.05.10 — 18:31

перед появлением трабла, что с сервом делал, апдэйты какиета ставил или что нибудь в этом роде

   Vet_ne

62 — 05.05.10 — 18:34

(61) + сервера виртуальные, делали образ с виртуалки СКЛ на еще одну машину, потом отключили…

   Vet_ne

63 — 05.05.10 — 21:29

(0) + ТиС сообщает только: «Неверные вспомогательные данные таблицы»

   Vet_ne

64 — 05.05.10 — 23:04

(63) и успешно исправляет их….

   Vet_ne

65 — 06.05.10 — 12:24

(64) а проблема осталась ((

   Vet_ne

66 — 06.05.10 — 15:41

(0) отключили «named pipes» на SQl поблема осталась ((

   Vet_ne

67 — 06.05.10 — 15:44

(0) варианты? (

   Sиlьver

68 — 06.05.10 — 17:40

(67) если поборешь проблему, отпишись хоть…

   Elena_KR

69 — 06.05.10 — 17:52

поддержка 1с в таком случае рекомендует создавать несколько раб. процессов, хотя и говорит что особой параллельности и переключением поль-ля от умирающего процесса на платформе 8.1 нет

   Elena_KR

70 — 06.05.10 — 17:56

А еще рекомендует скуль и 1с разносить на разные сервера.

У меня как то было такое, правда без терминалки — оказалось не хватает банально физ. памяти на диске, очистили — стало меньше вылетов.

   Mitriy

71 — 06.05.10 — 18:00

антивируса на сервере 1С точно нету?

   Vet_ne

72 — 06.05.10 — 18:02

(69) запущено 4 — процеса
(70) сервер 1С і СКЛ на разных виртуальных машинах
(71) антивируса точно нет

   Serg_1960

73 — 06.05.10 — 18:03

(0) Как вариант: возможно скоро сдохнет окончательно сетевая карточка или свитч. Или контакт в проводе…

У нас такое было однажды — начали отваливаться юзверы из 1С. Более никаких тревожных симптомов не было. Зря только время потеряли, разбираясь с 1С. А оказалось — она наиболее «чуствительна» к сетевым глюкам, чем остальные…

Сдох роутер, его поменяли и проблема сама-собой разрешилась.

   Mitriy

74 — 06.05.10 — 18:04

(72) у меня такая же байда была в виртуалке… в конце концов плюнули и поставили физический сервер…

   Vet_ne

75 — 06.05.10 — 18:05

(73) машины виртуальные: 3 на одной физической

   Mitriy

76 — 06.05.10 — 18:05

(74)+ найдешь лекарство, пиши, мы не нашли…

   Vet_ne

77 — 06.05.10 — 18:06

(74) все работало год на виртуалках нормально

   Mitriy

78 — 06.05.10 — 18:07

(77) на вин 2008 не захотело, все, как в сабже…

   Elena_KR

79 — 06.05.10 — 18:07

может 8.2 поставить?

   Vet_ne

80 — 06.05.10 — 18:09

(79) может, но долго что то 8.2.11 выходит, страшно )))

   Elena_KR

81 — 06.05.10 — 18:17

на платформе 8.2 говорят нормальный кластер серверов, раб. процессы которого умирать не будут )))

   Vet_ne

82 — 06.05.10 — 18:18

(81) о нет, они будут жить вечно ))))))

   Elena_KR

83 — 06.05.10 — 18:23

(81) ну типа параллельность реализована, сеанс пользователя будет переключаться между процессами, если они загружены

   Vet_ne

84 — 06.05.10 — 18:27

(83) а процес и не слетает при более среднем количестве из 25 юзеров на 4 процеса может вивалится и всего один.

   Vet_ne

85 — 06.05.10 — 18:28

(84) + один юзер

   Elena_KR

86 — 06.05.10 — 18:32

(83) так то оно так, но почему то пользователи как продолжали валится так и валятся

   Vet_ne

87 — 06.05.10 — 18:43

(0) а может таки проблема СКЛя?

   Vet_ne

88 — 06.05.10 — 18:48

А можно ли настроить таймаут опроса сервером 1С — СКЛя ?

   Vet_ne

89 — 06.05.10 — 20:35

(88) или нет (

   Vet_ne

90 — 07.05.10 — 11:06

проблема актуальна (

   capitanjack

91 — 07.05.10 — 13:02

переустанавливай всё к чертовой матери

   Vet_ne

92 — 07.05.10 — 13:14

(91) уже задумался)))

   Vet_ne

93 — 07.05.10 — 13:34

(91) но без решения проблемы это не выход (((

   Vet_ne

94 — 12.05.10 — 15:51

проблема актуальна (

   Mitriy

95 — 12.05.10 — 15:55

(94) все переустановил?

   Vet_ne

96 — 12.05.10 — 16:07

(95) да, не помогло (

   Mitriy

97 — 12.05.10 — 16:29

(96) есть возможность вынести 1С на физический сервер? да и скуль, наверное, тоже…

   Vet_ne

98 — 12.05.10 — 16:35

(96) нет, только виртуалка

   Mitriy

99 — 12.05.10 — 16:39

(98) в виртуалке физический ключ сервера 1С не доступен же?

   Trance_1C

100 — 12.05.10 — 16:42

(0)Я так часто делаю 100!

I Have SQL Express installed on 17 ships. Each ship has a VB6 Client application using OLEDB to connect to the database on local machine. Other workstations on network also connect — we think without error. The error above is thrown on 4 of the 17 ships. The workstations acting as the file server are supposed to be identical (Windows XP).

We have been assured that all poer save settings on LAN Card and motherboard have been disabled.

If I google on this error, I get over 100 hits going back several years ! Ideas to fix have included turning off connection pooling and using TCPIP instead of Named Pipes on client workstation where database server and application are running.

Any other ideas on what could cause this, or why 13 machines are OK, but 4 are not ? Thanks.

Michael Meierruth

SSChampion

Points: 10051

Have been getting this error sporadically for years on a large SS2K site. Fortunately, it does not happen that often. But, in my case, it is mostly associated with something that goes through ADO+ODBC using TCP/IP. For a long time our software was blamed on it until I wrote a simple VB script routine that runs in a loop and remains permanently connected and executes a simple ‘select 0’ every mìnute. When an error occured it would get logged and then attempt to re-establish the connection.

The ADO Err stack always had two errors with the second one always being ‘General network error’. The first error would vary including your ‘ConnectionWrite(Send())’.

Now the problem was squarely in Microsoft’s terrrory. This problem was never solved. We checked the hardware, routers, service packs — you name it. We even ran the script on the database server itself and it would happen there as well.

Irish

Hall of Fame

Points: 3957

By far this is the most frustrating issue that I have been dealing with lately!!

We have a number of Services that connect to a SQL 2005 Database via OLEDB/ADO.  We are seeing these «General Network» Errors all the time recently.  We have checked hardware, software, Database Settings you name it.  Nothing seems to be able to shake this.

The network admins are insulted that we even suggest that there might be a problem with the network, but what else can we say?  They of course have not suggested any better solution.

Michael, you said that it’s squarely in Mico$oft’s territory now?  Did you open an incident on this?  Where is it now?

Regards, Irish 

Mark Story

SSC-Addicted

Points: 406

Thanks for the comments. I think opening up an incident with Microsoft is best idea here. Too bad, SQL Express is a really nice product — but if it can’t be made reliable…that certainly is an issue…

Michael Meierruth

SSChampion

Points: 10051

At the time an incident was opened but I think the client I worked for at the time then dropped it. The problem still occurs today but apparently with a frequency sufficiently low to be ignored by everyone.

Mark Story

SSC-Addicted

Points: 406

We are sending technician to one ship that has it bad and reinstall SQL Express 2005, make sure the most recent version is installed. Customer will loom to replace the workstation (XP) that holds the database.

Sugesh Kumar

One Orange Chip

Points: 27311

Mark Story

SSC-Addicted

Points: 406

Unfortnately thr service pack is for SQL Server 2000, while the database engine is SQL Express 2005.

We sent technician to ship; uninstalled/reinstalled. Looked ok until he left ship, then original problem resumes.

One note of interest, he had some trouble with .NET Framework 2.0 and had to reinstall that. So maybe «Assembly Hell» replaces «DLL Hell» ?

In any event, still no solution. During SQL installation the message was displayed that computer does not meet requirements…but those messages have been ignored up til now because no details are given and most computers work fine.

Irish

Hall of Fame

Points: 3957

We are still working on this one.  From what we have been able to discern, it appears to be the combination of SQL 2005 SP2 and 2003 SP2.  The investigation is on-going.  Thus far the Microsoft representation we have gotten has been unimpressive.

Regards, Irish 

Mike Sheen

SSC Veteran

Points: 235

I’m seeing this on SQL 2005, SQL 2000 — on both Windows XP and Windows Server 2003.

I can reproduce the problem reliably, but using our rather large ERP software (that we develop). I’m working on a small test app which will also reproduce the problem, such that I can raise a support issue with Microsoft. Being in software, I understand the importance of giving them something they can use to reliably reproduce the problem.

It seems to be (for us, anyway), when an ADO (OLEDB) connection is busy waiting for the server (in our case a long running stored procedure to return results to a Crystal Report), a second, separate OLEDB connection attempts to fire some queries against the same server. In my tests these queries are merely SELECT statements — which surprised me — given the error message returned was a ConnectionWrite send() error — nothing’s trying to write, so I suspect ConnectionWrite is referring to not a SQL Write (ie UPDATE / INSERT / DELETE), but a network connection to the SQL Server (think socket comms).

I thought it may have been related to connection pooling (as this was the only way I could see how one ADO connection could be affecting another), so I made sure the second connection to use different SQL credentials — this should make the two connections forced into separate pools — as the connection string is what is used to pool connections together. Anyway — the problem still occurs with connection pooling out of the equation.

Like I mentioned earlier, we use two ADO connections in our software — one for reporting, one for the application — and usually the reporting ADO connection has different SQL credentials anyway (for security purposes). Now the Reporting connection is in fact used by Crystal Reports 11 — I’m *assuming* it’s creating an OLEDB connection — as I’ve coded it to use the SQL OLEDB data provider. What other connection options Crystal decides to set is at present a complete mystery to me (In my experience Crystal can do bizarre things). First I’ll try to reproduce the problem with Crystal out of the equation.

I also tried the SynAttackProtect registry hack (http://support.microsoft.com/default.aspx?scid=kb;en-us;899599) — this also had no effect.

We’re a certified MS partner, and a certified MS ISV. If I can reproduce the problem reliable with a simple application I can provide to MS, I’ll do my all to make sure we see a solution… and I’ll be sure to post my progress with this issue here

Mike Sheen

SSC Veteran

Points: 235

Ok, I’ve made some discoveries.

It doesn’t seem to be a SQL or OLEDB problem. It certainly seems to be (in my case, anyway) related to Crystal Reports.

I found the problem only occurs when a query is issued on one connection whilst a Crystal Application Object (CRAXDT Version 11) is waiting for a stored procedure based report to being returning results. The Crystal Application object must be in the same application domain as the application issuing the query which fails.

Changing the network protocol used by SQL to be named pipes instead of TCP/IP seemed to improve things — I no longer got the DBNETLIB error, but the Crystal Report Application threw errors when it’s report finished (could be related, but with Crystal it’s hard to know).

This problem seems to be only reproducible when you are able to execute a query concurrently to the Crystal Application object awaiting stored procedure results — I would have said «ie: multi-threaded applications», but our application is not multi-threaded — it’s written in VB6 — but still we somehow are able to fire queries through our application despite the Crystal Application object awaiting results. Perhaps Crystal creates a new thread and runs in that ?

Mike Sheen

SSC Veteran

Points: 235

More discoveries.

I see this behaviour on SQL 2000 SP4, but not SQL 2000 with no SP’s.

In my situation, SQL 2000 with no SP seems to cause my application to be «less threaded» — ie: any Reports running waiting for stored procs causes the whole application to «block» and wait — ie: nothing else within the application can be run.

However, SP4 of SQL 2000 and the behaviour changes — no longer is my application «blocked» — I can load other reports, navigate menu’s, etc — and thus cause other queries to run and the DBNETLIB error occurs.

Mike Sheen

SSC Veteran

Points: 235

October 26, 2007 at 4:37 pm

#745932

An email from a reader of this forum has prompted me to post my conclusions.

Firstly, to re-cap on how we got the errors — they only occurred when Crystal Reports 11 was busy running a query, and we attempted to issue a SQL query (using OLEDB) on a different connection, but a connection within the same application.

We never found a solution to this problem. We did however, discover how we were able to issue a query when our application should have been blocked and waiting for Crystal to finish (our app is in VB6 and thus single threaded).

We use the Catalyst Socket Control for some of our functionality, and that control being in the app caused it to behave in a multi-threaded fashion ‘sometimes’. It seems that control gives the UI a degree of multi-threadedness (for want of a better term), and allowed the user to open forms, etc whilst waiting for a report and thus causing the subsequent errors.

From memory I believe we upgraded the control to the latest version, and the behaviour returned to what we had before — the UI does not respond whilst Crystal reports is running, and therefore no errors.

MikeySQL

Newbie

Points: 9

Irish

Hall of Fame

Points: 3957

December 6, 2007 at 10:26 am

#757765

What we found was related to a security feature added in Windows 2003 Service Pack 2. It is something called TCP Chimney. It all cropped up after applying SP 2. Removing the Service Pack did not resolve the issue. What we found out later is that the feature was there with SP1, but was not enabled by default as it was in SP2. Removing SP2 did not revert the setting back. We eneded up making a change in the Registry to resolve this.

Here’s more information:

http://www.microsoft.com/whdc/device/network/TCP_Chimney.mspx

http://msexchangeteam.com/archive/2007/07/18/446400.aspx

We issued the command «Netsh int ip set chimney DISABLED» and that made the issue go away for us.

Regards, Irish 

Понравилась статья? Поделить с друзьями:

Читайте также:

  • General input output error libreoffice
  • General error unable to open registry key temporary
  • General error sql error mysql4
  • General error see your printer documentation for information about clearing the error epson r300
  • General error please try again later findclone ошибка

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии