Hints for MS SQL Server

От Dmitry 20. января 2014

MaxDop (number of processors) - устанавливаем уровень паралелирования. Ограничение так же может привышать установленные значения в  sp_configure.

 

 

 

 

Подробно описано тут: http://msdn.microsoft.com/ru-ru/library/ms181714.aspx

Тема:

Обслуживание БД

От Dmitry 17. января 2014

Сбор статистики по БД

exec sp_updatestats

шнинковать

DBCC SHRINKDATABASE (Marketing_DL)

 

Все сессии

 

SELECT loginame, cmd, program_name, hostname, status, cpu, db.name, spid

--, db.name 

FROM 

sys.sysprocesses sp 

JOIN sys.databases db ON sp.dbid = db.database_id

where db.name = 'marketing_il'

Тема:

Используем предрасчитанную переменную в Data Flow SSIS

От Dmitry 14. января 2014

Для этого в пакете скрипт извличение из источника данных должен быть подменен в свойствах на Expressions - и там уже должен быть прописан запрос с переменной, экранированный в кавычки.

 

Вот пример:

"select Order_ID, R1, R2, PIX, Sender_ID, CT 

from s_order_prop

where Order_ID> " +  @[User::LO]

 

Это подходит если в качестве источника мы используем ADO Net Source.

В случае использование OLE DB (я использовал для переливки из оракла) - то не посредственно в самом источнике указываем что при извличении данных использовать переменную а не скрипт или таблицу. Переменная соответственно должна выгляеть следующим образом:

Select 

'Select *

from

ROCKET_DWH_DL.STA_WTR_GETFULLORDERS

where Times > to_date(''' + (

Select convert(varchar (100),isnull(MAX(TIMES),'20130601'),120)

from

[dbo].[Oracle_DL_WTR_GETFULLORDERS]

)

+ ''',''YYYY-MM-DD HH24:MI:SS'')'

as Last_Order_Time

Тема:

Скрипт удаления полностью задвоенных строк через временную таблицу

От Dmitry 11. января 2012

Бывает что строки в таблице дублируются. Удалить дубли можно с помощью следующего скрипта:

 

begin transaction

Select distinct *
into #TempTable
from
Table T
where exists (Select 1 from (
Select TT.key
from
Table TT
Group by TT.key
Having COUNT(1)>1) D where D.key=T.key)

Delete Table
from Table T
where exists (Select 1 from #TempTable TT where TT.key=T.key)

insert into Table
Select * from #TempTable

drop table #TempTable

commit

 

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

 

begin transaction

 

Select distinct T.key, min(T.DT) as First_DT

into #TempTable 

from

Table T

where exists (Select 1 from (

Select TT.key

from

Table TT

Group by TT.key

Having COUNT(1)>1) D where D.key = T.Key) 

Group by T.Key

 

Delete Table

from 

Table T

where exists (Select 1 from #TempTable TT where TT.Key = T.Key and TT.First_DT != T.DT)

 

drop table #TempTable

 

commit

Тема:

MS SQL

Обрезаем timestamp до месяца, недели, дня

От Dmitry 19. октября 2011

Часто возникает необходимость группировать данные по дате, например по месяцу или дню. Чаще всего дата в БД представлена в полном виде вплоть до миллисекунд.  В этом случае бывает очень удобно использовать функции приводящие дату к требуемому виду. Предлагаю вам готовые скрипты создания этих функций. More...

Тема:

MS SQL

Сравнение партнерских программ 8 крупнейших книжных интернет магазинов

От Dmitry 16. сентября 2011

Скоро здесь будет написан пост, который, наверное, придется разбить на части, и который будет содержать в себе детальный анализ 8 крупнейших интернет магазинов рунета, продающих книги: OZON.ru, Bolero.ru, Labirint.ru, My-Shop.ru, Boblion.ru, Books.ru, Colibri.ru и Read.ru.

More...

Ограничение ресурсов при выполнении запросов на MS SQL

От Dmitry 14. сентября 2011

Иногда некоторые сотрудники не сильно стараются оптимизировать свои запросы и в результате полностью загружают процессорные мощности сервера. Хуже, ког��а подобного рода запросы ложатся в основу автоматизированных на Reporting Services отчетов. Этим часто грешат начинающие аналитики. Во избежание подобного "убивания" сервера можно поместить такого рода запросы в группу с ограничением на использование процессора.

More...

Тема:

MS SQL

Кто пользуется Reporting Services

От Dmitry 6. сентября 2011

 Этот запрос может быть полезен, если мы хотим узнать статистику по запускам отчетов SSRS.

More...

Тема:

SSRS

SQL SERVER – Collate – Case Sensitive

От Dmitry 5. сентября 2011

Если в таблице содержатся данные с заглавными и прописными буквами, например "Название, название, нАзвание", то запрос с условием where column = 'название' вернет 1 или 3 строки в зависимости от Collation. Если Collation стоит, например, Cyrillic_General_CS_AI (Cyrillic-General, case-sensitive, accent-insensitive, kanatype-insensitive, width-insensitive), то запрос к регистру чувствителен, и запрос с таким условием вернет только 1 строку. В случае Cyrillic_General_CI_AI (Cyrillic-General, case-insensitive, accent-insensitive, kanatype-insensitive, width-insensitive) в датасете будет 3 строки.
Отдельно стоит упомянуть о том, что это влияет не только на результаты сравнения, но также и на написание самих запросов. Если таблица называется Table, то запрос Select * from table не будет работать и вернет ошибку о несуществующей таблице. Это бывает крайне неудобным, поэтому я при установке сервера всегда задаю case-insensitive.

 More...

Тема:

MS SQL

Автоматически забираем данные с sftp с помощью SSIS

От Dmitry 29. августа 2011

Для начала нам необходимо скачать программу, умеющую работать с sftp через консоль. Я остановил свой выбор на WinSCP, скачать её можно тут. Надеюсь, с её установкой проблем не возникнет. По завершении установки мы можем её вызвать с помощью блока "Execute Process Task", непосредственно из пакета SSIS. More...

Тема:

SSIS

Copyright © 2012 - binside.ru, Золотов Дмитрий

Написать автору

 

Автор

Руководитель аналитического отдела в компании SAPATO.RU 

Page List