Меню

Программа установки sql server обнаружила следующую ошибку недостаточно места для отображения строк

RRS feed

  • Remove From My Forums
  • Question

  • Hi There,

    I am trying to install sql server 2014 Express addition,  i got the error during database engine installation.

    »

    sql server set up failure
    sql server set up has encountered the following error
    no room is available to display rows «

    Can anyone please help me to solve this error. Many thanks

All replies

    • Edited by

      Tuesday, August 8, 2017 3:54 AM

  • Hi
    Alibarcelona,

    Could you please share the full error message to us for analysis? You can get it from
    C:Program FilesMicrosoft SQL Server120Setup BootstrapLog, find the latest folder and get the detail.txt then share
    it across Onedrive.

    Based on my searching, this error message is returned by the GUI function, you can try to install it using command line
    in a quiet mode.

    Please refer to the following steps:

    1. Open CMD, cd to the dictionary which contains the installation media.
    2. Enter in setup.exe /quiet /action = install / [For other parameter, please refer to this document:
      https://docs.microsoft.com/en-us/sql/database-engine/install-windows/install-sql-server-2016-from-the-command-prompt]

    Best Regards,

    Teige


    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.

    • Proposed as answer by
      Teige Gao
      Monday, August 21, 2017 9:55 AM

RRS feed

  • Remove From My Forums
  • Question

  • Hi There,

    I am trying to install sql server 2014 Express addition,  i got the error during database engine installation.

    »

    sql server set up failure
    sql server set up has encountered the following error
    no room is available to display rows «

    Can anyone please help me to solve this error. Many thanks

All replies

    • Edited by

      Tuesday, August 8, 2017 3:54 AM

  • Hi
    Alibarcelona,

    Could you please share the full error message to us for analysis? You can get it from
    C:Program FilesMicrosoft SQL Server120Setup BootstrapLog, find the latest folder and get the detail.txt then share
    it across Onedrive.

    Based on my searching, this error message is returned by the GUI function, you can try to install it using command line
    in a quiet mode.

    Please refer to the following steps:

    1. Open CMD, cd to the dictionary which contains the installation media.
    2. Enter in setup.exe /quiet /action = install / [For other parameter, please refer to this document:
      https://docs.microsoft.com/en-us/sql/database-engine/install-windows/install-sql-server-2016-from-the-command-prompt]

    Best Regards,

    Teige


    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.

    • Proposed as answer by
      Teige Gao
      Monday, August 21, 2017 9:55 AM

SQL Server 2008 Enterprise SQL Server 2008 Developer SQL Server 2008 Standard SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup More…Less

Microsoft distributes Microsoft SQL Server 2008 and Microsoft SQL Server 2008 R2 fixes as one downloadable file. Because the fixes are cumulative, each new release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2008 or SQL Server 2008 fix release.

Symptoms

When you run a Full-Text query that uses compound words in Microsoft SQL Server 2008 or in Microsoft SQL Server 2008 R2, you receive the following error message in the Error log file:

Date Time spidID Error: 701, Severity: 17, State: 123.
Date Time spidID There is insufficient system memory in resource pool ‘internal’ to run this query.

Additionally, if you run a Full-Text query successfully after this problem occurs, you receive the same error message.

Cause

This problem occurs for all the following reasons:

  • There is a bug in the code that is used to evaluate how many rowsets are required to perform a sorting operation. Therefore, the code greatly overestimates the numbers of rowsets. The required grant estimate in full-text is 64 pages for each rowset that is required to sort.

  • There is a large request that blocks the system from using the memory that is reserved for the full-text query.

Resolution

Cumulative update information

SQL Server 2008 Service Pack 1

The fix for this issue was first released in Cumulative Update 9 for SQL Server 2008 Service Pack 1. For more information about this cumulative update package, click the following article number to view the article in the Microsoft Knowledge Base:

2083921 cumulative update 9 for SQL Server 2008 Service Pack 1Note Because the builds are cumulative, each new fix release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2008 fix release. Microsoft recommends that you consider applying the most recent fix release that contains this hotfix. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

970365 The SQL Server 2008 builds that were released after SQL Server 2008 Service Pack 1 was released Microsoft SQL Server 2008 hotfixes are created for specific SQL Server service packs. You must apply a SQL Server 2008 Service Pack 1 hotfix to an installation of SQL Server 2008 Service Pack 1. By default, any hotfix that is provided in a SQL Server service pack is included in the next SQL Server service pack.

SQL Server 2008 Service Pack 2

The fix for this issue was first released in Cumulative Update 1 for SQL Server 2008 Service Pack 2. For more information about this cumulative update package, click the following article number to view the article in the Microsoft Knowledge Base:

2289254 Cumulative update 1 for SQL Server 2008 Service Pack 2Note Because the builds are cumulative, each new fix release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2008 fix release. We recommend that you consider applying the most recent fix release that contains this hotfix. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

2402659 The SQL Server 2008 builds that were released after SQL Server 2008 Service Pack 2 was released

SQL Server 2008 R2


The fix for this issue was first released in Cumulative Update 4. For more information about how to obtain this cumulative update package for SQL Server 2008 R2, click the following article number to view the article in the Microsoft Knowledge Base:

2345451 Cumulative Update package 4 for SQL Server 2008 R2 Note Because the builds are cumulative, each new fix release contains all the hotfixes and all the security fixes that were included with the previous SQL Server 2008 R2 fix release. We recommend that you consider applying the most recent fix release that contains this hotfix. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

981356 The SQL Server 2008 R2 builds that were released after SQL Server 2008 R2 was released

Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the «Applies to» section.

References

For more information about the Incremental Servicing Model for SQL Server, click the following article number to view the article in the Microsoft Knowledge Base:

935897An Incremental Servicing Model is available from the SQL Server team to deliver hotfixes for reported problems

For more information about the naming schema for SQL Server updates, click the following article number to view the article in the Microsoft Knowledge Base:

822499New naming schema for Microsoft SQL Server software update packagesFor more information about Full-Text Search, visit the following Microsoft Developer Network (MSDN) website:

Full-Text Search (SQL Server)For more information about software update terminology, click the following article number to view the article in the Microsoft Knowledge Base:

824684 Description of the standard terminology that is used to describe Microsoft software updates

Need more help?

SQL Server 2008 Linked Server and ad-hoc INSERTs cause a rapid memory leak which eventually causes the server to become non-responsive and ends with the following error:

Msg 701, Level 17, State 123, Server BRECK-PCSQLEXPRESS, Line 2
There is insufficient system memory in resource pool 'internal' to run this 
query.

Location:        qxcntxt.cpp:1052
Expression:      cref == 0
SPID:            51
Process ID:      1880

The server remains non-responsive until SQL Server is restarted.

Software in use:

  • Windows Vista Ultimate 64 bit build 6001 SP1

  • Microsoft SQL Server 2008 (SP1) — 10.0.2734.0 (X64) Sep 11 2009 14:30:58 Copyright (c) 1988-2008 Microsoft Corporation Express Edition with Advanced Services (64-bit) on Windows NT 6.0 (Build 6001: Service Pack 1)

  • SAOLEDB.11 driver from SQL Anywhere 11.0.1.2276

Setting max server memory (MB) to 2048 did not help.

Adding various -g values (e.g., -g256;) to the server Startup Parameters did not help.

Using DBCC FREESYSTEMCACHE ( ‘ALL’ ), DBCC FREESESSIONCACHE and DBCC FREEPROCCACHE did not help.

Installing the Cumnulative update package 4 to SQL Server 2008 Service Pack 1 did not help, even though it contained a fix to a memory leak symptom involving Linked Server usage.

Separating the SELECT … ROW_NUMBER() OVER … query from the INSERT did not help. Experimentation showed that the complex SELECT did not cause the memory leak, the INSERT did.

Changing the code to use the ad-hoc «INSERT INTO OPENROWSET» syntax instead of a linked server did not help; the code below shows the linked server usage.

The sysinternals.com Process Explore utility shows that the memory usage was associated with sqlserver.exe, not the DLLs used by the SQL Anywhere OLEDB driver SAOLEDB.11.

Note that the SQL Anywhere version of linked server (proxy tables) works OK, to «pull» 1.9 million rows from a SQL Server 2008 table to a SQL Anywhere 11 database in a single transaction. The logic shown here is an attempt to use the linked server feature to «push» the rows; same direction, different syntax.

The code follows; 4G of RAM is exhausted after three or four executions of the EXECUTE copy_mss_t2:

EXEC sys.sp_configure 
   N'show advanced options',  
   N'1'
GO

RECONFIGURE WITH OVERRIDE
GO

EXEC sys.sp_configure
   N'max server memory (MB)',
   N'2048'
GO

RECONFIGURE WITH OVERRIDE
GO

EXEC sys.sp_configure
   N'show advanced options',
   N'0'
GO

RECONFIGURE WITH OVERRIDE
GO
EXEC master.dbo.sp_MSset_oledb_prop
   N'SAOLEDB.11',
   N'AllowInProcess',
   1
GO

sp_addlinkedserver
   @server = 'mem',
   @srvproduct = 'SQL Anywhere OLE DB Provider',
   @provider = 'SAOLEDB.11',
   @datasrc = 'mem_PAVILION2'
GO

EXEC master.dbo.sp_serveroption
   @server=N'mem',
   @optname=N'rpc',
   @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption
   @server=N'mem',
   @optname=N'rpc out',
   @optvalue=N'true'
GO

sp_addlinkedsrvlogin
   @rmtsrvname = 'mem',
   @useself = 'false',
   @locallogin = NULL,
   @rmtuser = 'dba',
   @rmtpassword = 'sql'
GO

CREATE PROCEDURE copy_mss_t2
   @from_row            BIGINT,
   @to_row              BIGINT,
   @rows_copied_count   BIGINT OUTPUT
AS

   SELECT *
     INTO #t
     FROM ( SELECT *,
                   ROW_NUMBER()
                      OVER ( ORDER BY sample_set_number,
                                      connection_number )
                   AS t2_row_number
             FROM mss_t2 ) AS ordered_mss_t2
    WHERE ordered_mss_t2.t2_row_number BETWEEN @from_row AND @to_row;

   SELECT @rows_copied_count = COUNT(*)
     FROM #t;

INSERT INTO mem..dba.sa_t2
SELECT sampling_id,
       sample_set_number,
       connection_number,
       blocker_owner_table_name,
       blocker_lock_type,
       blocker_owner_name,
       blocker_table_name,
       blocker_reason,
       blocker_row_identifier,
       current_engine_version,
       page_size,
       ApproximateCPUTime,
       BlockedOn,
       BytesReceived,
       BytesSent,
       CacheHits,
       CacheRead,
   "Commit",
   DiskRead,
   DiskWrite,
   FullCompare,
   IndAdd,
   IndLookup,
   Isolation_level,
   LastReqTime,
   LastStatement,
   LockCount,
   LockName,
   LockTableOID,
   LoginTime,
   LogWrite,
   Name,
   NodeAddress,
   Prepares,
   PrepStmt,
   QueryLowMemoryStrategy,
   QueryOptimized,
   QueryReused,
   ReqCountActive,
   ReqCountBlockContention,
   ReqCountBlockIO,
   ReqCountBlockLock,
   ReqCountUnscheduled,
   ReqStatus,
   ReqTimeActive,
   ReqTimeBlockContention,
   ReqTimeBlockIO,
   ReqTimeBlockLock,
   ReqTimeUnscheduled,
   ReqType,
   RequestsReceived,
   Rlbk,
   RollbackLogPages,
   TempFilePages,
   TransactionStartTime,
   UncommitOp,
   Userid,
   previous_ApproximateCPUTime,
   interval_ApproximateCPUTime,
   previous_Commit,
   interval_Commit,
   previous_Rlbk,
   interval_Rlbk
  FROM #t;

GO

DECLARE @rows_copied_count BIGINT
EXECUTE copy_mss_t2 1110001, 1120000, @rows_copied_count OUTPUT
SELECT @rows_copied_count
GO

EXECUTE create_linked_server
GO

DECLARE @rows_copied_count BIGINT
EXECUTE copy_mss_t2 1120001, 1130000, @rows_copied_count OUTPUT
SELECT @rows_copied_count
GO

EXECUTE create_linked_server
GO

Here is the SQL Server source table, containing about 1G of data in 1.9 million rows:

CREATE TABLE mss_t2 (
   sampling_id                       BIGINT NOT NULL,
   sample_set_number                 BIGINT NOT NULL,
   connection_number                 BIGINT NOT NULL,
   blocker_owner_table_name          VARCHAR ( 257 ) NULL,
   blocker_lock_type                 VARCHAR ( 32 ) NULL,
   blocker_owner_name                VARCHAR ( 128 ) NULL,
   blocker_table_name                VARCHAR ( 128 ) NULL,
   blocker_reason                    TEXT NULL,
   blocker_row_identifier            VARCHAR ( 32 ) NULL,
   current_engine_version            TEXT NOT NULL,
   page_size                         INTEGER NOT NULL,
   ApproximateCPUTime                DECIMAL ( 30, 6 ) NULL,
   BlockedOn                         BIGINT NULL,
   BytesReceived                     BIGINT NULL,
   BytesSent                         BIGINT NULL,
   CacheHits                         BIGINT NULL,
   CacheRead                         BIGINT NULL,
   "Commit"                          BIGINT NULL,
   DiskRead                          BIGINT NULL,
   DiskWrite                         BIGINT NULL,
   FullCompare                       BIGINT NULL,
   IndAdd                            BIGINT NULL,
   IndLookup                         BIGINT NULL,
   Isolation_level                   BIGINT NULL,
   LastReqTime                       TEXT NOT NULL DEFAULT '1900-01-01',
   LastStatement                     TEXT NULL,
   LockCount                         BIGINT NULL,
   LockName                          BIGINT NULL,
   LockTableOID                      BIGINT NULL,
   LoginTime                         TEXT NOT NULL DEFAULT '1900-01-01',
   LogWrite                          BIGINT NULL,
   Name                              VARCHAR ( 128 ) NULL,
   NodeAddress                       TEXT NULL,
   Prepares                          BIGINT NULL,
   PrepStmt                          BIGINT NULL,
   QueryLowMemoryStrategy            BIGINT NULL,
   QueryOptimized                    BIGINT NULL,
   QueryReused                       BIGINT NULL,
   ReqCountActive                    BIGINT NULL,
   ReqCountBlockContention           BIGINT NULL,
   ReqCountBlockIO                   BIGINT NULL,
   ReqCountBlockLock                 BIGINT NULL,
   ReqCountUnscheduled               BIGINT NULL,
   ReqStatus                         TEXT NULL,
   ReqTimeActive                     DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockContention            DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockIO                    DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockLock                  DECIMAL ( 30, 6 ) NULL,
   ReqTimeUnscheduled                DECIMAL ( 30, 6 ) NULL,
   ReqType                           TEXT NULL,
   RequestsReceived                  BIGINT NULL,
   Rlbk                              BIGINT NULL,
   RollbackLogPages                  BIGINT NULL,
   TempFilePages                     BIGINT NULL,
   TransactionStartTime              TEXT NOT NULL DEFAULT '1900-01-01',
   UncommitOp                        BIGINT NULL,
   Userid                            VARCHAR ( 128 ) NULL,
   previous_ApproximateCPUTime       DECIMAL ( 30, 6 ) NOT NULL DEFAULT 0.0,
   interval_ApproximateCPUTime       AS ( COALESCE ( "ApproximateCPUTime", 0 ) - previous_ApproximateCPUTime ),
   previous_Commit                   BIGINT NOT NULL DEFAULT 0,
   interval_Commit                   AS  ( COALESCE ( "Commit", 0 ) - previous_Commit ),
   previous_Rlbk                     BIGINT NOT NULL DEFAULT 0,
   interval_Rlbk                     AS  ( COALESCE ( Rlbk, 0 ) - previous_Rlbk ) )

Here is the target table in SQL Anywhere 11:

CREATE TABLE sa_t2 (
   sampling_id                       BIGINT NOT NULL,
   sample_set_number                 BIGINT NOT NULL,
   connection_number                 BIGINT NOT NULL,
   blocker_owner_table_name          VARCHAR ( 257 ) NULL,
   blocker_lock_type                 VARCHAR ( 32 ) NULL,
   blocker_owner_name                VARCHAR ( 128 ) NULL,
   blocker_table_name                VARCHAR ( 128 ) NULL,
   blocker_reason                    TEXT NULL,
   blocker_row_identifier            VARCHAR ( 32 ) NULL,
   current_engine_version            TEXT NOT NULL,
   page_size                         INTEGER NOT NULL,
   ApproximateCPUTime                DECIMAL ( 30, 6 ) NULL,
   BlockedOn                         BIGINT NULL,
   BytesReceived                     BIGINT NULL,
   BytesSent                         BIGINT NULL,
   CacheHits                         BIGINT NULL,
   CacheRead                         BIGINT NULL,
   "Commit"                          BIGINT NULL,
   DiskRead                          BIGINT NULL,
   DiskWrite                         BIGINT NULL,
   FullCompare                       BIGINT NULL,
   IndAdd                            BIGINT NULL,
   IndLookup                         BIGINT NULL,
   Isolation_level                   BIGINT NULL,
   LastReqTime                       TEXT NOT NULL DEFAULT '1900-01-01',
   LastStatement                     TEXT NULL,
   LockCount                         BIGINT NULL,
   LockName                          BIGINT NULL,
   LockTableOID                      BIGINT NULL,
   LoginTime                         TEXT NOT NULL DEFAULT '1900-01-01',
   LogWrite                          BIGINT NULL,
   Name                              VARCHAR ( 128 ) NULL,
   NodeAddress                       TEXT NULL,
   Prepares                          BIGINT NULL,
   PrepStmt                          BIGINT NULL,
   QueryLowMemoryStrategy            BIGINT NULL,
   QueryOptimized                    BIGINT NULL,
   QueryReused                       BIGINT NULL,
   ReqCountActive                    BIGINT NULL,
   ReqCountBlockContention           BIGINT NULL,
   ReqCountBlockIO                   BIGINT NULL,
   ReqCountBlockLock                 BIGINT NULL,
   ReqCountUnscheduled               BIGINT NULL,
   ReqStatus                         TEXT NULL,
   ReqTimeActive                     DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockContention            DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockIO                    DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockLock                  DECIMAL ( 30, 6 ) NULL,
   ReqTimeUnscheduled                DECIMAL ( 30, 6 ) NULL,
   ReqType                           TEXT NULL,
   RequestsReceived                  BIGINT NULL,
   Rlbk                              BIGINT NULL,
   RollbackLogPages                  BIGINT NULL,
   TempFilePages                     BIGINT NULL,
   TransactionStartTime              TEXT NOT NULL DEFAULT '1900-01-01',
   UncommitOp                        BIGINT NULL,
   Userid                            VARCHAR ( 128 ) NULL,
   previous_ApproximateCPUTime       DECIMAL ( 30, 6 ) NOT NULL DEFAULT 0.0,
   interval_ApproximateCPUTime       DECIMAL ( 30, 6 ) NOT NULL COMPUTE ( COALESCE ( "ApproximateCPUTime", 0 ) - previous_ApproximateCPUTime ),
   previous_Commit                   BIGINT NOT NULL DEFAULT 0,
   interval_Commit                   BIGINT NOT NULL COMPUTE ( COALESCE ( "Commit", 0 ) - previous_Commit ),
   previous_Rlbk                     BIGINT NOT NULL DEFAULT 0,
   interval_Rlbk                     BIGINT NOT NULL COMPUTE ( COALESCE ( Rlbk, 0 ) - previous_Rlbk ),
   PRIMARY KEY ( sample_set_number, connection_number ) );

    Вчера MS SQL Server преподнес мне сюрприз. При создании новой базы данных он выдал ошибку «There is insufficient system memory in resource pool ‘internal’ to run this query» и «умер» – сервис SQL Server не запускался, а в ERRORLOG сыпались ошибки:

Msg 701, Level 17, State 130, Server XYZ, Line 1
There is insufficient system memory in resource pool 'internal' to run this query.

    У MS SQL Server существует два параметра управляющие использованием памяти:

Параметр Доступный объем памяти По умолчанию Минимально допустимое
min server memory Минимальный 0 0
max server memory Максимальный 2 147 483 647 МБ 128 МБ

Почему-то мой MS SQL Server 2019 решил, что у него украли всю память и выставил себе в параметр «max server memory» минимально допустимое значение – 128 мегабайт. Все «танцы с бубном» в попытке реанимировать сервер я описывать не буду, просто расскажу решение по шагам.

  1. Находим в реестре строку запуска службы MS SQL Server и добавляем в нее два параметра:
    • f — разрешает только одно соединение и запускает экземпляр MS SQL Server в минимальной конфигурации;
    • mSQLCMD — разрешает только одно соединение, которое должно идентифицироваться как «sqlcmd» (что бы никто другой не занял единственный коннект).

    Параметр ImagePath службы MSSQLSERVER

  2. Запускам службу MS SQL Server. Если она не запустилась, то можно дальше не читать.
  3. Подключаемся к MS SQL Server используя sqlcmd и проверяем максимально доступный размер памяти у SQL Server:
    select cast(value as integer), cast(value_in_use as integer)
    from sys.configurations
    where name = 'max server memory (MB)'
  4. Параметры «min server memory» и «max server memory» являются расширенными, поэтому для работы с ними значение параметра «show advanced options» устанавливаем в 1:
    sp_configure 'show advanced options', 1
    go
    reconfigure
    go
  5. Меняем значение параметра «max server memory» на нужное значение (например, значение по умолчанию):
    sp_configure 'max server memory (mb)', 2147483647
    go
    reconfigure
    go
  6. Меняем значение параметра «show advanced options» обратно на 0:
    sp_configure 'show advanced options', 0
    go
    reconfigure
    go
  7. Из строки запуска службы MS SQL Server убираем добавленные параметры: «-f -mSQLCMD».
  8. Перезапускаем службу MS SQL Server.

Изменение параметра 'max server memory (mb)'

  • Remove From My Forums

 none

На диске недостаточно свободного места для создания базы данных

  • Вопрос

  • Приветствую!

    Кто может объяснить следующее поведение сервера. Пытаюсь восстановить базу из резервной копии. Размер файла для восстановления 4 Гб (размер «раскатанной/рабочей» самой базы —102238,19 МБ), на диске 51,4 Гб свободно из 249
    Гб.

    Получаю сообщение об ошибки:

    Сообщение 3257, уровень 16, состояние 1, строка 15
    На диске «C:» недостаточно свободного места для создания базы данных. Для создания базы данных необходимо дополнительно 107204509696 байт, а доступно только 55291170816 байт.
    Сообщение 3119, уровень 16, состояние 4, строка 15
    При планировании инструкции RESTORE возникли проблемы. Подробнее см. в предыдущих сообщениях.
    Сообщение 3013, уровень 16, состояние 1, строка 15
    RESTORE DATABASE прервано с ошибкой.

    Как это можно объяснить?

Ответы

  • размер «раскатанной/рабочей» самой базы —102238,19 МБ), на диске 51,4 Гб свободно

    Нужно для восстановления ~100Гб, есть ~50Гб.

    • Изменено

      28 августа 2018 г. 13:33

    • Предложено в качестве ответа
      Alexey Klimenko
      28 августа 2018 г. 13:53
    • Помечено в качестве ответа
      Vector BCOModerator
      28 августа 2018 г. 17:18

Связанный сервер SQL Server 2008 и специальные команды INSERT вызывают быструю утечку памяти, которая в конечном итоге приводит к тому, что сервер перестает отвечать на запросы и заканчивается следующей ошибкой:

Msg 701, Level 17, State 123, Server BRECK-PCSQLEXPRESS, Line 2
There is insufficient system memory in resource pool 'internal' to run this 
query.

Location:        qxcntxt.cpp:1052
Expression:      cref == 0
SPID:            51
Process ID:      1880

Сервер не отвечает до перезапуска SQL Server.

Используемое программное обеспечение:

  • 64-разрядная версия Windows Vista Ultimate, сборка 6001 с пакетом обновления 1 (SPXNUMX)

  • Microsoft SQL Server 2008 (SP1) — 10.0.2734.0 (X64) 11 сентября 2009 г. 14:30:58 Авторские права (c) 1988-2008 Microsoft Corporation Express Edition с расширенными службами (64-разрядная версия) в Windows NT 6.0 (сборка 6001: служба Пакет 1)

  • Драйвер SAOLEDB.11 из SQL Anywhere 11.0.1.2276

Установка максимального объема памяти сервера (МБ) на 2048 не помогла.

Добавление различных значений -g (например, -g256;) в параметры запуска сервера не помогло.

Использование DBCC FREESYSTEMCACHE (‘ALL’), DBCC FREESESSIONCACHE и DBCC FREEPROCCACHE не помогло.

Установка Cumnulative update package 4 в SQL Server 2008 Service Pack 1 не помогла, даже несмотря на то, что он содержал исправление для симптома утечки памяти, связанного с использованием связанного сервера.

Отделение запроса SELECT … ROW_NUMBER () OVER … от INSERT не помогло. Эксперименты показали, что сложный SELECT не вызывает утечки памяти, в отличие от INSERT.

Изменение кода для использования специального синтаксиса «INSERT INTO OPENROWSET» вместо связанного сервера не помогло; код ниже показывает использование связанного сервера.

Утилита sysinternals.com Process Explore показывает, что использование памяти было связано с sqlserver.exe, а не с библиотеками DLL, используемыми драйвером SQL Anywhere OLEDB SAOLEDB.11.

Обратите внимание, что версия связанного сервера SQL Anywhere (прокси-таблицы) работает нормально, «вытаскивая» 1.9 миллиона строк из таблицы SQL Server 2008 в базу данных SQL Anywhere 11 за одну транзакцию. Показанная здесь логика является попыткой использовать функцию связанного сервера для «проталкивания» строк; то же направление, другой синтаксис.

Код следует; 4G RAM исчерпывается после трех или четырех выполнений EXECUTE copy_mss_t2:

EXEC sys.sp_configure 
   N'show advanced options',  
   N'1'
GO

RECONFIGURE WITH OVERRIDE
GO

EXEC sys.sp_configure
   N'max server memory (MB)',
   N'2048'
GO

RECONFIGURE WITH OVERRIDE
GO

EXEC sys.sp_configure
   N'show advanced options',
   N'0'
GO

RECONFIGURE WITH OVERRIDE
GO
EXEC master.dbo.sp_MSset_oledb_prop
   N'SAOLEDB.11',
   N'AllowInProcess',
   1
GO

sp_addlinkedserver
   @server = 'mem',
   @srvproduct = 'SQL Anywhere OLE DB Provider',
   @provider = 'SAOLEDB.11',
   @datasrc = 'mem_PAVILION2'
GO

EXEC master.dbo.sp_serveroption
   @server=N'mem',
   @optname=N'rpc',
   @optvalue=N'true'
GO

EXEC master.dbo.sp_serveroption
   @server=N'mem',
   @optname=N'rpc out',
   @optvalue=N'true'
GO

sp_addlinkedsrvlogin
   @rmtsrvname = 'mem',
   @useself = 'false',
   @locallogin = NULL,
   @rmtuser = 'dba',
   @rmtpassword = 'sql'
GO

CREATE PROCEDURE copy_mss_t2
   @from_row            BIGINT,
   @to_row              BIGINT,
   @rows_copied_count   BIGINT OUTPUT
AS

   SELECT *
     INTO #t
     FROM ( SELECT *,
                   ROW_NUMBER()
                      OVER ( ORDER BY sample_set_number,
                                      connection_number )
                   AS t2_row_number
             FROM mss_t2 ) AS ordered_mss_t2
    WHERE ordered_mss_t2.t2_row_number BETWEEN @from_row AND @to_row;

   SELECT @rows_copied_count = COUNT(*)
     FROM #t;

INSERT INTO mem..dba.sa_t2
SELECT sampling_id,
       sample_set_number,
       connection_number,
       blocker_owner_table_name,
       blocker_lock_type,
       blocker_owner_name,
       blocker_table_name,
       blocker_reason,
       blocker_row_identifier,
       current_engine_version,
       page_size,
       ApproximateCPUTime,
       BlockedOn,
       BytesReceived,
       BytesSent,
       CacheHits,
       CacheRead,
   "Commit",
   DiskRead,
   DiskWrite,
   FullCompare,
   IndAdd,
   IndLookup,
   Isolation_level,
   LastReqTime,
   LastStatement,
   LockCount,
   LockName,
   LockTableOID,
   LoginTime,
   LogWrite,
   Name,
   NodeAddress,
   Prepares,
   PrepStmt,
   QueryLowMemoryStrategy,
   QueryOptimized,
   QueryReused,
   ReqCountActive,
   ReqCountBlockContention,
   ReqCountBlockIO,
   ReqCountBlockLock,
   ReqCountUnscheduled,
   ReqStatus,
   ReqTimeActive,
   ReqTimeBlockContention,
   ReqTimeBlockIO,
   ReqTimeBlockLock,
   ReqTimeUnscheduled,
   ReqType,
   RequestsReceived,
   Rlbk,
   RollbackLogPages,
   TempFilePages,
   TransactionStartTime,
   UncommitOp,
   Userid,
   previous_ApproximateCPUTime,
   interval_ApproximateCPUTime,
   previous_Commit,
   interval_Commit,
   previous_Rlbk,
   interval_Rlbk
  FROM #t;

GO

DECLARE @rows_copied_count BIGINT
EXECUTE copy_mss_t2 1110001, 1120000, @rows_copied_count OUTPUT
SELECT @rows_copied_count
GO

EXECUTE create_linked_server
GO

DECLARE @rows_copied_count BIGINT
EXECUTE copy_mss_t2 1120001, 1130000, @rows_copied_count OUTPUT
SELECT @rows_copied_count
GO

EXECUTE create_linked_server
GO

Вот исходная таблица SQL Server, содержащая около 1 ГБ данных в 1.9 миллиона строк:

CREATE TABLE mss_t2 (
   sampling_id                       BIGINT NOT NULL,
   sample_set_number                 BIGINT NOT NULL,
   connection_number                 BIGINT NOT NULL,
   blocker_owner_table_name          VARCHAR ( 257 ) NULL,
   blocker_lock_type                 VARCHAR ( 32 ) NULL,
   blocker_owner_name                VARCHAR ( 128 ) NULL,
   blocker_table_name                VARCHAR ( 128 ) NULL,
   blocker_reason                    TEXT NULL,
   blocker_row_identifier            VARCHAR ( 32 ) NULL,
   current_engine_version            TEXT NOT NULL,
   page_size                         INTEGER NOT NULL,
   ApproximateCPUTime                DECIMAL ( 30, 6 ) NULL,
   BlockedOn                         BIGINT NULL,
   BytesReceived                     BIGINT NULL,
   BytesSent                         BIGINT NULL,
   CacheHits                         BIGINT NULL,
   CacheRead                         BIGINT NULL,
   "Commit"                          BIGINT NULL,
   DiskRead                          BIGINT NULL,
   DiskWrite                         BIGINT NULL,
   FullCompare                       BIGINT NULL,
   IndAdd                            BIGINT NULL,
   IndLookup                         BIGINT NULL,
   Isolation_level                   BIGINT NULL,
   LastReqTime                       TEXT NOT NULL DEFAULT '1900-01-01',
   LastStatement                     TEXT NULL,
   LockCount                         BIGINT NULL,
   LockName                          BIGINT NULL,
   LockTableOID                      BIGINT NULL,
   LoginTime                         TEXT NOT NULL DEFAULT '1900-01-01',
   LogWrite                          BIGINT NULL,
   Name                              VARCHAR ( 128 ) NULL,
   NodeAddress                       TEXT NULL,
   Prepares                          BIGINT NULL,
   PrepStmt                          BIGINT NULL,
   QueryLowMemoryStrategy            BIGINT NULL,
   QueryOptimized                    BIGINT NULL,
   QueryReused                       BIGINT NULL,
   ReqCountActive                    BIGINT NULL,
   ReqCountBlockContention           BIGINT NULL,
   ReqCountBlockIO                   BIGINT NULL,
   ReqCountBlockLock                 BIGINT NULL,
   ReqCountUnscheduled               BIGINT NULL,
   ReqStatus                         TEXT NULL,
   ReqTimeActive                     DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockContention            DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockIO                    DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockLock                  DECIMAL ( 30, 6 ) NULL,
   ReqTimeUnscheduled                DECIMAL ( 30, 6 ) NULL,
   ReqType                           TEXT NULL,
   RequestsReceived                  BIGINT NULL,
   Rlbk                              BIGINT NULL,
   RollbackLogPages                  BIGINT NULL,
   TempFilePages                     BIGINT NULL,
   TransactionStartTime              TEXT NOT NULL DEFAULT '1900-01-01',
   UncommitOp                        BIGINT NULL,
   Userid                            VARCHAR ( 128 ) NULL,
   previous_ApproximateCPUTime       DECIMAL ( 30, 6 ) NOT NULL DEFAULT 0.0,
   interval_ApproximateCPUTime       AS ( COALESCE ( "ApproximateCPUTime", 0 ) - previous_ApproximateCPUTime ),
   previous_Commit                   BIGINT NOT NULL DEFAULT 0,
   interval_Commit                   AS  ( COALESCE ( "Commit", 0 ) - previous_Commit ),
   previous_Rlbk                     BIGINT NOT NULL DEFAULT 0,
   interval_Rlbk                     AS  ( COALESCE ( Rlbk, 0 ) - previous_Rlbk ) )

Вот целевая таблица в SQL Anywhere 11:

CREATE TABLE sa_t2 (
   sampling_id                       BIGINT NOT NULL,
   sample_set_number                 BIGINT NOT NULL,
   connection_number                 BIGINT NOT NULL,
   blocker_owner_table_name          VARCHAR ( 257 ) NULL,
   blocker_lock_type                 VARCHAR ( 32 ) NULL,
   blocker_owner_name                VARCHAR ( 128 ) NULL,
   blocker_table_name                VARCHAR ( 128 ) NULL,
   blocker_reason                    TEXT NULL,
   blocker_row_identifier            VARCHAR ( 32 ) NULL,
   current_engine_version            TEXT NOT NULL,
   page_size                         INTEGER NOT NULL,
   ApproximateCPUTime                DECIMAL ( 30, 6 ) NULL,
   BlockedOn                         BIGINT NULL,
   BytesReceived                     BIGINT NULL,
   BytesSent                         BIGINT NULL,
   CacheHits                         BIGINT NULL,
   CacheRead                         BIGINT NULL,
   "Commit"                          BIGINT NULL,
   DiskRead                          BIGINT NULL,
   DiskWrite                         BIGINT NULL,
   FullCompare                       BIGINT NULL,
   IndAdd                            BIGINT NULL,
   IndLookup                         BIGINT NULL,
   Isolation_level                   BIGINT NULL,
   LastReqTime                       TEXT NOT NULL DEFAULT '1900-01-01',
   LastStatement                     TEXT NULL,
   LockCount                         BIGINT NULL,
   LockName                          BIGINT NULL,
   LockTableOID                      BIGINT NULL,
   LoginTime                         TEXT NOT NULL DEFAULT '1900-01-01',
   LogWrite                          BIGINT NULL,
   Name                              VARCHAR ( 128 ) NULL,
   NodeAddress                       TEXT NULL,
   Prepares                          BIGINT NULL,
   PrepStmt                          BIGINT NULL,
   QueryLowMemoryStrategy            BIGINT NULL,
   QueryOptimized                    BIGINT NULL,
   QueryReused                       BIGINT NULL,
   ReqCountActive                    BIGINT NULL,
   ReqCountBlockContention           BIGINT NULL,
   ReqCountBlockIO                   BIGINT NULL,
   ReqCountBlockLock                 BIGINT NULL,
   ReqCountUnscheduled               BIGINT NULL,
   ReqStatus                         TEXT NULL,
   ReqTimeActive                     DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockContention            DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockIO                    DECIMAL ( 30, 6 ) NULL,
   ReqTimeBlockLock                  DECIMAL ( 30, 6 ) NULL,
   ReqTimeUnscheduled                DECIMAL ( 30, 6 ) NULL,
   ReqType                           TEXT NULL,
   RequestsReceived                  BIGINT NULL,
   Rlbk                              BIGINT NULL,
   RollbackLogPages                  BIGINT NULL,
   TempFilePages                     BIGINT NULL,
   TransactionStartTime              TEXT NOT NULL DEFAULT '1900-01-01',
   UncommitOp                        BIGINT NULL,
   Userid                            VARCHAR ( 128 ) NULL,
   previous_ApproximateCPUTime       DECIMAL ( 30, 6 ) NOT NULL DEFAULT 0.0,
   interval_ApproximateCPUTime       DECIMAL ( 30, 6 ) NOT NULL COMPUTE ( COALESCE ( "ApproximateCPUTime", 0 ) - previous_ApproximateCPUTime ),
   previous_Commit                   BIGINT NOT NULL DEFAULT 0,
   interval_Commit                   BIGINT NOT NULL COMPUTE ( COALESCE ( "Commit", 0 ) - previous_Commit ),
   previous_Rlbk                     BIGINT NOT NULL DEFAULT 0,
   interval_Rlbk                     BIGINT NOT NULL COMPUTE ( COALESCE ( Rlbk, 0 ) - previous_Rlbk ),
   PRIMARY KEY ( sample_set_number, connection_number ) );

однажды не хватило места для нужной операции немножко и пока покупали винты удалили папку:

C:WindowsInstaller

теперь при установке сабжа проблемы типа

«ЗАГОЛОВОК: Ошибка установки SQL Server.

——————————

Программа установки SQL Server обнаружила следующую ошибку:

В кэше отсутствует MSI-файл обновления «C:WindowsInstaller320614.msi».

«sql_bids_loc.msi» — оригинальный файл, который был установлен для продукта «SQL Server 2012 BI Development Studio» из «», версии «11.1.3000.0», на языке «RUS».

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

Дополнительные сведения о решении этой проблемы см. в разделе «Действия по восстановлению в кэше недостающего файла установщика Windows» (http://go.microsoft.com/fwlink/?LinkId=144387) в базе знаний Майкрософт.

Код ошибки 0x84B20002.

Чтобы получить справку, щелкните: http://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft SQL Server&EvtSrc=setup.rll&EvtID=50000&EvtType=0xD66F84B3%400xF762992B%401202%402

——————————

КНОПКИ:

ОК

——————————

»

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

файлов несколько десятков этих .msi.

можно быстро решить этот вопрос?


Я довольно новичок в SQL Server 2012, я был бы признателен, если кто-то может помочь. Я восстановил копию огромной базы данных в SQL Server 2012 и попытался выполнить несколько простых запросов к ней.

Я пытаюсь выполнить запрос SELECT к таблице 136898115строк в базе данных . Этот SELECTзапрос имеет только простое WHEREпредложение. Каждый раз, когда я запускаю этот запрос, он терпит неудачу, потому что на системном диске (в разделе, где установлена ​​Windows C:) не хватает места (в этом разделе только 6 ГБ свободного места), и я не понимаю, почему. Я определил, что моя база данных tempdb находится на другом диске, на котором имеется более 14 терабайт свободного места. Конечно, моя база данных тоже находится на другом диске.

Что заставляет мой системный раздел исчерпывать пространство? Это файл подкачки?



Ответы:


По умолчанию кэш результатов SSMS кешируется на диск C :. Перейдите в Инструмент Параметры. Смотри приложение. Измените это на другой том с большим объемом памяти, и все будет в порядке.

введите описание изображения здесь





Хорошо, я понял это: мы с Эриком оба были правы!

  • Путь в диалоге, как я уже сказал, просто путь по умолчанию для сохранения результатов запроса.
  • Результаты запроса будут кэшируется на диск (я был неправ), но в локальном профиле временной папки ( C:Users<UserName>AppDataLocalTempв моем случае здесь). Я проверил, и, похоже, нет очевидного способа отключить это кэширование.

Итак, вынос:

  • Избегайте запуска SSMS непосредственно в окне SQL
  • Не SELECT *из огромной таблицы в SSMS, если набор результатов не может поместиться в папке профиля
  • Убедитесь, что параметр максимальной памяти SQL Server настроен правильно (это может или не может способствовать этой проблеме в отношении роста файла подкачки)

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

Инструменты | Варианты это не ответ. У меня был установлен диск Y: пока я наблюдал, как мой запрос выполнялся, а пространство на диске C: уменьшилось с 2,9 ГБ до 5,04 МБ (до того, как я убил запрос).

Поэтому я подумал, что это, вероятно, результаты кэширования (так как они очень большие, когда каждая строка, содержащая большой кусок XML) возвращается в каталог Temp, как сказал Джон, однако он не был уверен, как вы это измените.

Чтобы изменить место записи временных файлов, я открыл мои переменные окружения и отредактировал пользовательские переменные TEMP и TMP (которые оба были установлены в C: Temp) для записи в Z: Temp.

Я могу подтвердить, что после этого изменения я наблюдал, как запрос создает очень большой файл в моей папке Z: Temp.



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

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

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Программа для чтения ошибок автомобиля форд фокус 2
  • Программные ошибки факторы влияющие на характеристики обнаруживаемых ошибок