Биты и байты.

Биты и байты.

пятница, 22 мая 2015 г.

Подключение к списку sharepoint из SSRS

Как подключить список Sharepoint к отчету SSRS?
Вариант 1. Создать dataset c подключением к sharepoint


<RSSharePointList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <ListName>График отпусков</ListName>
      <Query>
        <Where>
        </Where>
      </Query>
    </RSSharePointList>


Привязать использую функцию lookup и lookupset

Вариант 2.
Подключить на уровне процедуры через базу sharepoint

ALTER PROCEDURE [dbo].[GetVacationsSharepoint] (@DATEFROM DATETIME = NULL,@DATEEND DATETIME =NULL )

AS
BEGIN

SET NOCOUNT OFF

SET LANGUAGE Russian;

--DECLARE @DATEFROM DATETIME
--DECLARE @DATEEND DATETIME

SET @DATEFROM =  ISNULL(@DATEFROM,DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0) )
SET @DATEEND = ISNULL(@DATEEND,DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, GETDATE()) + 1, 0)))

SET @DATEEND = DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0,@DATEEND) + 1, 0))
SELECT  D.DATA , t.[Login]  , t.[Имя пользователя] COLLATE Cyrillic_General_CI_AS as Username ,  DATENAME(dw,D.DATA) WeekDay, DATEPART(weekday,D.DATA) WeekDayNumber, DATEPART(wk,D.DATA) WeekNumber, DATENAME(month,D.DATA) Monthname ,DATEPART(month,D.DATA) MonthNumber , DATEName(yyyy,D.DATA) YEARNAME ,
DATEPART(dayofyear,D.DATA) DayOfyearNumber,
DATEPART (day, D.DATA) DayOfMnth ,
(CASE WHEN DATEPART(weekday,D.DATA) = 1 THEN 'Пн'
       WHEN DATEPART(weekday,D.DATA) = 2 THEN 'Вт'
       WHEN DATEPART(weekday,D.DATA) = 3 THEN 'Ср'
       WHEN DATEPART(weekday,D.DATA) = 4 THEN 'Чт'
       WHEN DATEPART(weekday,D.DATA) = 5 THEN 'Пт'
       WHEN DATEPART(weekday,D.DATA) = 6 THEN 'Сб'
       WHEN DATEPART(weekday,D.DATA) = 7 THEN 'Вс' ELSE DATENAME(dw,D.DATA) END) WeekDayShort,
(CASE WHEN  D.DATA >=t.DateFrom  AND D.DATA <= t.DateTo     THEN 1 ELSE NULL END) IsVacation,
(CASE WHEN  D.DATA >=t.DateFrom  AND D.DATA <= t.DateTo     THEN t.VacationType ELSE NULL END) VacationType,
(CASE WHEN  D.DATA >=t.DateFrom  AND D.DATA <= t.DateTo     THEN t.id ELSE NULL END) id,
(CASE WHEN  D.DATA >=t.DateFrom  AND D.DATA <= t.DateTo     THEN t.Comment ELSE NULL END) Comment
FROM (SELECT DATA
      FROM dbo.DatesBetween(@DATEFROM, @DATEEND)) D ,
            (
                           SELECT dat.nvarchar3 VacationType, dat.datetime1 DateFrom, dat.[datetime2] DateTo, dat.int1 USERID, u.tp_Login [Login], u.tp_Title [Имя пользователя], dat.tp_ID ID, dat.nvarchar1 Comment
                             FROM [Wss_content_80_portal2010].[dbo].[AllUserData] DAT (NOLOCK)
                           LEFT JOIN    [Wss_content_80_portal2010].[dbo].[UserInfo] u (NOLOCK) ON u.tp_ID = dat.int1
                           WHERE dat.tp_ListId = '055C8B06-6C99-4F4F-BAF2-ED809CA2CD42'
                           --(SELECT TOP 1 LIST.tp_ID FROM [Wss_content_80_portal2010].dbo.alllists LIST(NOLOCK)
                           --WHERE  LOWER(LIST.tp_Title)  = 'график отпусков' AND list.tp_DeleteTransactionId = 0x)
                             AND (dat.[tp_RowOrdinal] = 0)
                             AND (dat.tp_Level = 1)
                             AND (dat.[tp_IsCurrentVersion] = CONVERT(BIT, 1))
                             AND (dat.[tp_CalculatedVersion] = 0)
                             AND (dat.[tp_DeleteTransactionId] = 0x)
                             AND (dat.tp_SiteId = '5929DACB-CEDE-4564-9EDF-80B572A032AE')
                             AND dat.tp_ContentTypeId =  0x0100A3B1A57EC7FEE84593355BC92E45F9D5
             )  T

