пятница, 4 ноября 2016 г.

Linux Mint 18

Linux Mint 18 Cinnamon 64-bit

Установилась без проблем.

1. Загрузка 


Устанавливал на диск с Win10 с загрузкой UEFI. Пол диска оставил свободным, разбил на разделы установщик. Во время установки linux, установщик что то сказал про загрузку Windows. Не подумав ткнул продолжить, результат Win10 не грузится. Помогло

grub-install /dev/sda

После этой команды стало отображаться окно выбора загрузки операционной системы.
# efibootmgr -v
efibootmgr: EFI variables are not supported on this system.


2. Mediatomb 


Установка mediatomb, без проблем, но проблемы с запуском: systemd запускает загрузку до запуска сети. После загрузки посмотрел на процесс NetworkManager-wait-online.service
# systemctl status NetworkManager-wait-online.service
● NetworkManager-wait-online.service - Network Manager Wait Online
   Loaded: loaded (/lib/systemd/system/NetworkManager-wait-online.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Пт 2016-11-04 23:38:03 +05; 2s ago
     Docs: man:nm-online(1)
  Process: 996 ExecStart=/usr/bin/nm-online -s -q --timeout=30 (code=exited, status=0/SUCCESS)
 Main PID: 996 (code=exited, status=0/SUCCESS)


Нашел рекомендацию: выполнить ещё раз разрешения на запуск и собственно запуск
systemctl enable NetworkManager-wait-online.service
systemctl start NetworkManager-wait-online.service

А так же поправил файл запуска /lib/systemd/system/mediatomb.service Добавил Wants. Теперь, после включения ОС, Mediatomb запускается автоматически.
# cat mediatomb.service 
[Unit]
Description=UPnP MediaServer
Wants=NetworkManager-wait-online.service
After=NetworkManager-wait-online.service network.target

Файл конфигурации /etc/mediatomb/config.xml. Настройка интерфейса в файле /etc/default/mediatomb, иначе привязка к интерфейсу lo.
<?xml version="1.0" encoding="UTF-8"? >
<config version="2" xmlns="http://mediatomb.cc/config/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/2 http://mediatomb.cc/config/2.xsd" ><!--
     Read /usr/share/doc/mediatomb-common/README.gz section 6 for more
     information on creating and using config.xml configration files.
    -- >
  <server >
    <ui enabled="yes" show-tooltips="yes" >
      <accounts enabled="no" session-timeout="30" >
        <account user="mediatomb" password="mediatomb"/ >
      </accounts >
    </ui >
<!--    <interface >enp3s0</interface >  -- >
    <name >myPC MediaTomb</name >
    <udn >uuid:2edf96b3-0a40-467d-90d7-6f3de136de62</udn >
    <home >/var/lib/mediatomb</home >
    <webroot >/usr/share/mediatomb/web</webroot >
    <storage caching="yes" >
      <sqlite3 enabled="yes" >
        <database-file >mediatomb.db</database-file >
      </sqlite3 >
      <mysql enabled="no" >
        <host >localhost</host >
        <username >mediatomb</username >
        <database >mediatomb</database >
      </mysql >
    </storage >
    <pc-directory upnp-hide="yes"/ >
    <protocolInfo extend="yes"/ ><!-- For PS3 support change to "yes" -- ><!--
       Uncomment the lines below to get rid of jerky avi playback on the
       DSM320 or to enable subtitles support on the DSM units
    -- ><!--
    <custom-http-headers >
      <add header="X-User-Agent: redsonic"/ >
    </custom-http-headers >

    <manufacturerURL >redsonic.com</manufacturerURL >
    <modelNumber >105</modelNumber >
    -- ><!-- Uncomment the line below if you have a Telegent TG100 -- ><!--
       <upnp-string-limit >101</upnp-string-limit >
    -- >
    <custom-http-headers >
    <add header="transferMode.dlna.org: Streaming"/ >
    <add header="contentFeatures.dlna.org:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000"/ > 
    </custom-http-headers >
    <extended-runtime-options >
      <ffmpegthumbnailer enabled="yes" >
        <thumbnail-size >128</thumbnail-size >
        <seek-percentage >5</seek-percentage >
        <filmstrip-overlay >yes</filmstrip-overlay >
        <workaround-bugs >no</workaround-bugs >
      </ffmpegthumbnailer >
      <mark-played-items enabled="no" suppress-cds-updates="yes" >
        <string mode="prepend" >*</string >
      </mark-played-items >
    </extended-runtime-options >
  </server >
  <import hidden-files="no" >
    <filesystem-charset >UTF-8</filesystem-charset >
    <metadata-charset >UTF-8</metadata-charset >
    <playlist-charset >UTF-8</playlist-charset >
    <scripting script-charset="UTF-8" >
      <common-script >/usr/share/mediatomb/js/common.js</common-script >
      <playlist-script >/usr/share/mediatomb/js/playlists.js</playlist-script >
      <virtual-layout type="builtin" >
        <import-script >/usr/share/mediatomb/js/import.js</import-script >
        <dvd-script >/usr/share/mediatomb/js/import-dvd.js</dvd-script >
      </virtual-layout >
    </scripting >
    <mappings >
      <extension-mimetype ignore-unknown="no" >
        <map from="mp3" to="audio/mpeg"/ >
        <map from="ogg" to="application/ogg"/ >
        <map from="asf" to="video/x-ms-asf"/ >
        <map from="asx" to="video/x-ms-asf"/ >
        <map from="wma" to="audio/x-ms-wma"/ >
        <map from="wax" to="audio/x-ms-wax"/ >
        <map from="wmv" to="video/x-ms-wmv"/ >
        <map from="wvx" to="video/x-ms-wvx"/ >
        <map from="wm" to="video/x-ms-wm"/ >
        <map from="wmx" to="video/x-ms-wmx"/ >
        <map from="m3u" to="audio/x-mpegurl"/ >
        <map from="pls" to="audio/x-scpls"/ >
        <map from="flv" to="video/x-flv"/ >
<!--    <map from="mkv" to="video/x-matroska"/ >
        <map from="mka" to="audio/x-matroska"/ > -- >
        <map from="mka" to="audio/x-msaudio"/ >
        <map from="mkv" to="video/x-msvideo"/ >
        <map from="avi" to="video/divx"/ >
        <map from="m2ts" to="video/mpeg"/ >
        <map from="srt" to="video/subtitle"/ >
        <map from="sub" to="video/subtitle"/ >
        <map from="vob" to="video/mpeg"/ >
        <map from="ts" to="video/mpeg"/ >
        <map from="mp4" to="video/avc"/ >
      </extension-mimetype >
      <mimetype-upnpclass >
        <map from="audio/*" to="object.item.audioItem.musicTrack"/ >
        <map from="video/*" to="object.item.videoItem"/ >
        <map from="image/*" to="object.item.imageItem"/ >
        <map from="application/ogg" to="object.item.audioItem.musicTrack"/ >
      </mimetype-upnpclass >
      <mimetype-contenttype >
        <treat mimetype="audio/mpeg" as="mp3"/ >
        <treat mimetype="application/ogg" as="ogg"/ >
        <treat mimetype="audio/x-flac" as="flac"/ >
        <treat mimetype="image/jpeg" as="jpg"/ >
        <treat mimetype="audio/x-mpegurl" as="playlist"/ >
        <treat mimetype="audio/x-scpls" as="playlist"/ >
        <treat mimetype="audio/x-wav" as="pcm"/ >
        <treat mimetype="audio/L16" as="pcm"/ >
        <treat mimetype="video/x-msvideo" as="avi"/ >
        <treat mimetype="video/mp4" as="mp4"/ >
        <treat mimetype="audio/mp4" as="mp4"/ >
        <treat mimetype="application/x-iso9660" as="dvd"/ >
        <treat mimetype="application/x-iso9660-image" as="dvd"/ >
        <treat mimetype="video/x-matroska" as="mkv"/ >
        <treat mimetype="audio/x-matroska" as="mka"/ >
      </mimetype-contenttype >
    </mappings >
    <online-content ><!-- Make sure to setup a transcoding profile for flv -- >
      <YouTube enabled="no" refresh="28800" update-at-start="no" purge-after="604800" racy-content="exclude" format="flv" hd="no" >
        <favorites user="mediatomb"/ >
        <standardfeed feed="most_viewed" time-range="today"/ >
        <playlists user="mediatomb"/ >
        <uploads user="mediatomb"/ >
        <standardfeed feed="recently_featured" time-range="today"/ >
      </YouTube >
      <Weborama enabled="no" refresh="28800" update-at-start="no" >
        <playlist name="Active" type="playlist" mood="active"/ >
        <playlist name="Metal" type="playlist" >
          <filter >
            <genres >metal</genres >
          </filter >
        </playlist >
      </Weborama >
      <AppleTrailers enabled="no" refresh="43200" update-at-start="no" resolution="640"/ >
    </online-content >
  </import >
  <transcoding enabled="no" >
    <mimetype-profile-mappings >
      <transcode mimetype="video/x-flv" using="vlcmpeg"/ >
      <transcode mimetype="application/ogg" using="vlcmpeg"/ >
      <transcode mimetype="application/ogg" using="oggflac2raw"/ >
      <transcode mimetype="audio/x-flac" using="oggflac2raw"/ >
    </mimetype-profile-mappings >
    <profiles >
      <profile name="oggflac2raw" enabled="no" type="external" >
        <mimetype >audio/L16</mimetype >
        <accept-url >no</accept-url >
        <first-resource >yes</first-resource >
        <accept-ogg-theora >no</accept-ogg-theora >
        <agent command="ogg123" arguments="-d raw -o byteorder:big -f %out %in"/ >
        <buffer size="1048576" chunk-size="131072" fill-size="262144"/ >
      </profile >
      <profile name="vlcmpeg" enabled="no" type="external" >
        <mimetype >video/mpeg</mimetype >
        <accept-url >yes</accept-url >
        <first-resource >yes</first-resource >
        <accept-ogg-theora >yes</accept-ogg-theora >
        <agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/ >
        <buffer size="14400000" chunk-size="512000" fill-size="120000"/ >
      </profile >
    </profiles >
  </transcoding >
</config >


3. Монтирование NTFS тома 


Так как система с двойной загрузкой, данные храним на диске NTFS. Для монтирования автоматически добавляем в /etc/fstab. Узнать UUID командой blkid.
UUID=68B8DC89B8DC5762 /media/storage1 ntfs nosuid,nodev,noexec,uid=1000,gid=131,umask=000,user,auto,locale=ru_RU.UTF-8 0 2


4. Перекодировка тегов MP3-файлов в UTF8 


В командной строке, где лежат файлы выполнить.
find -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1

Удобная утилита для обработки тегов EasyTAG. Как пользоваться смотри здесь.

5. Установка драйвера Archer T4UH (Wi-Fi USB Adapter, rtl8812AU) 


Драйвера в ядре нет. Установка проста. Должны быть установлены пакеты для компиляции.
sudo apt-get install build-essential

cd ~
git clone https://github.com/abperiasamy/rtl8812AU_8821AU_linux.git
cd rtl8812AU_8821AU_linux
make
sudo make install

Перегружаемся, все работает автоматом (взято отсюда)

вторник, 1 ноября 2016 г.

Открытые файлы

Просмотр открытых файлов на  WINDOWS Server.

Смотрим открытые файлы на сервере, команду запускаем на локальной станции (нужны права)


openfiles /query /s имя_сервера /fo table /v
openfiles /query /s имя_сервера /fo table /v | find /i "dbf"

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

openfiles /local on
требуется перезагрузка, ведет к снижению производительности

Отключение пользователей
Примеры:
    OPENFILES /Disconnect /?
    OPENFILES /Disconnect /ID 1
    OPENFILES /Disconnect /A  <пользователь>
    OPENFILES /Disconnect /O Read/Write
    OPENFILES /Disconnect /OP "c:\Мои Документы \пример.doc" /ID 234
    OPENFILES /Disconnect /S <система>  /U <пользователь> /ID 5
    OPENFILES /Disconnect /S <система>  /U <пользователь> /P <пароль> /ID *

вторник, 18 октября 2016 г.

MSSQL резервная копия системных баз (базы мастер)

Преподаватель Кирилл Панов

master – требуется резервное копирование , дополнительно рекомендую холодную копию
msdb – требуется резервное копирования ,как и пользовательская база
model - рекомендую холодную копию
tempdb – не требуется резервное копирование

Для быстрого восстановления MSSQL сервера необходимо делать резервные копии системных баз master и model.

Если системная база данных разрушена (отсутствует) запустить MSSQL сервер невозможно.
Поэтому рекомендуется сделать "холодную" копию баз master и model. (master.mdf, mastlog.ldf, model.mdf, modellog.ldf). Делать часто их не нужно, а только после установки сервера, сервиспаков, патчей. Другими словами база должна быть от той версии сервера, на которой восстанавливается.
Регулярный backup баз master и model делается обычным образом.

Восстановление. Копируем на место поврежденных базу master. Убеждаемся что никто не подключится к MSSQL среверу раньше нас, например уже запущенная Management Studio. Запускаем сервер с ключем -m
> cd "C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn"
> sqlserv -m 

Как вариант из графики, без командной строки

 

Запускаем cmd с правами администратора
Запускаем sqlcmd с правами администратора
Подключаемся к серверу
C:\Windows\system32>sqlcmd -E
1> RESTORE DATABASE MASTER FROM DISK='D:\db\backup\master.bak' WITH REPLACE;
2> go

После выполнения этой команды MSSQL остановится, надо запустить вручную без параметра -m
Аналогично восстанавливается база model.


Если нет холодной копии master.
(Смотреть документацию) Нужен дистрибутив.
Запустите перестройку системных баз данных
setup.exe /INSTANCENAME=MSSQLSERVER /ACTION=REBUILDDATABASE /SQLSYSADMINACCOUNTS="BUILTIN\ADMINISTRATORS"

  • Недостаток относительно предыдущего метода - Очень долго
  • Можно попробовать взять master с другого сервера (not supported)








четверг, 22 сентября 2016 г.

Unmounting a LUN using the vSphere Client


Unmounting a LUN using the vSphere Client

To detach a storage device using the vSphere Client, see the Detach Storage Devices section in the vSphere 5.0 Storage Guide.

Caution: You must successfully unmount the datastore using the documented method prior to completing the steps described below. For more information, see the Unmount VMFS or NFS Datastores section in the vSphere 5.0 Storage Guide.

To unmount a LUN from an ESXi 5.0 host using the vSphere Client:
  1. If the LUN is an RDM, skip to step 2. Otherwise, in the Configuration tab of the ESXi host, click Storage. Right-click the datastore being removed and click Unmount.

    A Confirm Datastore Unmount window appears. When the prerequisite criteria have been passed, click OK.

    Note: To unmount a datastore from multiple hosts in the vSphere Client, click Hosts and Clusters > Datastores and Datastore Clusters view (Ctrl+Shift+D). Perform the unmount task and select the appropriate hosts that should no longer access the datastore to be unmounted.

  2. Click the Devices view (under Configuration > Storage):



  3. Right-click the NAA ID of the LUN (as noted above) and click Detach. A Confirm Device Unmount window is displayed. When the prerequisite criteria are passed, click OK. Under the Operational State of the Device, the LUN is listed as Unmounted.

    Note: The Detach function must be performed on a per-host basis and does not propagate to other hosts in vCenter Server. If a LUN is presented to an initiator group or storage group on the SAN, the Detach function must be performed on every host in that initiator group before unmapping the LUN from the group on the SAN. Failing to follow this step results in an all-paths-down (APD) state for those hosts in the storage group on which Detach was not performed for the LUN being unmapped.

  4. Confirm if the LUN is successfully detached. The LUN can then be safely unpresented from the SAN. For more information, contact your storage array vendor.
  5. Perform a rescan on all ESXi hosts which had visibility to the LUN. The device is automatically removed from the Storage Adapters.
When the device is detached, it stays in an unmounted state even if the device is re-presented (that is, the detached state is persistent). To bring the device back online, the device must be attached.

If you want the device to permanently decommission from an ESXi host, manually remove the NAA entries from the host configuration:
  1. To list the permanently detached devices, run this command:

    # esxcli storage core device detached list

    You see output similar to:

    Device UID State
    ------------------------------------ -----
    naa.50060160c46036df50060160c46036df off
    naa.6006016094602800c8e3e1c5d3c8e011 off


  2. To permanently remove the device configuration information from the system, run this command:

    # esxcli storage core device detached remove -d NAA_ID

    For example:

    # esxcli storage core device detached remove -d naa.50060160c46036df50060160c46036df

среда, 21 сентября 2016 г.

Soft RAID, замена HDD

После выключения не грузилась OS, не собирался RAID1 раздел boot.
Попробовал

mdadm --assemble --force /dev/md126

ни чего не изменилось, тогда 

mdadm --run /dev/md126 

раид поднялся, одного диска не хватает . Не понял почему при наличии исправного sda (sdc вышел из строя)  /boot не поднялся, а при этом / (root на sda2) поднялся нормально.


И собственно по замене диска
 

sfdisk -d /dev/sda | sfdisk /dev/sdc
mdadm --manage /dev/md126 --add /dev/sdc1
mdadm --manage /dev/md127 --add /dev/sdc2
grub2-install /dev/sdc



пятница, 15 июля 2016 г.

1C

Проблемы с базой, решения.
отсюда


Всё о сокращении Transaction Log для MS SQL 2008/2012


Рассмотрены пожалуй все варианты проблем из за которых журнал транзакций может не сокращаться и все варианты решений. От простейших, до "не рекомендуемых".
Для MS SQL 2008/2012 рекомендации ИТС уже устарели, кроме того и раньше они не всегда помогали. В статье попытался собрать наиболее полный комплект информации по данному вопросу.
В своё время в одном месте всего этого не нашел, поэтому думаю будет полезно.


Популярная статья ИТС http://its.1c.ru/db/metod81#content:2373:1 устарела - теперь уменьшение размера журнала транзакций стало не самой простой операцией.

Собственно там рекомендуется следующий скрипт:


BACKUP LOG Имя_Базы_Данных WITH TRUNCATE_ONLY
go
DBCC SHRINKFILE(Имя_Файла_Журнала_Транзакций) 
go

Если выполнить его в MS SQL 2008/2012 получите ошибку:

'truncate_only' is not a recognized BACKUP option
Подробно:
http://social.msdn.microsoft.com/Forums/sqlserver/en-US/9997e75e-f126-4901-9379-de540a708ec9/backup-log-with-truncateonly


Что теперь делать?
Решения, собственно два:

1)
USE [Database] ALTER DATABASE [Database] SET RECOVERY SIMPLE
go
 

