Биты и байты.

Биты и байты.

пятница, 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"

About