Отношение к жизни

Отношение к жизни

«Не придавай важности сегодняшним огорчениям. Завтра у тебя будут новые. » -Шенберг А. More »

Мониторинг состояния 1С

Мониторинг состояния 1С

Сборка наработок в одном пакете для контроля за работой и производительностью 1с More »

Конфигурация табель учета рабочего времени

Конфигурация табель учета рабочего времени

Конфигурация позволяющая автоматизировать учет рабочего времени. Может быть подключена к базе Parsek, или позволяет вести регистрацию сотрудников самостоятельно с использованием сканера штрихкода. Содержит множество аналитических отчетов. Позволяет вести подсчет различных вариантов учета рабочего времени. More »

SQL  наработки.

SQL наработки.

Моя подборка скриптов и лучшей информации по SQL, чтоб за 5 минут оптимизировать производительность. More »

Без комментариев

Без комментариев

Что я думаю об 1с More »

 

Как вывести всех активных пользователей доменa?

Как вывести всех активных пользователей домена?

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

И так, вывести всех активных пользователей домена можно выполнив команду:

dsquery * domainroot -filter "(&(objectCategory=person)(objectClass=user)(userAccountControl=66048))" -limit 1000 | dsget user -display | sort

dsquery * domainroot -filter «(&(objectCategory=person)(objectClass=user)(userAccountControl=66048))» -limit 1000 | dsget user -display | sort

Команда выполняется в командной строке (cmd)
Параметр userAccountControl может принимать значения:
66048 = Enabled (активные пользователи)
66050 = Disabled (выключенные)

Вот так просто и незатейливо.

Фразы: список пользователей домена, вывести список, Windows 2003 AD, только активные доменные пользователи.

Добавлено: 30.09.2016
Коды UserAccountControl Active Directory

UserAccountControl_Num,Account_Status
512,Account: Enabled
514,Account: ACCOUNTDISABLE
528,Account: Enabled – LOCKOUT
530,Account: ACCOUNTDISABLE – LOCKOUT
544,Account: Enabled – PASSWD_NOTREQD
546,Account: ACCOUNTDISABLE – PASSWD_NOTREQD
560,Account: Enabled – PASSWD_NOTREQD – LOCKOUT
640,Account: Enabled – ENCRYPTED_TEXT_PWD_ALLOWED
2048,Account: INTERDOMAIN_TRUST_ACCOUNT
2080,Account: INTERDOMAIN_TRUST_ACCOUNT – PASSWD_NOTREQD
4096,Account: WORKSTATION_TRUST_ACCOUNT
8192,Account: SERVER_TRUST_ACCOUNT
66048,Account: Enabled – DONT_EXPIRE_PASSWORD
66050,Account: ACCOUNTDISABLE – DONT_EXPIRE_PASSWORD
66064,Account: Enabled – DONT_EXPIRE_PASSWORD – LOCKOUT
66066,Account: ACCOUNTDISABLE – DONT_EXPIRE_PASSWORD – LOCKOUT
66080,Account: Enabled – DONT_EXPIRE_PASSWORD – PASSWD_NOTREQD
66082,Account: ACCOUNTDISABLE – DONT_EXPIRE_PASSWORD – PASSWD_NOTREQD
66176,Account: Enabled – DONT_EXPIRE_PASSWORD – ENCRYPTED_TEXT_PWD_ALLOWED
131584,Account: Enabled – MNS_LOGON_ACCOUNT
131586,Account: ACCOUNTDISABLE – MNS_LOGON_ACCOUNT
131600,Account: Enabled – MNS_LOGON_ACCOUNT – LOCKOUT
197120,Account: Enabled – MNS_LOGON_ACCOUNT – DONT_EXPIRE_PASSWORD
532480,Account: SERVER_TRUST_ACCOUNT – TRUSTED_FOR_DELEGATION (Domain
Controller)
1049088,Account: Enabled – NOT_DELEGATED
1049090,Account: ACCOUNTDISABLE – NOT_DELEGATED
2097664,Account: Enabled – USE_DES_KEY_ONLY
2687488,Account: Enabled – DONT_EXPIRE_PASSWORD – TRUSTED_FOR_DELEGATION –
USE_DES_KEY_ONLY

Как убрать второй значок переключения раскладки клавиатуры в RDP сессиях.