DBCC SHRINKFILE ([Database]_log, 1); 
ALTER DATABASE [Database] SET RECOVERY FULL
go


2)
USE [Database]
BACKUP LOG [Database]  TO DISK='NUL:'
go
 
DBCC SHRINKFILE ([Database]_log, 1)
go


Если "Урезанием лога" не злоупотреблять (т.е. сокрашать лог вместе с полной копией) то по большому счету не принципиально каким методом пользоваться.
Второй вроде как правильнее, зато первый "надежнее".

На этом казалось бы можно и остановиться, но зачем тогда отдельную статью писать. Нет, конечно это ещё не всё. Обычно вопросы про урезание лога возникают когда это сделать не получается.
Притом способы, описанные выше, как правило, описаны не раз, все их освоили и проблем не вызывают.

Итак, если все действия, описанные выше не помогли - лог файл по-прежнему занимает N гигабайт. Переходим к плану B:

select log_reuse_wait_desc from sys.databases
В результате можете получить 3 варианта:

а. Пусто - Обычно это означает что у БД лог можно хоть сейчас полностью сократить, могу предложить только попробовать ещё раз Shrink, а если не поможет - переходить к плану C
b. Log_Backup - Нормальный варинат. В данном случае говорит о том, что Backup Log не выполнено, или выполнено некорректно
b. Replication - значит что ваш лог не обрезается из за репликации - скорее всего ошибки.
с. Active transactions -  Самая частая ситуация - в базе есть подвисшие транзакции, с ними нужно разобраться.

