Не знаю почему, но человеческая цивилизация не может создать ничего вечного. Подтверждением этому является код ошибки kernel data inpage error. Именно поэтому любая технология, строение или еще что-либо имеет свои ограничения по сроку эксплуатации. Рукописи – и те горят. Единственным утешением в этом случае для владельцев различных ПК, пожалуй, является только возможность электронной начинки заранее предупреждать свое владельца о том, что очень скоро его собственность посетит легендарный зверек на букву «П». Читать
Архив рубрики: Windows
Могучий Шелл. Шпаргалка по 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
2.Псевдонимы команд (алиасы)
Дают возможность пользоваться сокращенными привычными названиями команд ls, dir, kill , del , copy, cls
Полный список алиасов
Get-Alias
2.Переменные
Переменные начинаются со знака $ , переменные создаются в момент присваивания им значения, тип определяется автоматически
Полезное видео.
$text = «Sample Text»
$text.GetType()
Типизированные переменные , можно указать конкретн
Как указать службе времени Windows Server NTP сервер?
Очень часто бывает необходимо синхронизировать часы на Windows Server? в т.ч. 2008, 2008r2. Однако привычной для владельцев персональных Windows, таких как 7,8,8.1,10 в настройках часов вкладки с синхронизацией через Интернет НЕТ. Читать
Контроллер домена не берёт время с сервера точного времени
На команду
w32tm /resync
отвечает «Синхронизация не выполнена, поскольку нет доступных данных о времени.«
Команда
w32tm /monitor
кажет, примерно, следующее:
DC1.domain.local *** PDC ***[[::1]:123]:
ICMP: 0ms задержка
NTP: +0.0000000s смещение относительно DC1.domain.local
RefID: 'LOCL' [0x4C434F4C]
Страта: 1
Т.е. время берётся с локальных часов, сервер присвоил себе страту 1. Хотя тут есть один ньюанс)) Никсовые машины с такого сервера время брать отказываются. То ли в силу того, что источник LOCL, то ли страта отображается как 1, а на деле 16. Ответ нашелся здесь. В групповую политику по умолчанию внесли Включить NTP-клиент Windows. И она применилась к контроллеру домена. Ключи реестра из Policies переопределили стандартные и сервер пытался брать время сам с себя, после чего уходил в себя брать время со своих часов.
Автор: Василий Иванов
Дата публикации: 2016-03-28T16:26:00.002-07:00
Плюшки 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
SCHEMA_ONLY (недолговечная таблица)
Этот параметр обеспечивает устойчивость схемы таблицы, в том числе индексов.При перезапуске SQL Server недолговечная таблица создается заново, но запускается без данных.(В отличие от таблицы в базе данных tempdb, где и таблица, и ее данные теряются после перезапуска.) Типичный сценарий для создания недолговечной таблицы — хранение временных данных, например промежуточной таблицы для процесса ETL.Устойчивость SCHEMA_ONLY предотвращает ведение журнала транзакций и создание контрольной точки, что может существенно уменьшить объем операций ввода-вывода.
SCHEMA_AND_DATA (долговечная таблица)
Этот параметр обеспечивает устойчивость как схем, так и данных.Уровень устойчивости данных зависит от того, выбрана ли фиксация транзакции как полностью устойчивая или отложенно устойчивая.Полностью устойчивые транзакции дают гарантию устойчивости данных и схемы аналогично таблице на диске.Отложенная устойчивость улучшает производительность, но может привести к потере данных в случае сбоя или отработки отказа сервера.(Дополнительные сведения об отложенной устойчивости см. в разделе
Сценарии использования In-Memory OLTP
• Интенсивные операции чтения на таблице
• Одновременная вставка большого количества данных из параллельных соединений к серверу
• Staging таблицы для ETL процессов
• Табличные типы in-memory (вместо временных таблиц и табличных переменных)
Технология пока еще довольно сырая так что существует много ограничений ко
торые не всегда придутся по вкусу.
торые не всегда придутся по вкусу.
Ограничения:
• Не поддерживаются DML триггеры
• Отсутствуют FOREIGN KEY и CHECK constraints
• Единственным уникальным индексом может быть только PRIMARY KEY
• Максимум можно создать 8 индексов, включая PRIMARY KEY
Не поддерживаемые типы данных
• DATETIMEOFFSET
• GEOGRAPHY
• GEOMETRY
• HIERARCHYID
• Large Objects (LOBs). For example, varchar(max), nvarchar(max),
varbinary(max), image, xml, text, and ntext.
• ROWVERSION
• sql_variant
• CLR functions
• User-defined types (UDTs)
2. PowerView для многомерных моделей
Раньше Power View работал только на реляционных данных, с 2014 версии можно использовать OLAP кубы в качестве источников данных Power View.
Это несомненный плюс для новой версии SQL сервера.
Отчет на многомерном источнике теперь может построить любой пользователь и поделиться им с коллегой через портал SharePoint.
3. Обновляемые колоночные индексы
Появились еще в SQL Server 2012, для хранилищ данных и оптимизации запросов с группировкой и агрегирующими функциями.
Однако появились в достаточно сыром виде с существенным ограничением, такие индексы нельзя было обновлять напрямую, только через задницу: удалить индекс, обновить данные и заново создать индекс.
В 2014 версии удалось победить это тупое ограничение и можно спокойно без извращений обновлять индексы, заработал таки REBUILD.
CREATE NONCLUSTERED COLUMNSTORE INDEX csindx_simple
ON SimpleTable
(OrderDateKey, DueDateKey, ShipDateKey)
WITH (DROP_EXISTING = ON,
MAXDOP = 2)
ON «default»
GO
— update mytable —
ALTER INDEX mycolumnstoreindex on mytable REBUILD
Небольшое видео по теме
4. Расширяемый буферный пул
Предлагается использовать в системах где память расходуется по максимуму через использование SSD дисков.
Включить опцию очень легко. Для этого достаточно использовать команду ALTER SERVER CONFIGURATION и указать расположение файла и его размер, который будет использоваться в качестве Buffer Pool Extension.
ALTER SERVER configuration
SET buffer pool extension
ON (FILENAME = 'X:MyCache.bpe', SIZE = 64 gb);
GO
Отключается Buffer Pool Extension следующей командой.
ALTER SERVER configuration
SET buffer pool extension OFF;
GO
Сценарий использования
· Нет никаких рисков потери данных, т.к. BPE кэширует только «чистые» страницы. При с
Дать права к представлению без права на таблицу.
В ситуации когда пользователь должен видеть только определенные данные из таблицы или не хочется заморачиваться с правами на таблицу
пригодится использование механизма цепочек владения.
Если кратко то в случае когда объектами владеет один и тот же владелец то включается механизм цепочки владения который позволяет исключить проверку прав для входящих в процедуру или представление объектов.
Например хотим создать отдельную схему и дать доступ пользователю только на объекты данной схемы. Подробнее можно почитать тут
Создаем схему указываем владельца 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
Проверяем доступ к представлению и убеждаемся что все работает
PS скриптом ниже можно проверить все права пользователя
EXECUTE AS LOGIN = N'TestUser';
GO
DECLARE @login NVARCHAR(256), @user NVARCHAR(256);
SELECT @login = login_name FROM sys.dm_exec_sessions WHERE session_id = @@SPID;
SELECT @user = d.name
FROM sys.database_principals AS d
INNER JOIN sys.server_principals AS s
ON d.sid = s.sid
WHERE s.name = @login;
SELECT u.name, r.name
FROM sys.database_role_members AS m
INNER JOIN sys.database_principals AS r
ON m.role_principal_id = r.principal_id
INNER JOIN sys.database_principals AS u
ON u.principal_id = m.member_principal_id
WHERE u.name = @user;
SELECT class_desc, major_id, permission_name, state_desc
FROM sys.database_permissions
WHERE grantee_principal_id = USER_ID(@user);
GO
REVERT;
Автор: Roman D
Дата публикации: 2016-03-04T06:42:00.001-08:00