Решение проблемы:

  1. На терминальном клиенте (в запущенной сесии) Нажимаем Пуск –> Выполнить –> набираем regedit –> Ok..
  2. Заходим в ветку реестра:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
  3. В меню выбираем пункт Добавить значение, а затем вводим следующую информацию:Название значения: IgnoreRemoteKeyboardLayout
    Тип данных: REG_DWORD
    Значение данных: 1

Как настроить загрузку данных на сайт WordPress.

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

СбросЗависшихПроцессов1С77

Функция не  моя. Не проверял.

//*****************************************************************************
Процедура СбросЗависшихПроцессов1С77()
ServicesSet = ПолучитьCOMОбъект(«winmgmts:{impersonationLevel=impersonate}!\\APPEGR01\root\cimv2»);
Items = ServicesSet.ExecQuery(«Select * from Win32_Process Where Name = ‘1cv7s.exe'»);
Для каждого Item Из Items Цикл
ДатаСоздания = Дата(Лев(Item.CreationDate,14));
//Сообщить(«» + Item.ProcessId + » — » +
//Item.Name + » — » +
//Item.Description + » — » +
//Item.ExecutablePath + » — » +
//Item.Handle + » — » +
//Item.CommandLine + » — » +
//Item.Caption + » — » +
//ДатаСоздания);
Если ТекущаяДата() — ДатаСоздания > 600 Тогда
Item.Terminate();
//Сообщить(«Убили»);
КонецЕсли;
КонецЦикла;
КонецПроцедуры

SQL-server регламентные работы

Основной материал  взят  со страницы: http://datasib.livejournal.com/32364.html#P2 —   САМОЕ ОНО.

Регламентные работы на уровне SQL-server

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

Если в работающей системе наблюдаются какие-либо симптомы проблем с производительностью, следует проверить, что в системе правильно настроены и регулярно выполняются все рекомендуемые регламентные операции на уровне СУБД.

Для MS SQL Server рекомендуется выполнять следующие регламентные операции:

  • Резервное копирование
  • Обновление статистик
  • Очистка процедурного КЭШа
  • Дефрагментация индексов
  • Реиндексация таблиц базы данных

Резервное копирование баз данных

Особенности организации резервного копирования баз данных Microsoft SQL Server на сетевой диск:

При организации резервного копирования стандартными средствами Enterprise Manager невозможно создать устройство резервного копирования, расположенное на сетевом диске, поскольку Enterprise Manager видит только локальные, физически подключенные диски. Поэтому выполнение резервного копирования возможно только на локальные диски компьютера, на котором установлен Microsoft SQL Server. Использование этого варианта организации резервного копирования существенно снижает надежность, поскольку в случае выхода компьютера из строя становится недоступной как рабочая база данных, так и резервная копия.

Решить эту проблему можно путем создания сетевого устройства резервного копирования с помощью системной процедуры SP_ADDUMPDEVICE. Для этого нужно в Query Analyzer выполнить следующую команду:

EXEC SP_ADDUMPDEVICE ‘disk’, Логическое_Имя_Сетевого_Устройства_Резервного_Копирования’, ‘\\Имя_Компьютера\Имя_Каталога\Имя_Файла.bak’

Необходимым условием использования сетевого устройства резервного копирования является запуск Microsoft SQL Server с использованием доменной учетной записи. Проверить и изменить учетную запись, используемую для запуска Microsoft SQL Server можно в Enterprise Manager, на закладке Security диалога редактирования свойств  Microsoft SQL Server.

После создания сетевого устройства резервного копирования его можно использовать при выполнении резервного копирования средствами Enterprise Manager или с помощью команды BACKUP DATABASE выполняемой в Query Analyzer, например:

BACKUP DATABASE Имя_Базы_Данных ТО Устройства_Резервного_Копирования

Обновление статистик

MS SQL Server строит план запроса на основании статистической информации о распределении значений в индексах и таблицах. Статистическая информация собирается на основании части (образца) данных и автоматически обновляется при изменении этих данных. Иногда этого оказывается недостаточно для того, что MS SQL Server стабильно строил наиболее оптимальный план выполнения всех запросов.

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

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

Для обновления статистик по всем таблицам базы данных необходимо выполнить следующий SQL запрос:

exec sp_msforeachtable N’UPDATE STATISTICS ? WITH FULLSCAN’

Обновление статистик не приводит к блокировке таблиц, и не будет мешать работе других пользователей. Статистика может обновляться настолько часто, насколько это необходимо. Следует учитывать, что нагрузка на сервер СУБД во время обновления статистик возрастет, что может негативно сказаться на общей производительности системы.

Оптимальная частота обновления статистик зависит от величины и характера нагрузки на систему и определяется экспериментальным путем. Рекомендуется обновлять статистики не реже одного раза в день.

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

Очистка процедурного КЭШа

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

Возможна ситуация, при которой MS SQL Server, ориентируясь на устаревшую статистическую информацию, построит неоптимальный план запроса. Этот план будет сохранен в процедурном КЭШе и использован при повторном вызове такого же запроса. Если Вы обновили статистику, но не очистили процедурный кэш, то SQL Server может выбрать старый (неоптимальный) план запроса из КЭШа вместо того, чтобы построить новый (более оптимальный) план.

Таким образом, рекомендуется всегда после обновления статистик очищать содержимое процедурного КЭШа.

Для очистки процедурного КЭШа MS SQL Server необходимо выполнить следующий SQL запрос:

DBCC FREEPROCCACHE

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

Настройка очистки процедурного КЭШа (MS SQL 2005)

Поскольку процедурный КЭШ необходимо очищать при каждом обновлении статистики, данную операцию рекомендуется добавить в уже созданный субплан «Обновление статистик».

Для этого следует открыть субплан и добавить в его схему задачу Execute T-SQL Statement Task. Затем следует соединить задачу Update Statistics Task стрелочкой с новой задачей. В тексте созданной задачи Execute T-SQL Statement Task следует указать запрос «DBCC FREEPROCCACHE»:

Дефрагментация индексов

При интенсивной работе с таблицами базы данных возникает эффект фрагментации индексов, который может привести к снижению эффективности работы запросов.

Рекомендуется регулярное выполнение дефрагментации индексов. Для дефрагментации всех индексов всех таблиц базы данных необходимо использовать следующий SQL запрос (предварительно подставив имя базы):

sp_msforeachtable N’DBCC INDEXDEFRAG (<имя базы данных>, »?»)’

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

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

Реиндексация таблиц базы данных

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

sp_msforeachtable N’DBCC DBREINDEX (»?»)’

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

После выполнения реиндексации нет необходимости делать дефрагментацию индексов.

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

Перенос файлов по разным дискам

EXEC sp_detach_db `pubs`

Затем производится копирование файлов pubs.mdf и pubs_log.ldf на нужный диск (D). Следующий пример показывает, как скопировать эти два файла в каталог d:\mssql7\data:

copy c:\mssql7\data\pubs.mdf d:\mssql7\datacopy
c:\mssql7\data\pubs_log.ldf d:\mssql7\data

Наконец, после завершения копирования файлов можно воспользоваться командой sp_ attach_db для подсоединения базы данных к SQL Server:

EXEC sp_attach_db `pubs`, `d:\mssql7\data\pubs.mdf`,
`d:\mssql7\data\pubs_log.ldf`

Не могу подключиться к базе 1с

Здравствуйте.  После перехода на платформу 8.3.7  и 8.3.8 стала появляться  проблема:

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

Решение: ищем в рабочих процессах зависшее соединение, затем  запускаем диспетчер задач и убиваем процесс с номером, в котором висит это  соединение.

Т.к.  такие выкрутасы 1с стали достаточно часто я настроил не более 2-х баз на  процесс.

Кстати  замечено, что после перехода на 8.3.8  тормозов стало  раз в 5 меньше.

 

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

—Ниже приведенный  скрипт  переводит  все базы в режим симпл, затем обрезает  журналы транзакций.

DECLARE @ShrinkDbTemplte AS nvarchar(max);
declare @TextN nvarchar(250);

SET @ShrinkDbTemplte =
N’    CREATE TABLE #Swallow(DbId int, Fileld int, CurrentSize int, MininumSize int, UsedPages int, EstimatedPages int)
DECLARE @SizeBefore AS numeric(12,0)
DECLARE @SizeAfter  AS numeric(12,0)
DECLARE @LogicalFileName AS VARCHAR(254)
DECLARE @B_Name AS VARCHAR(254);

USE [<dbName>]
ALTER DATABASE [<dbName>] SET RECOVERY SIMPLE
set @B_Name = DB_NAME();
WAITFOR DELAY »00:00:01»;
raiserror(»%s переведена в симпл: »,10,1,  @B_Name)with nowait

—DECLARE @SizeBefore AS numeric(12,0)
—DECLARE @SizeAfter  AS numeric(12,0)
—DECLARE @LogicalFileName AS VARCHAR(254)
DECLARE CuteCursor CURSOR STATIC FOR
SELECT
Name,
(size*8)/1024 SizeMB
FROM sys.master_files
WHERE database_id = db_id()
AND type = 1 — Only ldf files
SET @MbFreed = 0

OPEN CuteCursor
WHILE ( 1 = 1 )
BEGIN
FETCH CuteCursor INTO @LogicalFileName, @SizeBefore
IF (@@FETCH_STATUS <> 0) BREAK
DBCC SHRINKFILE( @LogicalFileName, 0, TRUNCATEONLY) WITH NO_INFOMSGS
SELECT @SizeAfter = (size*8)/1024 FROM sys.master_files
WHERE database_id = db_id() AND Name = @LogicalFileName
SET @MbFreed = @MbFreed + @SizeBefore — @SizeAfter

WAITFOR DELAY »00:00:01»;
raiserror(»%s Сжатие логфайла окончено:»,10,1,  @LogicalFileName )with nowait

END
CLOSE      CuteCursor
DEALLOCATE CuteCursor

DECLARE @ShrinkDbScript AS nvarchar(max)
DECLARE @DbName AS nvarchar(max)

DECLARE DbCursor CURSOR STATIC FOR
SELECT name FROM master..sysdatabases
WHERE Name <> ‘tempdb’

DECLARE @MbFreed AS INT
DECLARE @TotalFreed AS INT
SET @TotalFreed = 0
OPEN DbCursor
WHILE ( 1 = 1 )
BEGIN
FETCH DbCursor INTO @DbName
IF (@@FETCH_STATUS <> 0) BREAK
SET @ShrinkDbScript = REPLACE( @ShrinkDbTemplte, ‘<dbName>’, @DbName )
EXEC sp_executesql @ShrinkDbScript, N’@MbFreed INT OUTPUT’, @MbFreed = @MbFreed OUTPUT
SET @TotalFreed = @TotalFreed + @MbFreed
END
CLOSE      DbCursor
DEALLOCATE DbCursor
PRINT CAST(@TotalFreed AS VARCHAR(16)) + ‘ Mb freed.’

Обработка ошибки «88 ожидание команды продолжения печати»

Кулаков Антон писал(а):
Отключите на короткое время ФП. ФР перейдет в режим 9 и из теста драйвера вы сможете сделать техобнуление.

Спасибо, всё получилось!

P.S. Для тех, кто делает тех.обнуление самостоятельно (расскажу про свои «затыки», вдруг кому-то поможет):
— После отключения/включения ФП и включения аппарата начинает мигать кнопка «Ошибка» и подаются звуковые сигналы. Это нормально.
— Зашла в тест драйвера ФР, стада жать «Проверку связи» — выдалась ошибка «-1 нет связи». Думала, что всё-таки что-то сделала не так… но потом запустила поиск оборудования и обнаружила, что сбросилась настройка скорости. У меня была 115200, а стала — 4800. Когда я выставила значение 4800, то проверка связи прошла на ура. Ну и далее просто жмётся кнопка «Тех.обнуление», затем — установка и подтверждение даты. Всё! :)