Replication  - Репликация для систем на платформе 1С, пожалуй, бессмысленное дело. Потому как Read only баз MS SQL не бывает, средства создания распределенных систем в 1С есть собственне (да, я про РИБ). Для обеспечения отказоустойчивости гораздо лучше подходят кластерные технологии. Собственно рекоммендация простая:

sp_removedbreplication '[Database]'Собственно после этого бэкап и Shrink помогут. Если же вопреки здравому смыслу вы всё-таки хотите сохранить репликацию БД то конечно выполнять эту команду нельзя, а нужно разбираться с ошибками репликации. Но это уже тема отдельной статьи.

Active transactions - наиболее популярная история. В базе есть транзакции, которые не завершены, и чего то ожидают. Чащи всего такие транзакции получаются при потере сетевого соединения или "вылете" клиента 1С в момент записи в БД. В этом случае нужно собственно узнать какая транзакция "повисла":

DBCC OPENTRAN

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

Transaction information for database 'master'.
Oldest active transaction:
SPID (server process ID) : 52
UID (user ID) : -1
Name          : user_transaction
LSN           : (518:1576:1)
Start time    : May 5 2014 3:30:07:197PM
SID           : 0x010500000000000515000000a065cf7e784b9b5fe77c87709e611500
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Из этого обилия информации ключевым является Start Time и SPID. Если транзакция в базе 1С выполняется боле нескольких секунд это уже означает что что-то не так. А если start Time будет минут 10 или более от текущего времени - такие транзакции (сеансы) нужно завершать. Но предварительно я бы рекоммендовал узнать что эта транзакция делала.Для завершения процесса можно ввести команду

