Биты и байты.

Биты и байты.

пятница, 30 декабря 2016 г.

Новые возможности в SQL Server 2016.

Эволюция  не стоит на месте, она затрагивает не только живое, но и все окружающие нас вещи, в том числе и SQL Server.
Появляются новые возможности которые существенно упрощают жизнь не только разработчикам , админам , но  и конечным потребителям информации.
Ниже опишу полезные возможности  которые были найдены на просторах интернета в различных статьях. Полный список от МС здесь.

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


Temporal – исторические таблицы
Отличается от обычной таблицы возможностью хранить историю изменений строк без создания триггеров и дополнительных таблиц. Подробнее здесь
Для включения опции в таблице должны быть два столбца дат с типом datetime2  и опцией GENERATED ALWAYS AS ROW START и GENERATED ALWAYS AS ROW END
+ необходимо включить опцию версионирования таблицы с указанием имени исторической таблицы  WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.EmployeeHistory));

--Исторические таблицы, любую таблицу можно преобразовать в историческую
CREATE TABLE Employee
(
EmployeeID int Primary KEY,
FirstName varchar(20) NOT NULL,
LastName varchar(20) NOT NULL,
DepartmentName varchar(50) NOT NULL
)
GO
INSERT INTO Employee VALUES
(1,'Ken','Sanchez','Executive'),
(2,'Terri','Sanchez','Engeneering'),
(3,'Roberto','Sanchez','Engeneering'),
(4,'Bob','Sanchez','Engeneering'),
(5,'Gail','Sanchez','Support'),
(6,'Dylan','Sanchez','Support')

select * from employee

--чтобы скрыть столбцы дат, добавьте hidden в инструкцию
ALTER TABLE EMPLOYEE ADD
            StartDate datetime2 GENERATED ALWAYS AS ROW START  HIDDEN NOT NULL DEFAULT CAST('1901-01-01 00:00:00.0000000' as datetime2),
            EndDate   datetime2 GENERATED ALWAYS AS ROW END  HIDDEN  NOT NULL DEFAULT CAST('9999-12-31 23:59:59.9999999' as datetime2),
                    PERIOD FOR SYSTEM_TIME( StartDate,EndDate)
GO
ALTER TABLE Employee SET (system_versioning = on(history_table=dbo.EmployeeHistory))
GO
--TEST
UPDATE employee
   SET LastName = 'Markao'
   WHERE employeeid = 2
GO
UPDATE employee
   SET LastName = 'Johnson'
   WHERE employeeid = 3
GO
UPDATE employee
   SET LastName = 'Ganja'
  WHERE employeeid = 4
GO
DELETE employee WHERE employeeid = 5
GO
--Disable versioning
Alter table employee SET (system_versioning = off)

--Enable versioning
Alter table employee SET (system_versioning = ON)

--Проверяем данные
select * from employee order by employeeID , Startdate

Declare @datestart datetime2 = dateadd(ss,-5,getdate())
select * from employee for system_time as of @datestart

Declare @datestart datetime2 = dateadd(ss,-10,getdate())
select * from employee for system_time as of @datestart

Declare @datestart datetime2 = dateadd(ss,-15,getdate())
select * from employee for system_time as of @datestart


--Добавление столбца, автоматически добавляет его в историческую таблицу
alter table employee add RegionID int null

--Cleanup
Alter table employee SET (system_versioning = OFF)
drop table if exists EmployeeHistory
drop table if exists employee

вторник, 6 декабря 2016 г.

Рабочие лайфхаки. Полезная комбинация Excel + CMD

Прилетела тут как-то задача создать 50 пользователей локальных  для доступа к SharePoint порталу.

Ясен день заводить каждого вручную это обезьянья работа, одного пользователя еще можно создать, но 50 это перебор.
Для таких задач отлично подойдет комбинация Excel и командной строки.
Основная идея - быстро повторить одну и ту же команду CMD с разными параметрами. Как это работает? 

Создаем таблицу следующего вида, допустим у нас есть электронные адреса и по ним необходимо создать пользователей
Применительно к нашей задаче , добавляем  3 дополнительных столбца:

Password – генерируем случайно функцией excel
=СИМВОЛ(СЛУЧМЕЖДУ(65;90))&СИМВОЛ(СЛУЧМЕЖДУ(97;122))&СИМВОЛ(СЛУЧМЕЖДУ(97;122))&СИМВОЛ(СЛУЧМЕЖДУ(65;90))&СЛУЧМЕЖДУ(1000;9999)&СИМВОЛ(СЛУЧМЕЖДУ(65;90))