Выполнение команд операционной системы в MS SQL

http://blog.yastrebkov.com/2008/04/ms-sql.html

Выполнение команд операционной системы в MS SQL

MS SQL Server позволяет выполнять команды операционной системы и возвращать результат в виде текстовых строк. Например, прямо из SQL Server можно запустить bat-файл, любую программу и вообще использовать все возможности командной строки.

Для этого используется системная хранимая процедура xp_cmdshell. Запуск этой процедуры по умолчанию запрещен. Чтобы включить эту возможность нужно выполнить следующий код:

-- Включение разрешения изменения расширенных опций.
EXEC sp_configure 'show advanced options', 1
GO
-- Обновление текущих настроек расширенных опций.
RECONFIGURE
GO
-- Включение возможности запуска внешних программ.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- Обновление текущих настроек для запуска внешних программ.
RECONFIGURE
GO

Теперь для запуска bat-файла достаточно выполнить следующую команду:

EXEC master..xp_cmdshell ‘test.bat’

Или эту, если вы хотите подавить вывод результатов:

EXEC master..xp_cmdshell ‘test.bat’, NO_OUTPUT

А вот пример вызова bat-файла с параметром:

DECLARE @param varchar(50)
DECLARE @cmd varchar(100)
SET @param = 'blog.yastrebkov.com'
SET @cmd = 'c:\test.bat ' + @param
EXEC master..xp_cmdshell @cmd