diff --git a/README.md b/README.md index 7b6d319..3815a75 100644 --- a/README.md +++ b/README.md @@ -538,12 +538,12 @@ cpdb yadisk --token XXXXXXXXXXXXXXXXXXXXXXXXXXXXX get --path "d:\MSSQL\Backup\" ```bat // Помещает файл "MyDatabase_copy.bak" в сервис NextCloud -cpdb nextcloud --service "http://MyNextCloud" --user "admin" --pwd "P@$$w0rd" put --file "d:\MSSQL\Backup\MyDatabase_copy.bak" --token XXXXXXXXXXXXXXXXXXXXXXXXXXXXX --path "/transfer" --delsrc +cpdb nextcloud --service "http://MyNextCloud" --user "admin" --pwd "P@$$w0rd" put --file "d:\MSSQL\Backup\MyDatabase_copy.bak" --path "/transfer" --delsrc ``` ```bat // Помещает файлы, указанные в списке "MyDatabase_copy.split" в сервис NextCloud -cpdb nextcloud --service "http://MyNextCloud" --user "admin" --pwd "P@$$w0rd" put --list "d:\MSSQL\Backup\MyDatabase_copy.split" --token XXXXXXXXXXXXXXXXXXXXXXXXXXXXX --path "/transfer" --delsrc +cpdb nextcloud --service "http://MyNextCloud" --user "admin" --pwd "P@$$w0rd" put --list "d:\MSSQL\Backup\MyDatabase_copy.split" --path "/transfer" --delsrc ``` ## get - Получение файла из сервиса NextCloud @@ -562,12 +562,12 @@ cpdb nextcloud --service "http://MyNextCloud" --user "admin" --pwd "P@$$w0rd" pu ```bat // Получает файл "MyDatabase_copy.bak" из сервиса NextCloud -cpdb nextcloud --service "http://MyNextCloud" --user "admin" --pwd "P@$$w0rd" get --path "d:\MSSQL\Backup\MyDatabase_copy.bak" --token XXXXXXXXXXXXXXXXXXXXXXXXXXXXX --file "/transfer/MyDatabase_copy.bak" --delsrc +cpdb nextcloud --service "http://MyNextCloud" --user "admin" --pwd "P@$$w0rd" get --path "d:\MSSQL\Backup\MyDatabase_copy.bak" --file "/transfer/MyDatabase_copy.bak" --delsrc ``` ```bat // Получает файлы, указанные в списке "MyDatabase_copy.split" из сервиса NextCloud -cpdb nextcloud --service "http://MyNextCloud" --user "admin" --pwd "P@$$w0rd" get --path "d:\MSSQL\Backup\" --token XXXXXXXXXXXXXXXXXXXXXXXXXXXXX --list "/transfer/MyDatabase_copy.split" -delsrc +cpdb nextcloud --service "http://MyNextCloud" --user "admin" --pwd "P@$$w0rd" get --path "d:\MSSQL\Backup\" --list "/transfer/MyDatabase_copy.split" -delsrc ``` ## sftp - Группа команд работы с SFTP-сервером @@ -1307,13 +1307,15 @@ cpdb batch "./rest_TST_DB_MyDomain.json" *Возвращаемое значение:* Структура - описание занимаего места - * РазмерБазы - Число - размер текущей базы данных в байтах, включает файлы данных и журналов - * Свободно - Число - место в базе данных, не зарезервированное для объектов базы данных - * Зарезервировано - Число - общий объем, выделенный объектам в базе данных - * Данные - Число - общий объем, используемый данными - * Индексы - Число - общий объем, используемый индексами - * НеИспользуется - Число - общий объем, зарезервированный для объектов в базе данных, - но пока не используемый + * РазмерБазы - Число - размер текущей базы данных в байтах, включает файлы данных и журналов + * Свободно - Число - место в базе данных, не зарезервированное для объектов базы данных + * Зарезервировано - Число - общий объем, выделенный объектам в базе данных + * Данные - Число - зарезервированный объем, используемый данными + * Индексы - Число - зарезервированный объем, используемый индексами + * НеИспользуется - Число - объем, зарезервированный для объектов в базе данных, + но пока не используемый + * ЖурналВсего - Число - полный объем журнала транзакций + * ЖурналИспользуется - Число - используемый объем журнала транзакций #### **Функция ПоказателиИспользованияТаблицБазы()** - возвращает список таблиц в базе MS SQL Server и их показатели использования diff --git a/packagedef b/packagedef index 93cd65e..5d98f06 100644 --- a/packagedef +++ b/packagedef @@ -1,5 +1,5 @@ Описание.Имя("cpdb") - .Версия("1.3.1") + .Версия("1.4.0") .ВерсияСреды("1.6.0") .ЗависитОт("logos") .ЗависитОт("1commands") diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" index a71aa2f..97f2574 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265MSSQL.os" @@ -1130,10 +1130,12 @@ // *РазмерБазы - Число - размер текущей базы данных в байтах, включает файлы данных и журналов // *Свободно - Число - место в базе данных, не зарезервированное для объектов базы данных // *Зарезервировано - Число - общий объем, выделенный объектам в базе данных -// *Данные - Число - общий объем, используемый данными -// *Индексы - Число - общий объем, используемый индексами -// *НеИспользуется - Число - общий объем, зарезервированный для объектов в базе данных, +// *Данные - Число - зарезервированный объем, используемый данными +// *Индексы - Число - зарезервированный объем, используемый индексами +// *НеИспользуется - Число - объем, зарезервированный для объектов в базе данных, // но пока не используемый +// *ЖурналВсего - Число - полный объем журнала транзакций +// *ЖурналИспользуется - Число - используемый объем журнала транзакций // Функция ЗанимаемоеБазойМесто(База) Экспорт @@ -1141,7 +1143,31 @@ | |SET NOCOUNT ON; | - |exec sp_spaceused @oneresultset=1; + |declare @space_usage_data table( + |database_name nvarchar(128), + |database_size varchar(18), + |unallocated_space varchar(18), + |reserved varchar(18), + |data varchar(18), + |index_size varchar(18), + |unused varchar(18)) + |INSERT INTO @space_usage_data exec sp_spaceused @oneresultset=1 + | + |SELECT + |space_usage_data.database_name, + |CONVERT(dec(15,2), LTRIM(LEFT(space_usage_data.database_size, CHARINDEX('MB', space_usage_data.database_size) - 1))) * 1048576 AS database_size, + |CONVERT(dec(15,2), LTRIM(LEFT(space_usage_data.unallocated_space, CHARINDEX('MB', space_usage_data.unallocated_space) - 1))) * 1048576 AS unallocated_space, + |CONVERT(dec(15,2), LTRIM(LEFT(space_usage_data.reserved, CHARINDEX('KB', space_usage_data.reserved) - 1))) * 1024 AS reserved, + |CONVERT(dec(15,2), LTRIM(LEFT(space_usage_data.data, CHARINDEX('KB', space_usage_data.data) - 1))) * 1024 AS data_size, + |CONVERT(dec(15,2), LTRIM(LEFT(space_usage_data.index_size, CHARINDEX('KB', space_usage_data.index_size) - 1))) * 1024 AS index_size, + |CONVERT(dec(15,2), LTRIM(LEFT(space_usage_data.unused, CHARINDEX('KB', space_usage_data.unused) - 1))) * 1024 AS unused, + |CONVERT(dec(15,2), space_usage_log.total_log_size_in_bytes) AS log_size_total, + |CONVERT(dec(15,2), space_usage_log.used_log_space_in_bytes) AS log_size_used + |FROM @space_usage_data AS space_usage_data + |LEFT JOIN sys.databases AS dbs + |on space_usage_data.database_name = dbs.name + |LEFT JOIN sys.dm_db_log_space_usage AS space_usage_log + |on dbs.database_id = space_usage_log.database_id | |SET NOCOUNT OFF"" ", База); @@ -1165,12 +1191,14 @@ КонецЕсли; Результат = Новый Структура(); - Результат.Вставить("РазмерБазы" , 1); - Результат.Вставить("Свободно" , 2); - Результат.Вставить("Зарезервировано", 3); - Результат.Вставить("Данные" , 4); - Результат.Вставить("Индексы" , 5); - Результат.Вставить("НеИспользуется" , 6); + Результат.Вставить("РазмерБазы" , 1); + Результат.Вставить("Свободно" , 2); + Результат.Вставить("Зарезервировано" , 3); + Результат.Вставить("Данные" , 4); + Результат.Вставить("Индексы" , 5); + Результат.Вставить("НеИспользуется" , 6); + Результат.Вставить("ЖурналВсего" , 7); + Результат.Вставить("ЖурналИспользуется" , 8); Текст = Новый ТекстовыйДокумент(); Текст.УстановитьТекст(РезультатЗапроса); @@ -1938,7 +1966,7 @@ // Булево - Истина - команда выполнена успешно // Функция ВыполнитьСкриптыЗапросСУБД(МассивСкриптов, МассивПеременных = Неопределено, РезультатЗапроса = "") Экспорт - + КодировкаВывода = КодировкаТекста.UTF8; НастройкаКодировки = ПолучитьПеременнуюСреды("SQLCMD_ENCODING"); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" index 2e41a55..bca55d6 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\321\202\321\200\321\203\320\272\321\202\321\203\321\200\320\260\320\245\321\200\320\260\320\275\320\265\320\275\320\270\321\217\320\230\320\221.os" @@ -268,10 +268,12 @@ // * РазмерБазы - Число - размер текущей базы данных в байтах, включает файлы данных и журналов // * Свободно - Число - место в базе данных, не зарезервированное для объектов базы данных // * Зарезервировано - Число - общий объем, выделенный объектам в базе данных -// * Данные - Число - общий объем, используемый данными -// * Индексы - Число - общий объем, используемый индексами -// * НеИспользуется - Число - общий объем, зарезервированный для объектов в базе данных, +// *Данные - Число - зарезервированный объем, используемый данными +// *Индексы - Число - зарезервированный объем, используемый индексами +// *НеИспользуется - Число - объем, зарезервированный для объектов в базе данных, // но пока не используемый +// *ЖурналВсего - Число - полный объем журнала транзакций +// *ЖурналИспользуется - Число - используемый объем журнала транзакций // Функция ЗанимаемоеМесто() Экспорт @@ -282,6 +284,8 @@ Результат.Вставить("Данные"); Результат.Вставить("Индексы"); Результат.Вставить("НеИспользуется"); + Результат.Вставить("ЖурналВсего"); + Результат.Вставить("ЖурналИспользуется"); Лог.Отладка("Начало получения информации о занимаемом месте для базы ""%1/%2""", ТекущийСервер, @@ -306,17 +310,8 @@ Для Каждого ТекЭлемент Из Результат Цикл - Размерность = ВРег(Прав(ТекЭлемент.Значение, СимволовРазмерности)); - РазмерСтрокой = СокрЛП(Лев(ТекЭлемент.Значение, СтрДлина(ТекЭлемент.Значение) - СтрДлина(Размерность))); - - Если ЭтоЧисло(РазмерСтрокой) Тогда - Результат[ТекЭлемент.Ключ] = Число(РазмерСтрокой); - Множитель = 1024; - Если Размерность = "KB" Тогда - Результат[ТекЭлемент.Ключ] = Результат[ТекЭлемент.Ключ] * Множитель; - ИначеЕсли Размерность = "MB" Тогда - Результат[ТекЭлемент.Ключ] = Результат[ТекЭлемент.Ключ] * Множитель * Множитель; - КонецЕсли; + Если ЭтоЧисло(ТекЭлемент.Значение) Тогда + Результат[ТекЭлемент.Ключ] = Число(ТекЭлемент.Значение); Иначе Результат[ТекЭлемент.Ключ] = Неопределено; КонецЕсли; diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" index a330499..e714c32 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\241\320\270\321\201\321\202\320\265\320\274\321\213.os" @@ -137,6 +137,6 @@ // Функция Версия() Экспорт - Возврат "1.3.1"; + Возврат "1.4.0"; КонецФункции // Версия()