Архив рубрики: Windows

Методы исправления ошибки kernel data inpage error

Не знаю почему, но человеческая цивилизация не может создать ничего вечного. Подтверждением этому является код ошибки kernel data inpage error. Именно поэтому любая технология, строение или еще что-либо имеет свои ограничения по сроку эксплуатации. Рукописи – и те горят. Единственным утешением в этом случае для владельцев различных ПК, пожалуй, является только возможность электронной начинки заранее предупреждать свое владельца о том, что очень скоро его собственность посетит легендарный зверек на букву «П». Читать

Могучий Шелл. Шпаргалка по 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, dirkill , 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.Чтобы воспользоваться механизмом необходимо добавить в базу файл группу inmemory

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 для ускорения работы процедуры  с таблицами inmemory

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 (вместо временных таблиц и табличных переменных)
Подробно все описано на MSDN там же можно взять примеры кода.
Также есть интересные статьи на хабре 1 и 2
Технология пока еще довольно сырая так что существует много ограничений ко
торые не всегда придутся по вкусу.
Ограничения:
• Не поддерживаются 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.
Подробно также описано на MSDN .
Как запустить это дело на 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
Как создать индекс  можно посмотреть на MSDN.  Интересно также написано тут
Небольшое  видео по теме
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
Сценарий использования
 ·      Ее рекомендуется использовать для OLTP систем, в которых преобладают запросы на чтение данных.
·      Нет никаких рисков потери данных, т.к. 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