Биты и байты.

Биты и байты.

четверг, 31 марта 2016 г.

Могучий Шелл. Шпаргалка по PowerShell. Часть 1.

PowerShell на мой взгляд это идеальный инструмент для автоматизации абсолютно любых задач.
Его можно изучать бесконечно и находить в нем все новые и новые возможности.
Почти все продукты MS начиная с 2007 года поддерживают управление настройку и администрирование через PowerShell, что дает практически нереальные возможности в их администрировании и управлении.
Это пост создан с целью иметь под рукой самые полезные скрипты и команды.
Для тех кто совсем не знаком  с этим чудесным инструментом рекомендую видео .
С чего же начинается PowerShell ?

Чтобы начать пользоваться скриптами локально необходимо установить политику выполнения сценариев в  RemoteSigned
Для этого достаточно выполнить команду Set-ExecutionPolicy RemoteSigned

После этого можно спокойно пользоваться скриптами созданными локально

Пару слов о том как устроен PowerShell 

1.Каждая команда состоит из 2х частей
ГЛАГОЛ (Get , Set, Add, Remove, Invoke , Start , Stop и тд  полный список Get-Verb)+ СУЩЕСТВИТЕЛЬНОЕ (Command , Service, Process , PSDrive  , ExecutionPolicy  ) =   Get-Command

Более полную информацию о любом командлете (встроенная команда PowerShell ) можно получить

Get-Help -name Get-Command

Или

Get-Alias -?   

Полный список команд можно получить  командой

Get-Command -type cmdlet

четверг, 10 марта 2016 г.

Плюшки SQL Server 2014.

Если лень читать можно сразу посмотреть небольшое видео

1. In-Memory OLTP
Новый механизм хранения данных в SQL Server.
Размещение таблиц в оперативной памяти  In-Memory OLTP для  устранения блокировок доступа к данным и ускорения чтения данных используется также при большом количестве подключений к таблице.
При перезапуске SQL Server после сбоя или запланированного завершения работы для устойчивых, оптимизированных для памяти таблиц повторно создаются экземпляры, чтобы вернуть их в состояние перед завершением работы или сбоем.
Существует два параметра устойчивости для оптимизированных для памяти таблиц:

1.Чтобы воспользоваться механизмом необходимо добавить в базу файл группу in-memory

ALTER DATABASE imoltp ADD FILEGROUP imoltp_file_group
    CONTAINS MEMORY_OPTIMIZED_DATA;

2.Создать таблицу с опцией MEMORY_OPTIMIZED=ON

CREATE TABLE [dbo].[InMemTable] (
  c1 INT NOT NULL PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000),
  c2 NCHAR(48) NOT NULL
) WITH (MEMORY_OPTIMIZED=ON, DURABILITY = SCHEMA_AND_DATA);
GO

3.Создать  специальную процедуру которая будет использовать механизм NATIVE_COMPILATION для ускорения работы процедуры  с таблицами in-memory

CREATE PROCEDURE [dbo].[usp_InsertData]
  @rowcount INT,
  @c NCHAR(48)
  WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
  AS
  BEGIN ATOMIC
  WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')
  DECLARE @i INT = 1;
  WHILE @i <= @rowcount
  BEGIN
    INSERT INTO [dbo].[inMemTable2](c1,c2) VALUES (@i, @c);
    SET @i += 1;
  END
END
GO

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

Дать права к представлению без права на таблицу.

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



Если кратко то  в случае когда  объектами владеет один и тот же  владелец то включается механизм цепочки владения  который позволяет исключить проверку прав для входящих в процедуру  или представление объектов.
Например хотим создать отдельную схему и дать доступ пользователю только на объекты данной схемы. Подробнее можно почитать тут

Создаем схему указываем владельца dbo, т.к будем использовать  в  представлениях и процедурах объекты данной схемы, таким образом включается цепочка наследования.
! Необходимо указать правильного владельца сразу иначе цепочка оборвется и придется пересоздавать схему.
CREATE SCHEMA [MDM] AUTHORIZATION [dbo]

Далее создаем представление, которое использует например  таблице TEST в схеме dbo

CREATE VIEW MDM.TESTVIEW AS
SELECT *
FROM dbo.TEST

Даем права нашему пользователю на селект и  грант, без гранта работать не будет.

GRANT SELECT , VIEW DEFINITION ON MDM.TESTVIEW TO [TestUser] WITH GRANT OPTION

Проверяем доступ  к представлению и убеждаемся что все работает


About