UserName – берем из адреса почты
=ЛЕВСИМВ(B2; НАЙТИ("@";B2;1)-1)

Script – само тело скрипта который будет выполняться на основе наших параметров username и password
="NET USER " & D2&" """& C2&"""/ADD  /comment:""Test Employee"" "



Протягиваем наши ячейки по всем строкам вниз, затем копируем получившиеся скрипты в текстовый файл, и сохраняем его с расширением .bat


Два раза жмем по файлу, немного магии и пользователи созданы.

PS добавить почту в Sharepoint можно дополнительным столбцом
="Set-SPUser -Identity """&O2&""" -Email """&B2&""" -Web  https://sharepoint.com"

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

Полезные возможности Excel №2

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


Удаляем заголовки и подписи, преобразуем ячейки в таблицу



Заполняем  значениями пустые значения в столбце сводной таблицы, выделяем нужные столбцы, жмем «Выделить группу ячеек», выбираем опцию «пустые ячейки»


Вводим формулу для первой пустой ячейки в столбце, нажимаем Ctrl +Enter, формула применится  ко всем ячейкам в столбце


пятница, 16 сентября 2016 г.

Запись действий пользователя.

Когда нужна быстрая документация проблемы или последовательности действий пользователя подойдет встроенная в Windows  с 7 версии   простая, но очень полезная утилита.  
Самый простой способ найти «Средство записи действия пользователя» ввести psr.exe в строке поиска.
 
После того как выполнены все действия , PSR сохраняет файл MHTML в контейнере zip поскольку это самый простой способ отправить отчет по e-mail.
Файл можно открыть в любом браузере или MS Word , чтобы скопировать изображения необходимо  нажать скопировать все изображения  "Copy" и вставить в свою документацию. 
Можно просматривать результаты в режиме слайдов что, бывает удобным.
Внимание   программа может записывать максимально до 100 скриншотов, если количество скриншотов превышает это предел то скриншоты перезаписываются по кругу.

Поэтому  если процесс длительный  лучше разбить на несколько этапов.
Программа делает скриншоты сразу со всех подключенных экранов.
 


Ввод с клавиатуры тоже не записывается дабы не попала в запись лишняя инфа типа пароля или учетных данных.
Зато можно делать комментарии.


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

Полезные скрипты для Sharepoint на Powershell

Для тех кто хочет почувствовать настоящим админом, в  SharePoint есть интеграция с Powershell.  
Всегда полезно иметь под рукой набор скриптов, которые решил собрать в одном месте..

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

Add-PSSnapin Microsoft.Sharepoint.Powershell

Можно также встретить в скриптах более продвинутый вариант

If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null
{ Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell




Веб приложения и список сайтов

$webApp = Get-SPWebapplication 'http://london'

foreach($spSite in $webApp.Sites)
{
if ($spSite.HostHeaderIsSiteName)
{ Write-Host $spSite.Url 'is host-named' }
else
{ Write-Host $spSite.Url 'is path based' }
}


Результат


Коллекции сайтов могут быть 2х типов, сайт на основе пути (http://london/sites/demosite  по пути веб приложения создаются под сайты), и сайт на основе имени узла ( http://portal.contoso.com любое красивое имя для сайта )
Подробно на сайте Майкрософт
Сайты на основе имени узла создаются  только через Powershell, пример создания


New-SPSite 'http://portal.contoso.com' -HostHeaderWebApplication (Get-SPWebApplication 'http://london') -Name 'Portal' -Description 'Portal site' -OwnerAlias 'contoso\administrator' -language 1033 -Template 'STS#0'

New-SPSite 'http://bi.contoso.com' -HostHeaderWebApplication (Get-SPWebApplication 'http://london') -Name 'BI' -Description 'BI site' -OwnerAlias 'contoso\administrator' -language 1033 -Template 'BICenterSite#0'

Доступные шаблоны можно посмотреть командой

Get-SPWebTemplate

Небольшое видео  по настройке сайтов на основе имени

четверг, 11 августа 2016 г.

Полезные ссылки SharePoint

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

URL для коллекции сайтов

Версия Sharepoint
http://sp/_vti_pvt/service.cnf

Контент и структура сайта


Столбцы SharePoint

Управление банком терминов

Узнать версию

Мастер страницы сайта

Типы контента

Веб части

Список пользователей

Корзина коллекции сайтов

Журнал рабочих процессов

Возможности коллекции сайтов 

Параметры шаблонов сайтов и макетов страниц

Регистрация нового приложения app

Иерархия сайтов

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

Найди отличия в таблицах SQL

Понадобилось тут при переходе на новую систему сравнить данные справочников с архивной системой.
Для этих целей отлично пригодилась утилита Tablediff , главное требование чтобы таблицы имели одинаковую структуру и содержали первичный ключ либо столбец идентификатора  identity, rowguid или уникальный ключ.
Плюс этой утилиты в том что можно легко сравнивать таблицы с разных серверов и конечно же есть возможность привести таблицы к единому виду добавив всего лишь один параметр -f и получить необходимый скрипт .

Если таблицы не совпадают по структуре проще написать свой запрос для сравнения используя связанные серверы и команды INTESECT  и EXCEPT или создать представления и сравнить их.
Утилита устанавливается вместе с опцией Репликация на SQL сервер, так что можно скопировать к себе с любого доступного сервера
Обычно утилита располагается по адресу C:\Program Files\Microsoft SQL Server\110\COM
В самом примитивном виде команда выглядит так
tablediff.exe" -sourceserver MyServer1 -sourcedatabase MyDatabase1  -sourceschema SourceSchema -sourcetable MyTable1 -destinationserver MyServer1 -destinationdatabase MyDatabase1 -destinationschema DestSchema -destinationtable MyTable2 -dt -et TableDiff -o C:\Shared\Cmp_tables_sql\TableDiff.txt -f C:\Shared\Cmp_tables_sql\Script\Tablediff.sql

результат пишется в файл TableDiff.txt  и таблицу TableDiff

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

Экпресс доступ к данным в Sharepoint

Как быстро получить данные из списка SharePoint не пользуясь веб сервисами.
Самый быстрый способ получить их это конечно  нажать кнопку Экспорт в Excel и Бинго.

Посмотрим что скрывается за этой выгрузкой. Откроем файл подключения


В нем можно найти все реквизиты и параметры

http://сайт/_vti_bin/owssvr.dll?XMLDATA=1&List={2187857A-977C-43F6-BF4A-0D10A8410A41}&View={3BD82CF2-EA85-4CD3-81B8-17150794A091}&RowLimit=0&RootFolder=%2fLists%2fList7
Selection={2187857A-977C-43F6-BF4A-0D10A8410A41}-{3BD82CF2-EA85-4CD3-81B8-17150794A091}
EditWebPage=
Formatting=None
PreFormattedTextToColumns=True
ConsecutiveDelimitersAsOne=True
SingleBlockTextImport=False
DisableDateRecognition=False
DisableRedirections=False
SharePointApplication=http://сайт/_vti_bin
SharePointListView={3BD82CF2-EA85-4CD3-81B8-17150794A091}
SharePointListName={2187857A-977C-43F6-BF4A-0D10A8410A41}
RootFolder=/Lists/List7

Как видим используется вызов RPC,
Немного информации  SharePoint Foundation RPC Protocol 


{0} – ссылка на сайт.  Корневой или любой подсайт.
{1} –GUID списка

Также можно использовать представления для выгрузки данных


таким образом наша ссылка в усеченном варианте  будет иметь вид


Результат можно непосредственно проверить в браузере
Ну а дальше XML можно использовать в скрипте на свое усмотрение.

пятница, 6 мая 2016 г.

Как быстро установить патч на SharePoint

Как быстро установить патч на SharePoint или почему обновление может устанавливаться 5 часов.  
Подробности тут.
Если вкратце необходимо отключить службы  SPTimerV4, IISAdmin, OSearch15, SPSearchHostController перед установкой патча и включить после установки.
1. Отключаем службы  IISAdmin и SPTimerV4
2. Выключаем службы IIS Admin и Timer Services если они запущены                                                                                                           
3. Если необходимо делаем паузу в службе поиска , см детали в cкрипте
4. Останавливаем  службы поиска Search Services, см детали в скрипте
5. Устанавливаем патч в пассивном режиме
Примечание:  Power Shell должен оставаться открытым в фоне пока выполняется патч
6. После выполнения патча, Power Shell скрипт, восстанавливает запуск служб в  на шаге 1 в автоматический
7. Запускаем службы IIS Admin и Timer
8. Запускаем службы поиска Search Services                                                                                                                                                                                      
9. Возобновляем службы поиска если остановили Search Service Application
10. В конце скрипт отображает время начала и завершения патча  и затраченное время

После установки патча  запускаем вручную Sharepoint configuration wizard или

1.) заходим в папку "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\BIN"
2.) И запускаем конфигурирование PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures

About