Вы когда-нибудь задумывались над тем, что это не результат Ваших действий ?

Вы задумывались над тем, что Вы бы могли большего ?

Задавили себе вопрос: «Это всё, на что я способен ?».

Вас тысячи, миллионы, а с учетом китайцев — миллиарды.

Советую к прочтению книгу Алана Глинна — Область Тьмы.

Название странное для содержания книги (я бы назвал иначе) , но суть и содержание заставляют задуматься над вещами, которые на сегодняшний день не подвластны нашему разуму без допинга, пинка под зад и всякого подобного, придающего прямолинейного движения.

Но когда допинг становится соблазном, Вас остановить ?

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

Ниже предлагаю вариант, как убедится в том, что процедуры одинаковы:

Сверять будем hash ключи.

DECLARE @spname nvarchar(4000)
DECLARE @spdef nvarchar(4000)

SET @spname ='some_sp'
select @spdef =OBJECT_DEFINITION(OBJECT_ID(@spname))
select HASHBYTES('SHA1', @spdef)

Проделываем то-же самое на другом инстансе и сверяем ключики. Для удобства можно создать процедуры для полученя ключа, и проверки его с каким-либо другим ключом (я же повесил их на HOT KEY в SSMS для удобства).

С новой версией SQL Server 2012 мы встретим много новых возможностей. Про одну из них я расскажу Вам сегодня.

Это функции Lead и Lag.

Что это за функции ?

Это функции доступа к данным, которые граничат с той или иной строкой не используя self-соединений.

Читать далее »

Как Вам такая уборка улиц ?

Фото. Карпаты

Мои любимые Карпаты
Carpathians 2011

Допустим, что перед нами стоит задача удалить дубликаты из таблиц(ы).

Это можно сделать следующим образом.

Допустим у нас есть некая таблица (учитывая мою «симпатию к трактористам»):

CREATE TABLE tbl_List_of_Tractorist (T_ID INT IDENTITY, T_Name VARCHAR(50))

Наполняем таблицу. В том числе генерим дупликаты.

INSERT INTO tbl_List_of_Tractorist
VALUES('Vasya'), ('Petya'), ('Ivan'), ('Petya'), ('Ivan'), ('Vasya')
, ('Petya'), ('Ivan')

Как видим у нас 3 Ивана, 3 Петра и 2 Василия.

Из этого всего надо оставить каждого имени по-одному.
Делаем следующее:

;WITH CTE
	AS
	(
	    SELECT T_ID, T_Name, ROW_NUMBER() OVER(partition BY T_Name ORDER BY T_ID) AS RowNum
	    FROM tbl_List_of_Tractorist
	)
DELETE FROM CTE WHERE RowNum>1

Но стоит быть весьма осторожным с таблицами на которых навешано n-ое количество индексов или есть тригеры или же количество записей очень большое.
Иногда дешевле будет выполнить Bulk-Insert (SELECT ….. INTO …..) в другую таблицу, которая будет хранить уже отобранные данные, очистить первую и залить данные обратно.

Хочу поделится интересным моментом, с которым столкнулся вчера.

Речь пойдет о функции ISNULL в MS SQL.

Напомним ее описание:

функция ISNULL заменяет значение NULL указанным замещающим значением.

Синтаксис следующий:

ISNULL ( check_expression , replacement_value )

Особенностью данной функции есть то, что она вернет значение replacement_value того же типа, что и check_expression.

Читать далее »

Добрый день.

Вчера мне надо было поменять директорию моих проектов по умолчанию в SSMS (надоело каждый раз искать нужную мне папку). Собственно в самой студии я так и не смог найти этой настройки.

Сам же конфиг лежит в реестре винды.

В моем случае это Windows 7 и SSMS для 2008 сервера

Вот путь в ветках реестра:

HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\100\Tools\Shell

Ищем значение для DefaultFileOpenLocation и меняем его на путь к Вашей папке проектов.

Недавно в одном «сложнооборотистом» предложении мне встретилось слово match. И я решил заглянуть в Lingvo и посмотреть возможные переводы этого слова.
Следующего я не ожидал увидеть:
match in Lingvo

Страница 1 из 912345...Последняя »