END

пятница, 8 мая 2015 г.

Краткий справочник по C#

Операторы C#

В переменных типа значения хранятся данные, а в переменных ссылочного типа хранятся ссылки на фактические данные. 
Ссылочные типы также называются объектами. 

Типы значений состоят из двух основных категорий:
Структуры делятся на следующие категории:
Для объявления ссылочных типов используются следующие ключевые слова:
В C# также предусмотрены следующие встроенные ссылочные типы:
Начиная с версии Visual C# 3.0 объявляемые в области метода переменные могут иметь неявный тип var. 
Локальная переменная с неявным типом имеет строгую типизацию, как если бы тип был задан явно, только тип определяет компилятор. 
Следующие два объявления i функционально являются эквивалентами:
var i = 10; // implicitly typed
int i = 10; //explicitly typed
 
do, for, foreach, in, while

Оператор if
bool condition = true;
if (condition)
{
    Console.WriteLine("The variable is set to true.");
}
else
{
    Console.WriteLine("The variable is set to false.");
}

Оператор switch 
int caseSwitch = 1;
switch (caseSwitch)
{
    case 1:
        Console.WriteLine("Case 1");
        break;
    case 2:
        Console.WriteLine("Case 2");
        break;
    default:
        Console.WriteLine("Default case");
        break;
}

Цикл for
for (int i = 1; i <= 5; i++)
{
   Console.WriteLine(i);
}
 
Цикл foreach
int[] fibarray = new int[] { 0, 1, 1, 2, 3, 5, 8, 13 };
foreach (int element in fibarray)
{
    System.Console.WriteLine(element);
}
System.Console.WriteLine();

В следующей таблице представлен список операторов C#, сгруппированных в порядке приоритета. 
Операторы в каждой группе имеют одинаковый приоритет.

Категория оператора
Операторы
Основные
Унарные
Мультипликативные
Аддитивные
Сдвиг
Относительные и тестирующие тип
Равенство
Логическое И
Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ

Логическое ИЛИ
Условное И
Условное ИЛИ
Поддержка значения NULL
Условный оператор
Присвоение и лямбда-выражение


среда, 8 апреля 2015 г.

Оптимизация производительности SQL Server 2012. Эпизод 1

 Оптимизация производительности обычно  выполняется по следующим характеристикам
  • Загрузка процессора
  • Использование памяти
  • Попадание в кэш
  • Дисковая подсистема
  • Оптимизация запросов
   Для  памяти  действует правило чем больше тем лучше,. Когда ее начинает не хватать повод 
   проверить чем же она забита. Об этом подробнее ниже.

    Управление памятью SQL Server.


Memory manager (ММ) является основным элементом, который управляет распределением памяти в SQL сервере. Данный компонент автоматически распределяет доступную SQL серверу память, снижая необходимость ручной настройки. После загрузки SQL ММ определяет первоначальный объем распределенной памяти и далее по мере изменения нагрузки динамически резервирует или освобождает оперативную память. Таким образом, ММ управляет взаимодействием SQL сервера с операционной системы в контексте управления памятью.
Основные комноненты:

1. Memory Clerks (Интерфейс, используемый потребителями для управления памятью, каждый потребитель имеет один или несколько клерков памяти ,используется для распределения, освобождения  и мониторинга использования памяти, каждый клерк связан с брокером  ,  sys.dm_os_memory_clerks)

2. Memory Objects (Кучи памяти, которые используют интерфейс клерков памяти чтобы получить доступ к page allocator для выделения страниц. Memory Objects не используют интерфейсы виртуальной или общей памяти, этот элемент использует только механизм распределения страниц. Многие компоненты SQL Server обращаются напрямую к MO, минуя клерки памяти. МО предоставляют возможность распределить диапазоны памяти произвольного размера.,  sys.dm_os_memory_objects)

3. Memory Nodes (Главная задача этого компонента состоит в определении области выделения памяти на узле NUMA,если памяти не хватает может быть выделена с соседнего узла , sys.dm_os_memory_nodes)

4. Memory Brokers (отслеживает запросы памяти от компонентов SQL и сопоставляет с текущими показатели её использования. Основываясь на полученной информации, брокер вычисляет «оптимальный» размер памяти, которая может быть распределена между компонентами. Брокер уведомляет компоненты о своих вычислениях, после этого каждый компонент использует эти сведения для дальнейшего использования памяти.)

5. Memory Pools (используется чтобы установить лимиты памяти,   internal - механизмы SQLOS, Default –пул по умолчанию для всего остального).

Более подробно все давно описано на хабре

About