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

Создаём временную таблицу:

CREATE #WorkingTable TABLE
(
ID int,
Value float
)

Создаём кластерный индекс по таблице:

CREATE CLUSTERED INDEX #table_index1 ON #WorkingTable(ID)

Забираем данные из табличной функции:

INSERT INTO #WorkingTable
(
ID,
Value
)
SELECT
f.ID,
f.Value
FROM dbo.fSelectData(@inID) AS f

Делаем итоговую выборку с джойном на нужный справочник:

SELECT
st.FullDescription,
wt.Value
FROM #WorkingTable AS wt
INNER JOIN SomeTable AS st ON st.ID = wt.ID

Правда, на мой наивный взгляд, заморачиваться с отдельной временной таблицей стоит, только если табличная функция выдаёт большой объём данных (десятки тысяч записей и больше).
seajey: Electronic Knight (Default)
Кода для ката:
<lj-cut text="Read more...">_selection_</lj-cut>
seajey: Electronic Knight (Default)
Для браузеров Mozilla есть замечательное расширение BBCodeXtra - добавляет в контекстное меню коды BBCode, HTML, xHTML

Русский перевод не самый хороший, но разобраться что к чему можно и с ним.

В BBCodeXtra помимо стандартных тэгов BBCode/HTML есть возможность задать пользовательские тэги.
На днях собрался и сделал два тэга, на основе LiveJournal Addons. Это замечательное расширение, к сожалению, с DreamWidth не работает. И так:

seajey: Electronic Knight (Default)
Чтобы правильно сменить имя хоста на сервере, нужно править два файла:
/etc/hosts
и
/etc/hostname
seajey: Electronic Knight (Default)
Сам чудо-девайс.
seajey: Electronic Knight (Default)
Сам чудо-девайс.
seajey: Electronic Knight (Default)
Один из коллег на работе недавно вспомнил, что как-то делал в MSSQL Studio такую штуку:
пишешь имя процедуры, возможно ещё определенную команду перед ней, жмёшь Enter или другой шорткат и, бац, студия студия вытаскивает текст процедуры в текущем Query. Очень удобно - не нужно лезть в Object Explorer, спускаться по дереву вниз и потом ещё искать нужную процедуру. Иной раз на весь процесс минута уходит, что раздражает. Собственно, меня такая возможность тоже заинтересовала, хотя и непонятно, сработает ли в Express-версии.

Начал гуглить и пока нашёл следующие хинты:

1. В Query Editor'е напечатать имя user-created процедуры или функции, выделить её и нажать ALT+F1

В итоге получится два Result Pane'а: в первом имя процедуры, владелец, тип и дата создания; во втором будут перечислены параметры и их свойства

2. Напечатать
sp_helptext @objname = 'ИмяПроцедурыИлиФункции'
выделить и нажать F5
В Result Pane будет выведен текст искомой процедуры или функции. Обе фишки по своему полезны, но это не то, что хотелось бы получить :(
Продолжаю поиск.
seajey: Electronic Knight (Default)
На работе я в основном имею дело с MSSQL Server 2005 Express, отличающейся от старшей версии отсутствием утилит импорта, SQL Agent'а, отвечающего за выполнение заданий по расписанию, ограничением по процессору и по максимальному количеству памяти, доступного  SQL-серверу. Ещё чутка обрезанная студия - например, на предмет поддержки сессии и автокомплита.

На серверах у клиентов стоят более функциональные версии, код, в основном, пишется локально, с последующим переносом на "боевой" сервер.
Перед тем как накатить изменения, очень желательно сделать бекап базы. Чем проще оный сделать - тем выше вероятность того, что бэкап будет действительно произведён, а из интерфейса студии (как в Express-варианте, так и в полной версии) это делать тоскливо (особенно, если резервную копию делаешь не первый десяток раз).
По этому поводу я сделал для себя скрипт и пару табличек - хранить статистику.
Собственно, скрипты.

Read more... )
Спасибо за внимание.

Profile

seajey: Electronic Knight (Default)
SeaJey

September 2013

S M T W T F S
123456 7
8 910 11121314
15161718192021
22232425262728
2930     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 25th, 2017 06:16 am
Powered by Dreamwidth Studios