Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   WSUS (http://forum.oszone.net/forumdisplay.php?f=99)
-   -   [решено] Большое потребление оперативной памяти базой данных WSUS на Windows Internal Database (http://forum.oszone.net/showthread.php?t=343571)

mikezhirnyi 07-01-2020 12:00 2903884

Большое потребление оперативной памяти базой данных WSUS на Windows Internal Database
 
Доброго времени суток. Заметил некоторое время назад, что процесс “SQL Server Windows NT - 64 bit” постепенно пожирает оперативную память сервера Win 2016. Чем дольше работает сервер, тем больше оперативной памяти выделено под этот процесс и так, как я понимаю, может быть до бесконечности, пока не перезагрузить сервер, тогда объем занимаемой памяти сбрасывается и процесс начинает наращивать ее по новой. На сервере кроме WID базы WSUS нет никаких SQL баз, поэтому причина точно в ней.
Погуглив выяснил, что можно ограничить выделяемый объем оперативной памяти под конкретную SQL базу, в том числе и Windows Internal Database от WSUS, путем установки Microsoft SQL Server Management Studio.

Установил, соединился с базой данных WSUS (строка \\.\pipe\MICROSOFT##WID\tsql\query), база появилась в списке соединений, далее правой кнопкой по ней и выбрать «Свойства», после чего должно открыться окно, в котором можно исправить различные параметры, в том числе и максимальный размер выделяемой ОЗУ, но вот тут то и проблема - вместо окна свойств появляется ошибка
Текст ошибки
===================================

Не удается вывести требуемое диалоговое окно.

===================================

Не удается вывести требуемое диалоговое окно. (SqlMgmt)

------------------------------
Расположение программы:

в Microsoft.SqlServer.Management.SqlMgmt.DefaultLaunchFormHostedControlAllocator.AllocateDialog(XmlDoc ument initializationXml, IServiceProvider dialogServiceProvider, CDataContainer dc)
в Microsoft.SqlServer.Management.SqlMgmt.DefaultLaunchFormHostedControlAllocator.Microsoft.SqlServer.M anagement.SqlMgmt.ILaunchFormHostedControlAllocator.CreateDialog(XmlDocument initializationXml, IServiceProvider dialogServiceProvider)
в Microsoft.SqlServer.Management.SqlMgmt.LaunchForm.InitializeForm(XmlDocument doc, IServiceProvider provider, ISqlControlCollection control)
в Microsoft.SqlServer.Management.SqlMgmt.LaunchForm..ctor(XmlDocument doc, IServiceProvider provider)
в Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ToolMenuItemHelper.OnCreateAndShowFor m(IServiceProvider sp, XmlDocument doc)
в Microsoft.SqlServer.Management.SqlMgmt.RunningFormsTable.RunningFormsTableImpl.ThreadStarter.StartTh read()

===================================

Не удалось получить данные по этому запросу. (Microsoft.SqlServer.Management.Sdk.Sfc)

------------------------------
Чтобы получить справку, щелкните: https://go.microsoft.com/fwlink?Prod...r&LinkId=20476

------------------------------
Расположение программы:

в Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)
в Microsoft.SqlServer.Management.SqlManagerUI.ServerPropGenData.InitProp()
в Microsoft.SqlServer.Management.SqlManagerUI.ServerPropGenData..ctor(CDataContainer context, ServerConnection sqlConnectionInfo)
в Microsoft.SqlServer.Management.SqlManagerUI.ServerPropGeneral..ctor(CDataContainer context)
в Microsoft.SqlServer.Management.SqlManagerUI.ServerPropSheet.InitNodeAssociations(CDataContainer context)
в Microsoft.SqlServer.Management.SqlManagerUI.ServerPropSheet..ctor(CDataContainer context)

===================================

При выполнении инструкции или пакета Transact-SQL возникло исключение. (Microsoft.SqlServer.ConnectionInfo)

------------------------------
Расположение программы:

в Microsoft.SqlServer.Management.Common.ServerConnection.GetExecuteReader(SqlCommand command)
в Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteReader(String sqlCommand, SqlCommand& command)
в Microsoft.SqlServer.Management.Smo.ExecuteSql.GetDataReader(String query, SqlCommand& command)
в Microsoft.SqlServer.Management.Smo.DataProvider.SetConnectionAndQuery(ExecuteSql execSql, String query)
в Microsoft.SqlServer.Management.Smo.ExecuteSql.GetDataProvider(StringCollection query, Object con, StatementBuilder sb, RetriveMode rm)
в Microsoft.SqlServer.Management.Smo.SqlObjectBase.FillData(ResultType resultType, StringCollection sql, Object connectionInfo, StatementBuilder sb)
в Microsoft.SqlServer.Management.Smo.SqlObjectBase.FillDataWithUseFailure(SqlEnumResult sqlresult, ResultType resultType)
в Microsoft.SqlServer.Management.Smo.SqlObjectBase.BuildResult(EnumResult result)
в Microsoft.SqlServer.Management.Smo.SqlObjectBase.GetData(EnumResult erParent)
в Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData()
в Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData(Request req, Object ci)
в Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request)
в Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)

===================================

При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.
RegQueryValueEx() returned error 2, 'Не удается найти указанный файл.' (.Net SqlClient Data Provider)

------------------------------
Чтобы получить справку, щелкните: http://go.microsoft.com/fwlink?ProdN...0&LinkId=20476

------------------------------
Имя сервера: \\.\pipe\MICROSOFT##WID\tsql\query
Номер ошибки: 0
Серьезность: 11
Состояние: 0


------------------------------
Расположение программы:

в Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException)
в Microsoft.SqlServer.Management.Common.ServerConnection.GetExecuteReader(SqlCommand command)



В чем может быть проблема? Или, возможно, я все это делаю зря и есть какой-то другой известный способ ограничить выделяемый объем ОЗУ данному процессу?

mikezhirnyi 09-01-2020 14:47 2904199

Нашел обходной путь, можно ограничить максимальный объем оперативной памяти в обход окна свойств.
1. Подключаемся к базе в SQL Server Management Studio строкой \\.\pipe\MICROSOFT##WID\tsql\query
2. В обозревателе объектов нажимаем правой кнопкой на сервере к которому подключились в первом пункте
3. В диалоговом окне нажимаем Создать запрос
4. В открывшемся окне вводим следующее:
Код:

sp_configure "show advanced options", 1
reconfigure
go
sp_configure "max server memory", 2048;
reconfigure
go

где 2048 - объем в МБ которым хотим ограничить занимаемое пространство в ОЗУ конкретно для данной базы.
5. Нажимаем правой кнопкой в окне ввода команды и нажимаем Выполнить.
Теперь можете посмотреть в диспетчере задач, там объём сразу уменьшится до установленного вами.


Время: 19:26.

Время: 19:26.
© OSzone.net 2001-