Вы можете сделать следующее, используя reduce
и Map
.
Получите карту company-id
и factory-name
-> Затем выполните цикл по companies
и создайте вывод
let factories = [{id:1,name:"Xintang",short:"xin",companies:[0,4,101,198]},{id:2,name:"Ohio Plant",short:"OHP",companies:[22,27]},{id:3,name:"Cincy",short:"Cin",companies:[]}],
companies = [{id:0,fund:"79588.96",name:"Microsoft"},{id:1,fund:"166727.06",name:"Comcast"},{id:2,fund:"131206.88",name:"Apple"},{id:3,fund:"74095.75",name:"HP"},{id:4,fund:"142556.86",name:"Dell"}]
/*Get the company id: factory name mapping*/
const map = factories.reduce((m, f) =>
(f.companies.forEach(c => m.set(c, f.name)), m)
, new Map);
const output = companies.map(c => ({...c, factory: map.get(c.id) || ''}));
console.log(output)
Это должно сделать задание
use master
go
dump transaction <YourDBName> with no_log
go
use <YourDBName>
go
DBCC SHRINKFILE (<YourDBNameLogFileName>, 100) -- where 100 is the size you may want to shrink it to in MB, change it to your needs
go
-- then you can call to check that all went fine
dbcc checkdb(<YourDBName>)
Слово предупреждения
Вы только действительно использовали бы его на базе данных теста/разработки, где Вам не нужна надлежащая стратегия резервного копирования, поскольку дамп журнала приведет к проигрывающей истории транзакций. В живых системах необходимо использовать решение, предложенное Заправкой для соуса Бочонка
Использование анализатора запроса:
USE yourdabatase
SELECT * FROM sysfiles
Необходимо найти что-то подобным:
FileID …
1 1 24264 -1 1280 1048578 0 yourdabatase_Data D:\MSSQL_Services\Data\yourdabatase_Data.MDF
2 0 128 -1 1280 66 0 yourdabatase_Log D:\MSSQL_Services\Data\yourdabatase_Log.LDF
Проверьте идентификатор файла файла журнала (его 2 большую часть времени). Выполните 2 или 3 раза команду контрольной точки для записи каждой страницы в жесткий диск.
Checkpoint
GO
Checkpoint
GO
Выполните следующую транзакционную команду для транкинга файла журнала к 1 МБ
DUMP TRAN yourdabatase WITH no_log
DBCC SHRINKFILE(2,1) /*(FileID , the new size = 1 Mb)*/
Другая вещь, которую можно попробовать, состоит в том, чтобы установить режим восстановления на простой (если они уже не) для базы данных, которая помешает файлам журнала расти как быстро. У нас недавно была эта проблема, где наш журнал транзакций заполнился, и нам больше не разрешали транзакции.
Комбинация файла уменьшения, который находится в нескольких ответах и простом режиме восстановления, удостоверилась, что наш файл журнала остался разумный размер.
Резервный журнал транзакций и уменьшение это.
Если DB сохраняется регулярно и усеченный на контрольной точке, он не должен выходить из-под контроля, однако при выполнении большого количества (размер) транзакций между теми интервалами это вырастет до следующей контрольной точки.
Никто здесь не сказал это, таким образом, я буду: НИКОГДА не уменьшайте журнал транзакций. Это - плохая идея с точки зрения SQL Server.
Сохраните журнал транзакций маленьким путем выполнения ежедневных резервных копий дб и каждый час (или меньше) резервные копирования журнала транзакций. Интервал резервного копирования журнала транзакций зависит от того, насколько занятый Ваш дб.
Вот то, что я Использовал
BACKUP LOG <CatalogName> with TRUNCATE_ONLY
DBCC SHRINKDATABASE (<CatalogName>, 1)
use <CatalogName>
go
DBCC SHRINKFILE(<CatalogName_logName>,1)
Щелкните правой кнопкой по базе данных в Руководителе предприятия> Все Задачи> База данных Уменьшения.
попробуйте sp_force_shrink_log, который можно найти здесь http://www.rectanglered.com/sqlserver.php