KILL [Process ID]

Где Process ID - это тот самый SPID полученный на предыдущем шаге. При этом незавершенные транзакции откатятся средствами MS SQL Server. Возможно при "убийстве" процесса будут завершены и несколько сеансов 1С, но  вряд ли много. Сервер 1С поддерживает собственный пул соединений с MS SQL, соответственно соединения из этого пула используются только тогда, когда серверу что-то нужно от СУБД. При этом если соединение занято (а оно как видим занято) вряд ли оно будет использоваться для других процессов.

Но предварительно (!) если хотите всё-таки разобраться в проблеме рекомендую выполнить скрипт вроде:

DECLARE @sqltext VARBINARY(128)
SELECT @sqltext = sql_handle
FROM sys.sysprocesses
WHERE spid = [Process ID]
SELECT TEXT
FROM sys.dm_exec_sql_text(@sqltext)
GO
В результате вы получите текст команды SQL Server, на которой, собственно, всё и "зависло". Из неё вам нужна будет таблица в которую производилась запись, далее используя функцию "ПолучитьСтруктуруХраненияБазыДанных()" вы определите таблицу в терминах объектов метаданных в которую производилась запись и смотрите код. Как правило такие неприятные последствия происходят:

1) Ошибки в сетевых подключениях (для толстого клиента в т.ч. в сетевых подключениях клиентов, для тонкого - только в проблемах сети между сервером 1С и MS SQL).
2) Каких то неправильных действиях (отправка почты, запись в файл, запуск внешних обработок, чтения из файла) производимых в транзакциях (при записи, при проведении)

Собственно от них надо избавляться.


Если ничего не помогло (или план B)

ВНИМАНИЕ! Перед выполнением процедур, описанных ниже, сделать полную резервную копию файлов БД MS SQL нужно обязательно!!!!

Есть ещё один - более радикальный способ решения вопроса роста журнала транзакций MS SQL. Но я лично его бы не рекомендовал к использованию. Тем не менее, специалисты Microsoft тоже могут ошибаться,
и SQL Server может содержать ошибки, о которых мы регулярно читаем в BugFix, или же наблюдаем сами, поэтому приведу и этот способ.

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

Конечно при этом, особенно если в базе были всё-таки не зафиксированные может быть нарушена логическая целостность, но для этого запускается CheckDB которая в общем и целом приводит базу в порядок. Для аналогии это то же самое что в 1С проврять ссылочную целостность с опцией "Удалять если не найден". Если транзакция полностью не зафиксирована, но от неё остались частично данные, что противоречит принципу атомарности транзакций - эти данные будут удалены.

Итак приступим:

1) Detach БД из списка

2) Фал *.ldf удаляем (вы же его сохранили уж, да?)

3) Файл *.mdf переименовываем (в любое имя какое нравится)

4) В MS SQL создаём новую (!!!) БД с тем же именем, с каким была "больная" БД

5) Останавливаем MS SQL Server

6) Новый *.mdf файл удаляем, а старый переименовываем под "старое имя", подменяя тем самым файл новой БД

7) Запускаем MS SQL Server. При этом будет "битая БД", далее мы её исправляем

8) ALTER DATABASE [Database] SET EMERGENCY 

9) exec sp_dboption [Database], 'single user', 'TRUE'Монопольный режим работы с БД

10) DBCC CHECKDB ([Database], REPAIRALLOWDATA_LOSS)Ключевая операция - "возвращает БД к жизни". Может выполняться достаточно долго - до получаса на больших БД. Ни в коем случае не прерывайте эту операцию. Результат, где будут собраны исправленные ошибки
на всякий случай сохраните

11) exec sp_dboption [Database], 'single user', 'FALSE'Сбрасываем монопольный режим

12) ALTER DATABASE [Database] SET ONLINEДелаем базу доступной.

После чего получаем БД с чистым новеньким логом. На самом деле операция достаточно проста и в большинстве случае не несёт никаких критических последствий. Но всё-таки рекомендую прибегать к ней только в крайнем случае. Описана она не раз и в разных вариациях. Привожу свой вариант, который показался наиболее простым и понятным.

Внимание !
При выполнении ALTER DATABASE база SET EMERGENCY, к базе не должно быть соединений (подключения пользователей), если подвисло и на следующие команды выдает сообщение Msg 5061, Level 16, State 1, Line 1 ALTER DATABASE failed because a lock could not be placed on database 'name'. Try again later. Msg 5069, Level 16, State 1, Line 1 ALTER DATABASE statement failed. надо убить все коннекты к данной базе, можно через монитор .

SELECT
    DB_NAME(dbid) as 'DBName'
    , loginame as 'Login'
    , COUNT(dbid) as 'Connections'

FROM
    sys.sysprocesses
WHERE
    dbid > 0
GROUP BY
    dbid
    , loginame
--------------------
SELECT name , dbid FROM master.dbo.sysdatabases order by name

---------------------------------------------------------

select DATABASEPROPERTYEX('<your database>', 'UserAccess')

ALTER DATABASE база SET EMERGENCY  - ????

ALTER DATABASE база SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CHECKDB ('база');
DBCC CHECKALLOC ('база');
DBCC CHECKDB ('база',repair_allow_data_loss);  
ALTER DATABASE база SET MULTI_USER;
-----------------------------------------------------------
взято с

Если необходимо восстановить просто базу из полной копии, то достаточно выполнить следующий скрипт:


RESTORE DATABASE [Имя базы данных] FROM DISK = 'Z:\SQLServerBackups\back.bak' WITH REPLACE

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

