Вы когда-нибудь задумывались над тем, что это не результат Ваших действий ?
Вы задумывались над тем, что Вы бы могли большего ?
Задавили себе вопрос: «Это всё, на что я способен ?».
Вас тысячи, миллионы, а с учетом китайцев — миллиарды.
Советую к прочтению книгу Алана Глинна — Область Тьмы.
Название странное для содержания книги (я бы назвал иначе) , но суть и содержание заставляют задуматься над вещами, которые на сегодняшний день не подвластны нашему разуму без допинга, пинка под зад и всякого подобного, придающего прямолинейного движения.
Но когда допинг становится соблазном, Вас остановить ?
Иногда приходится сверять код одних и тех-же процедур на разных инстансах. Ну, например, база для разработки и база для тестирования.
Ниже предлагаю вариант, как убедится в том, что процедуры одинаковы:
Сверять будем 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-соединений.
Допустим, что перед нами стоит задача удалить дубликаты из таблиц(ы).
Это можно сделать следующим образом.
Допустим у нас есть некая таблица (учитывая мою «симпатию к трактористам»):
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 и меняем его на путь к Вашей папке проектов.
09 Фев
Автор: xAndr в: Видео
Недавно в одном «сложнооборотистом» предложении мне встретилось слово match. И я решил заглянуть в Lingvo и посмотреть возможные переводы этого слова.
Следующего я не ожидал увидеть:
