Drop default constraint on a column in TSQL


DECLARE @tableName VARCHAR(MAX) = 'm_PWT'
DECLARE @columnName VARCHAR(MAX) = 'countInDoc'
DECLARE @ConstraintName nvarchar(200)
SELECT @ConstraintName = Name 
FROM SYS.DEFAULT_CONSTRAINTS
WHERE PARENT_OBJECT_ID = OBJECT_ID(@tableName) 
AND PARENT_COLUMN_ID = (
    SELECT column_id FROM sys.columns
    WHERE NAME = @columnName AND object_id = OBJECT_ID(@tableName))
IF @ConstraintName IS NOT NULL
    EXEC('ALTER TABLE '+@tableName+' DROP CONSTRAINT ' + @ConstraintName)

Get list of AD groups a user is a member of

Нужно получить список групп пользователя домена. Самое простое
net user userxxx /domain
но наименование группы обрезается до 21 символа, печалька Воспользуется повершелом
Для текущего пользователя:
(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf
Для указанного:
$env:username="userxxx";(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf

Download and merge HTTP Live Streaming .ts files

Скачиваем и собираем кусочки видео и отдельно аудио файлов (в данном случае их там тысячи, в m3u8) в один с подготовкой к проигрыванию стандартным элементом <video> html5

/usr/local/bin/ffmpeg -copyts -i "https://media-store-n.ru/api/v1/buckets/hls.webinar.ru/objects/56547.audio.128kbps.master.m3u8" -copyts -i "https://media-store-n.ru/api/v1/buckets/hls.webinar.ru/objects/56547.video.720p.master.m3u8" -muxpreload 0 -muxdelay 0 -vcodec copy -acodec mp3 -af "aresample=async=1000" -movflags faststart "/usr/local/www/nginx-mneti/dv/loaded/56547.mp4"
(ссылки нерабочие)

пытаемся избавиться от рассинхронизации видео и звука, -copyts -muxpreload 0 -muxdelay 0 -af «aresample=async=1000»
видео поток просто копируем, звук конвертируем в -acodec mp3
подготавливаем к просмотру html5 элементом video, -movflags faststart

http streamed MP4 video seekable with php-frm and nginx

Видео проигрывается, заставим работать быструю перемотку (без скачивания всего файла)
Воспользуемся возможностями нгинкса, именно он будет обрабатывать заголовки с «Content-Range»

    <video width="80%" height="80%" controls autoplay>
      <source src="https://www.mneti.ru/dv/loaded/getmp4.php?vid=<?= intval($_GET['vid']??0) ?>" type="video/mp4">
      Your browser does not support the video tag.
    </video>
часть содержимого getmp4.php, что-то там анализируем в php и если все ок, отдаем полный контроль по отдаче фала в nginx

$file = intval($_GET['vid']??0) . '.mp4';
header("Content-Type: video/mp4");
header( 'X-Accel-Buffering: no' ); //avoid nginx buffering.
header("X-Accel-Redirect: /stream_video/$file");
exit;    
настройка реального расположения файлов nginx.conf

    location /stream_video {
        internal;
        alias /var/www/video;
    }

AcceptSecurityContext failed with. [0x8009030C]

При попытке SSO авторизации на той же машине, где расположен сам сервис авторизации (sso-proxy) получал ошибку
AcceptSecurityContext failed with. [0x8009030C]

Помогло так
HKLM\System\CurrentControlSet\Control\LSA Add a DWORD value called “DisableLoopbackCheck” Set this value to 1

SQL data types from my query

Иногда нужно узнать типы возвращаемых запросом данных, например для объявления табличной переменной.
Начиная с 2012 SQL Server это легче легкого, для более ранних версий придется создавать временную таблицу из результата запроса, и затем в tempdb.sys.columns.
DECLARE @query nvarchar(max) = '
	select id, measEquiId, zipFlag, psId, dateSet, replaceId, pl1, pl2, pl3, phase, place, joinName, created, whoCreate, dateReplace from (
		select id, measEquiId, zipFlag, dateSet dateReplace, created, whoCreate from [MetrologDev].[dbo].m_eqPlaceParamsList ep
			where ep.deleted is null and ep.zipFlag = 35 and ep.psId = 0 and ep.replaceId=0 
			and not exists (select null from [MetrologDev].[dbo].m_eqPlaceParamsList ep2 where ep2.deleted is null and ep2.measEquiId = ep.measEquiId and ep2.psId <> 0 and ep2.replaceId=0 and ep2.id > ep.id)
			) inZip
		outer apply (
			select id id_r, psId, dateSet, replaceId, pl1, pl2, pl3, phase, place, joinName, created created_r, whoCreate whoCreate_r from (
				select row_number() over(order by id desc) rn, * from [MetrologDev].[dbo].m_eqPlaceParamsList ep
					where inZip.measEquiId=ep.measEquiId and ep.deleted is null and ep.zipFlag = 0 and ep.replaceId<>0)tt where rn=1) isRepl -- пока можно только менять, если снимать, то убираем условие ep.replaceId<>0
';
EXEC sp_describe_first_result_set @query, null, 0;

MariaDB update records or cteate table from CTE

CTE в марии это хорошо, но как сохранить результаты. В документации не нашел, аналогия с SQL Server не работает.

    update load0 l
        join 
         ( with t1 as (
             select row_number() over (partition by col1, substring(col2, 1, 15), col3,
              regexp_replace(regexp_substr(col4, '^[^|]*'),'[^а-я]',''),
               col6, regexp_replace(regexp_substr(col7, '^[^|]*'),'(http)*(s)*(www.)*[\/\:]',''), lower(col8), col9, col10 order by col11_id, col12_id) rn, l0.* from load0 l0
            )
                select * from t1
          ) t on (l.id=t.id)
            set l.client_number = t.rn
;
            create table col12 
            with t1 as (
            select col11, col12, count(*) cnt from load0
             group by col11, col12
            ), t2 as (
                select *, dense_rank() over (order by col11 desc) col11_id, dense_rank() over (partition by col11 order by col12) col12_id  from t1
            )
            , t3 as (
                select distinct col11, col11_id from t2
            )
                select col11_id, col12_id, col12 from t2
;

Authentication requests when you open Office documents in IE

При скачивании документов «Content-Type: application/msword» в ИЕ появляются окна авторизации. А появляются они из-за того что ИЕ шлют кучу служебных запросов «Microsoft Office Discovery». Ставим заглушку, можно было и в модреврайт поставить, я добавил на уровне пхп, дабы не зависеть от настроек апача.

// https://support.microsoft.com/en-us/help/2019105/authentication-requests-when-you-open-office-documents
// https://support.microsoft.com/en-ph/help/838028/how-documents-are-opened-from-a-web-site-in-office-2003
$matches = null;
$isIEzzz = preg_match('/^\\s*Microsoft((\\s+Office\\s+.*\\s+Discovery)|(-WebDAV-MiniRedir))/i', $_SERVER['HTTP_USER_AGENT'], $matches);
if ($isIEzzz === 1) {
    http_response_code(501); // 501 Not Implemented
    exit;
}

SELECT FROM stored procedure

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

declare @d1 datetime = convert(datetime, '{$p->dateFromQ}', 104), @d2 datetime = convert(datetime, eomonth(convert(datetime, '{$p->dateToQ}', 104))) + 1.0/1.000001;
exec {$this->db_our}perfReport @d1, @d2;
Стало

select * from 
openquery([LOOPBACK], '
declare @d1 datetime = convert(datetime, ''{$p->dateFromQ}'', 104), @d2 datetime = convert(datetime, eomonth(convert(datetime, ''{$p->dateToQ}'', 104))) + 1.0/1.000001;
exec {$this->db_our}perfReport @d1, @d2
with result sets (( 
	price decimal(25,3), selectedCnt int ,selectedSum decimal(38,3)
	,smoot1 int ,smoot2 int ,approvedInPmes int ,selected int, inOther int
	,id int ,h1_id int ,h2_id int ,h3_id int
	,h1_name varchar(128) ,h2_name varchar(128) ,h3_name varchar(128)
	,h3_extId int ,documentID int ,dName varchar(128)
	,entity varchar(255) ,createdD datetime ,createdDH varchar(30) ,docDateH varchar(30)
	,TIName varchar(4000) ,vr float ,cnt int ,measEquiId int
	,pfId int ,unitPriceId int ,intEntityType int ,hashedName varchar(128)
	,originalName varchar(256) ,moot int ,moot1 int ,moot2 int
	,etName varchar(128) ,ekName varchar(255)
	,ekId int ,serialNumber varchar(64)
	,workNameF varchar(258) ,priceN decimal(14,3)
	,kindId2 int ,isPriced int
))')
 where docDateH between convert(datetime, '{$p->dateFrom}', 104) and convert(datetime, '{$p->dateTo}', 104) + 1.0/1.000001

Windows 10 возвращаем «Средство Просмотра фотографий Windows»

При «чистой» установке windows 10 «Средство Просмотра фотографий Windows» более недоступно, исправляем ситуацию добавив несколько записей в реестр.
Скачиваем, открываем архив, запускаем, соглашаемся на отсутствие подписи, внесение изменений и тд. Activate Windows Photo Viewer on Windows 10.reg.zip
Открываем «Приложения по умолчанию» выбираем «Просмотр фотографий Windows». Приложения по умолчанию