RESTORE DATABASE TEST_DB –восстанавливаем полную копию
   FROM test_db_full
   WITH NORECOVERY;
GO
RESTORE DATABASE TEST_DB –восстанавливаем разностную копию
   FROM test_db_diff
   WITH FILE = 1,
   NORECOVERY;
GO
RESTORE LOG TEST_DB –восстанавливаем журнал транзакций №1
   FROM test_db_tran_1
   WITH FILE = 1,
   WITH NORECOVERY;
GO
RESTORE LOG TEST_DB –восстанавливаем журнал транзакций №2
   FROM test_db_tran_2
   WITH FILE = 1,
   WITH NORECOVERY;
GO
RESTORE DATABASE TEST_DB
   WITH RECOVERY;
GO

Для восстановления БД можно использовать так же и SSMS.

понедельник, 30 мая 2016 г.

DHCP. Статические клиенты

Далее пример конфига для клиента без фиксированного ip адреса

    host happylaptop {
      hardware ethernet 00:0a:39:22:da:39;
      option host-name "happylaptop";
      option domain-name "example.com";
      ddns-hostname "happylaptop";
      ddns-domain-name "example.com";
    }

Затем идет пример для группы хостов, или секции group в dhcpd.conf

    group {
      option domain-name "example.com";
      ddns-domainname "example.com";

      host happylaptop {
        hardware ethernet 00:0a:39:22:da:39;
        option host-name "happylaptop";
        ddns-hostname "happylaptop";
      }

      host dellstation  {
        hardware ethernet 00:b1:48:2a:ad:9c;
        option host-name "dellstation";
        ddns-hostname "dellstation";
      }
    }

Далее идет пример клиента со фиксированным ip адресом

    host jukebox {
      hardware ethernet 01:d0:06:b8:68:34;
      fixed-address 192.168.0.5;
      ddns-hostname "jukebox";
      ddns-domain-name "example.com";
      option host-name "jukebox";
      option domain-name "example.com";
    }
 
Взято 

вторник, 5 апреля 2016 г.

На компьютере, оборудованном устройством Gigabit Ethernet, не удается подключиться к контроллеру домена и применить групповую политику

Не удалось получить имя контроллера домена в этой сети. (Указанный домен не существует или к нему невозможно подключиться. ). Обработка групповой политики прекращена.

Сертификат, полученный от удаленного клиентского приложения, не прошел проверку. Код ошибки - 0x80092013. Не удалось выполнить запрос на подключение SSL.  В данных содержится клиентский сертификат.

Не удалось получить имя контроллера домена в этой сети - Windows XP
Не удалось получить имя контроллера домена в этой сети. (Указанный домен не существует или к нему невозможно подключиться. ). Обработка групповой политики прекращена.

А так же разные ошибки UserEnev о связи с домен контроллером, хотя ПК только вошёл в домен и ДК он видит.

Проблемы могут быть из-за сетевой карты Gigabit Ethernet.

Решение:

    Запустите редактор реестра.
    Найдите следующий раздел реестра:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
    Добавьте следующую запись реестра в
    Parameters
    подраздел:
    Имя: DisableDHCPMediaSense
    Тип данных: REG_DWORD (логическое)
    Значение: 1

    Примечание. Эта запись управляет действиями проверки состояния сетевого подключения. По умолчанию события проверки состояния сетевого подключения запускают выполнение действия DHCP-клиентом. Например, при появлении подключения клиент пытается получить аренду. При отключении клиент может перевести интерфейс и маршруты в неактивное состояние. Если присвоить этому параметру значение 1, DHCP-клиенты и не DHCP-клиенты будут игнорировать события проверки состояния сетевого подключения.
    Перезагрузите компьютер.

(http://support.microsoft.com/kb/239924)


На компьютере, оборудованном устройством Gigabit Ethernet, не удается подключиться к контроллеру домена и применить групповую политику

http://support.microsoft.com/kb/326152
-------------------------------------------------------------------------
Тип события:    Ошибка
Источник события:    crypt32
Категория события:    Отсутствует
Код события:    8
Дата:        11.08.2015
Время:        7:25:06
Пользователь:        Н/Д
Компьютер:    N5673
Описание:
Ошибка получения автоматического обновления последовательного номера стороннего корневого списка из: <http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootseq.txt> с кодом ошибки: Сетевое подключение не существует.

вторник, 29 марта 2016 г.

ЭЦП


Если закрытые ключи находятся в реестре то через КриптоПро CSP - Сервис - Скопировать копируете на какой-либо носитель, либо экспортировать ветку реестра с закрытыми ключами
Для 64-разрядных ОС HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crypto Pro\Settings\USERS\\Keys
Для 32-разрядных ОС HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\USERS\\Keys

сами сертификаты - через консоль: Пуск\выполнить: certmgr.msc
Перейти в Личное\Сертификаты:
Выделить все (нужные) сертификаты, правой кнопкой - Все задачи -> Экспорт ... Указать формат: в p7b Обратно из p7b - можно через Импорт
Программистам 1С передать номер отпечатка сертификата

суббота, 30 января 2016 г.

Linux Mint, Ubuntu

Просмотр установленных пакетов: dpkg -l
dpkg -l | grep keepass

ii  keepass2                                                    2.31+dfsg-1~ubuntu14.04~ppa1                        all          Password manager
ii  keepass2-plugin-application-indicator                       0.4.6+0.4.8                                         all          Adds an Application Indicator to KeePass 2.x
ii  keepass2-plugin-keepasshttp                                 1.8.4+2                                             all          KeePass 2.x plugin to expose password entries securely over HTTP
ii  keepass2-plugin-libdbus                                     0.3.1+0.4.8                                         all          Shared library for DBus for serveral KeePass 2.x plugins
ii  keepass2-plugin-libimagemagick                              0.2.7+0.4.8                                         all          Shared library for ImageMagick for serveral KeePass 2.x plugins
ii  keepass2-plugin-rpc                                         1.5.4-1                                             all          Remote Procedure Call (RPC) plugin for KeePass 2.x


понедельник, 25 января 2016 г.

Centos 7 Firewall


Состояние сервиса
[root@localhost log]#  systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2015-12-29 14:11:09 YEKT; 3 weeks 6 days ago
 Main PID: 634 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─634 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Dec 29 14:11:07 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
Dec 29 14:11:09 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.

Состояние сервиса
[root@localhost log]# firewall-cmd --state
running


[root@localhost log]# firewall-cmd --get-default-zone
public


[root@localhost log]# firewall-cmd --get-active-zones
public
  interfaces: ens192


[root@localhost log]# firewall-cmd --list-all
public (default, active)
  interfaces: ens192
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:



[root@localhost log]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

Посмотреть правила для какой либо зоны
[root@localhost]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
[root@localhost]# firewall-cmd --zone=internal --list-all
internal
  interfaces:
  sources:
  services: dhcpv6-client ipp-client mdns samba-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

Изменить зону на интерфейсе в текущей сессии (временно, до перезагрузки)
sudo firewall-cmd --zone=home --change-interface=ifcfg-ens192

Добавить интерфейс в зону (постоянно)
[root@localhost /]# cat /etc/sysconfig/network-scripts/ifcfg-ens192
 . . .
TYPE="Ethernet"
BOOTPROTO="dhcp"
DEFROUTE="yes"
ZONE=internal
 . . .
чтобы применить изменения
systemctl restart network.service
systemctl restart firewalld.service
посмотреть сервисы привязанные к зоне
[root@localhost]# firewall-cmd --zone=internal --list-services
dhcpv6-client ipp-client mdns samba-client ssh
Пример, добавил сервис DNS, не забыть перегрузить правила
[root@localhost network-scripts]# firewall-cmd --zone=public --list-services
dhcpv6-client ssh
[root@localhost network-scripts]# firewall-cmd --zone=internal --list-services
dhcpv6-client ipp-client mdns samba-client ssh
[root@localhost network-scripts]# firewall-cmd --zone=internal --permanent --add-service=dns
success
[root@localhost network-scripts]# firewall-cmd --zone=internal --list-services
dhcpv6-client ipp-client mdns samba-client ssh
[root@localhost network-scripts]# firewall-cmd --reload
success
[root@localhost network-scripts]# firewall-cmd --zone=internal --list-services
dhcpv6-client dns ipp-client mdns samba-client ssh
[root@localhost network-scripts]#

понедельник, 4 января 2016 г.

Fedora 23. После установки.

Есть такой проект PostInstallerF . Устанавливает репозитории для установки ПО.

Например, 
установка Kodi из стандартного репозитория, отсутствует плагин kodi-pvr-iptvsimple, нашёлся в PostInstallerF

----------
KeePass
После установки KeePass не запустился плагин KeePassHTTP (KeePassHttp.dll и
Newtonsoft.Json.dll). Взял эти файлы из LinuxMint /usr/lib/keepass2 - плагин заработал.

Firefox настройка

Разрешить неподписанные плагины


В скрытых настройках about:config
находим параметр
xpinstall.signatures.required
и переключаем через контекстное меню
с логического - true
на логическую - false
После чего закрываем вкладку и перезагружаем браузер.