Начинаю знакомить с YUKON, знакомство с вещами которые понравились
Переменные типа varchar(max). Теперь при работе со строками-переменными ограничения нет
Правда varchar(max) не может быть индексирован а в базе он зранится как TEXT.
Просто многие ограничения при работе с ним сняты
snapshot isolation level - даже лучше чем в Oracle.
То есть читатели не блокируются
Recursive queries, например, можно расрыть все дерево папок одним оператором
(но для Docs у меня пока не получилось)
Использование namespaces
create schema PIKA create schema CHOU GO create procedure PIKA.BBB as select 111 create procedure CHOU.BBB as select 222 create procedure BBB as select 333 GO exec CHOU.BBB exec PIKA.BBB exec BBB
Блок TRY..CATCH
create table uni (n int primary key) go create procedure InsUni @k int as begin try insert into uni select @k print 'Inserted !!!' end try begin catch print 'Failed !!!' end catch go exec InsUni 7 --Inserted !!! exec InsUni 7 --Failed !!!
Snapshot есть база замороженная во времени
Идеальное средство для бух отчетов
Создаются почти мгновенно
CREATE DATABASE WO1 ON ( NAME = 'MyDb_Data', FILENAME = 'C:DATAWO1.SS') AS SNAPSHOT OF MyDB GO select * from WO1..Docs GO
DDL triggers, можно отслеживать например создания таблиц (для metadata ?)
CREATE TRIGGER safety ON DATABASE FOR CREATE_TABLE AS PRINT 'CREATE TABLE Issued.' PRINT CONVERT (nvarchar (1000), EVENTDATA() ) GO
PIVOT таблицы
Хотя на самом деле это просто макрос для многочисленных case
select SPACESTRING,[10],[20],[30],[40],[50] from TABLE_CDC as x PIVOT(count(x.IDCDC) for x.IDSTATUS in ([10],[20],[30],[40],[50])) as X
Хранение XML в 'родном' формате
Вот пример с реальным XML и реальной таблицей
SELECT XMLSIGNATURE,SIGNEDDOCUMENT into SIG_1 FROM SIGNATURE SELECT convert(XML,XMLSIGNATURE) as XMLSIGNATURE,convert(XML,SIGNEDDOCUMENT) as SIGNEDDOCUMENT into SIG_2 FROM SIGNATURE
Сравнение размеров:
SIG_1 = 16.7Mb
SIG_2 = 6.547 Mb
Само хранение нереляционных данных не революционно
Революция в том что можно в них быстро искать
Вот простой способ
-- Увы так не получится. Надо использовать функцию alter table SIGNATURE add LegalName as convert(XML,XMLSIGNATURE).query('data(//LegalName)') GO -- Создаем функцию create function LegalName (@t TEXT) returns varchar(128) -- не varchar(max) with schemabinding -- !!! as begin return convert(varchar(max),convert(XML,@t).query('data(//LegalName)')) end GO -- создаем колонку alter table SIGNATURE add LegalName as dbo.LegalName(XMLSIGNATURE) GO -- и индекс create index IX_LegalName on SIGNATURE (LegalName) -- проверка что работает select * from SIGNATURE where LegalName='Test Benoit Signature 2' GO
Но есть и способ куда гибче
create table SIG_3 (n int identity primary key, doc xml) -- в таблице дожен быть PK -- заполняю таблицу insert into SIG_3 (doc) select SIGNEDDOCUMENT from SIG_2 where SIGNEDDOCUMENT is not null
Теперь провожу эксперименты с поиском с использованием Xpath/Xquery,
время всегда это время второго выполнения
Без индекса
select count(*) from SIG_3 where doc.exist('//cdcInfo[title="test steph"]')=1 à 2 lignes CPU time = 1109 ms, elapsed time = 1105 ms.
Теперь создаем индекс XML
create primary XML index XXX on SIG_3 (doc) select count(*) from SIG_3 where doc.exist('//cdcInfo[title="test steph"]')=1 à 2 lignes CPU time = 265 ms, elapsed time = 287 ms.
Лучше. А еще лучше с вспомошательным индексом XML
create XML index ZZZ on SIG_3 (doc) using xml index XXX for path select count(*) from SIG_3 where doc.exist('//cdcInfo[title="test steph"]')=1 à 2 lignes CPU time = 47 ms, elapsed time = 29 ms.
Замечания: collation учитывается нормально
select count(*) from SIG_3 where doc.exist('//cdcInfo[title="TEST STEPH"]')=1 à 2 строки
Однако, названия полей всегда case-sensitive
select count(*) from SIG_3 where doc.exist('//cdcInfo[TITLE="TEST STEPH"]')=1 à 0 строк
Надо сказать что параметр exists, valuе НЕ является строкой
Это как бы строка
Она парзится сразу и не может быть переменной
Но переменные туда все таки можно передавать:
declare @val varchar(max) set @val='test steph' select count(*) from SIG_3 where doc.exist('//cdcInfo[title=sql:variable("@val")]')=1 à 2 строки
А вот как элегантно можно получить Nную страницу выборки, без временных таблиц.
Не напоминает rownum в Oracle ?
select * from ( select row_number() over (order by Name desc) RNUM, * from Docs ) X where X.RNUM>=1000 and X.RNUM<1010 order by Name desc
Есть и более сложные случаи с over (partition by ... order by ...)
Короче, Юкон - могильщик капит
Пишет st,
Короче, Юкон - могильщик капитализ..., то есть Оракла :)
А есть ссылка на аглицкую статью ?
Блин, какая анлийская статья ?
Пишет DTsuranoff,
Блин, какая анлийская статья ? Я сам писал
ВОт и примеры даже местами из Nexus
Получилось recursive query
Вот кверь которая выдает документы с уровнем иерархии и даже с путем ПапкаПодпапка итд
Это хорошо. Еще бы кинул дис
Пишет ipanshin,
Это хорошо.
Еще бы кинул дистрибутивчик yukon
Мда. Если все так умно, то почему так поздно? :)
Блин, какая анлийс
Пишет st,
Статья или материалы с описанием юконовских новшеств, по которым ты написал свою статью с примерами из нехуса.
Ведь не телепатическим же способом ты узнал о нововведениях :)
Books Online !Игорь, он боль
Пишет DTsuranoff,
Books Online !
Игорь, он большой
Почти целый диск
Игорь, он большой
Пишет ipanshin,
В смысле для меня? :) Погоди ты о дистрибутиве или BookOnline?
Вопрос. Кто даст дистрибутив Yukon? ну и пр. service pack, resource kit, bookonline, etc...?
Дистрибутив занимает целый дис
Пишет DTsuranoff,
Дистрибутив занимает целый диск
Как его качать ?
Но учти что это Beta 2
А какова альтернатива? Разбить
Пишет ipanshin,
А какова альтернатива? Разбить и зазиповать? Давай попробуем по частям.
Альтернатива - наверняка в Пит
Пишет DTsuranoff,
Альтернатива - наверняка в Питере уже бродит Beta 2...
Может и бродит. Предлагаешь мн
Пишет ipanshin,
Может и бродит. Предлагаешь мне побродить тоже? :)
В Питере поздняя осень...
Кто-то листвою шуршит...
Кому-то понравилась просинь...
Кто...(?) за бутылкой бежит...
Игорь, поставь "осла" и скачай
Пишет st,
Игорь, поставь "осла" и скачай, за несколько дней доползет.
Вот, например, сходу нашел ссылки
Microsoft SQL Server Yukon(SQL 2005).rar
Microsoft Sql 2004 Server Beta1 Yukon J@V@Power 2k4 Virtualdrive Image.iso
Клиент для "осла" здесь
http://www.emule-project.com/
Beta 1 плоховата, лучше Beta 2
Пишет DTsuranoff,
Beta 1 плоховата, лучше Beta 2
Осел в России не рулит... Там нет трасс для интернета, а только бездорожье :)
А вот SB наверняка бы мог досать через artp :)
Ессно, если у кого есть подпис
Пишет st,
Ессно, если у кого есть подписка на MSDN, то к тому диск с юконом уже приехал. В Нишишанце подписка имеется.
Re: YUKON в примерах
Пишет SergeyBykov,
И где же это в Oracle читатели блокируются? И не надо ни какого особого isolation level устанавливать все работает при обычном read committed.
Идельное средство для создания срезов, например, при закрытии периода. Думаю, что работает быстро за счет того, что просто копирует файлы DB в новое место.
Snapshot имеет статус RO или в него допустимы insert, update, delete?
Можно RO переделать на RW?
1. Когда я писал что лучше то
Пишет DTsuranoff,
1. Когда я писал что лучше то имелось ввиду что реализовано лучше а нет то что в Oracle этого нет
2. Read committed в Oracle никогда не блокирует читателей. А вот в SQL 2000 блокировал
По поводу SNAPSHOT
Файлы создаются того же размера но информация не копируется
То есть они остаются почти пустыми
Дальше они отражают только дельту
В принципе базу как то можно потом 'оживить'
2 CTНу и нафк было давать сс
Пишет DTsuranoff,
2 CT
Ну и нафк было давать ссылки на осел ? Я таки не удержался и поставил его. Благо noos мне на халяву поднял канал с 128K до 512K. Теперь смотрб на кучу downloads... блин,,,
ДЦ спасибо за просвещение. Жду
Пишет ipanshin,
ДЦ спасибо за просвещение. Жду продолжения.
СБ нет ли у тебя юкон?
Я пока на sql7 :)
у кого есть подпис
Пишет ipanshin,
Они еще не получали осеннее обновление. А до этого не было. Мне доложено и вроде верно.
Вот, например, схо
Пишет ipanshin,
Попробуй сам сходить на эти ссылки.
Оказывается люди не только мог
Пишет ipanshin,
Оказывается люди не только могут спать группой, есть группой, но и тянуть файлы тоже группой :)
emule is for donkey only. thanks.
По этому поводу я часто вспоминаю книгу пиноккио или буратино.
Я на одном дыхании писал стихи.
На вздохе, на полвздохе сбился...
Дыхание прервалось... НАВСЕГДА.
Попробуй сам сходи
Пишет st,
Да легко. Источников много, качаться начало быстро.
Убрал за ненадобностью: у меня и так трафик по 1,5-2 гига в день.
Продолжаю знакомить с YUKON
Пишет DTsuranoff,
Продолжаю знакомить с YUKON
Создание WEB-сервиса. Он будет получать запрос с UDN, и возвращать имя документа.
1. Создаем два типа сообщения для посылки и приема сообщения
Соощзения лучше конечно делать типа XML и писать VALIDATION = WELL_FORMED_XML
Можно валидировать схемой.
2. Создаем контракт. Описываем что посылается посылка, а приходит ответ:
3. Я также создаю две очереди, для посылок и ответов:
4. Теперь описываю обслуживающий сервис:
5. Для запросов тоже нужен сервис. Это просто заглушка, контракта у него нет
Но создать сервис нужно, это формальность
6. Теперь пишу процедуру для обработки сообщений в бесконечном цикле
Вообще говоря очередть вынлядит в SQL как просто таблица с некоторой магией
7. И процедуру для запросов:
8. Запускам процедуру обслудивания сервиса
9. А в другом окне - проверяем:
Интересно что так можно написать число WEB-service клиента...
Может выложить это для публики
Пишет DTsuranoff,
Может выложить это для публики для привлечения ?
так можно написать
Пишет ipanshin,
Не кажется ли тебе, что тогда уж лучше поставить application server? Сыровато пока.
Ты лучше расскажи как будут писаться классы объектов. Или уже библиотеки написаны? Только пользуйся? :)
Это к СТ по поводу завлечения. :) Я в основном отпугиваю.
Интересно что так
Пишет SergeyBykov,
А есть какие-нибудь механизмы по сохранению контекста работы клиента?
Если нет, то не получиться :-(.
Со spid да, проблем
Пишет DTsuranoff,
Со spid да, проблемы
На самом деле конечно сервися
Пишет DTsuranoff,
На самом деле конечно сервися для других целей
Думаю понятие импорта и экспорта данных должно отмереть
Вместо этого одна система, например бух, сообщает другой: прими в рассмотрение такую ту накладную
Вместо этого одна
Пишет SergeyBykov,
Романтик он во всем романтик :-)
Импорт/экспорт не умрет потому что всегда найдеться пара систем, который понимают непересекающиеся множество форматов. И между ними придеться поставить транслятор.
1С еще 2 года назад начала проект по созданию языка для обмена данными (B2B) на основе XML. Пока особых успехов нет.
Я кажется нашел, где взять yuk
Пишет ipanshin,
Я кажется нашел, где взять yukon. Хочу проверить работоспособность под yukon.
ДЦ их надо использовать как ретрансляторы между двумя клиентами. Как? Я надеюсь, что очередность обслуживания FIFO они обеспечивают?
И FIFO и гарантию доставк
Пишет DTsuranoff,
И FIFO и гарантию доставки
гарантию доставки<
Пишет ipanshin,
странно, а нас воспитывали, что гарантию дает только ГОСТРАХ :)
Т.е. сервис м.б. некоей хреновиной (недавно крутил на мясорубке много хрена (и ни хрена мне) :) ) способной синхронизировать действия двух клиентов. Например, реализация 'делай как я' или ??? В общем нечто вроде работы двух рук над одним объектом. Как?
На самом деле очереди к сервис
Пишет DTsuranoff,
На самом деле очереди к сервисам SQL уже существуют давно (MSMQ по моему)
Есть еще MS Messaging. В этом
Пишет ipanshin,
Есть еще MS Messaging. В этом и был вопрос. Это отдельная от MS Windows шняга или это сделано средствами MS Messaging? Или еще чем?
А гарантия дается в виде страховки или денежной компенсации? :)
первая установка yukon на w200
Пишет ipanshin,
первая установка yukon на w2000 advanced server со стоящими ms sql7 and ms sql2000 + vs 6.0 привели к полному краху. Yukon по хамски сказал, что ни с кем работать не будет, предыдущие предки ему не известны, родство не помнит :) , uninstall делать не захотел. В общем, похоже, что надо делать полную переустановку системы. :( Что скажет эксперт по yukon?
Извини, я не знал что ты стави
Пишет DTsuranoff,
Извини, я не знал что ты ставишь... Конечно он ни с чем не совместим
Я его ставил в виртуальном компьютере VWware.... Требуются также все последние sp...
Я знал на что шел. Свежие sp у
Пишет ipanshin,
Я знал на что шел. Свежие sp у меня есть.
А вот это вызывает вопрос почему? Или он вырос на пустом месте? Внебрачный отпрыск? :) sql7 & sql2000 в этом плане полная противоположность.
Я его ставил в в
Пишет st,
Я пользую Microsoft VirtualPC, который входит в поставку MSDN. Очень удобная штука: работаешь на компе ХР про, а параллельно в окне другой комп, например, с сервером 2003, который доступен по сети. Я так отлаживал приложение с медиасервисами.
Backup такой машины очень прост: копируешь единственный файл, который у неё служит диском.
Дима я установил yukon под ser
Пишет ipanshin,
Дима я установил yukon под server 2003. Но где sql manager and query analyser? Я не пойму, работают только процессы. Как впервые подступиться к этому диву?
SQL server management Studi
Пишет DTsuranoff,
SQL server management Studio
да ты немногословен. А после s
Пишет ipanshin,
да ты немногословен. А после studio ничего не надо, там типа mui or service pack or something else...?
У тебя нет такой штуки в Start
Пишет DTsuranoff,
У тебя нет такой штуки в Start->SQL server 2005 ?
Значит ты чтото недоставил когда ставил SQL server
Снеси его и поставь по новой, внимательно следя что ставишь ВСЕ
Кроме того ты можешь подконнек
Пишет DTsuranoff,
Кроме того ты можешь подконнектится к Yukon с помощью Query Analyzer (с другого компа), а вот старый EM с Yukon работать не будет
Я это делаю дома. Я могу конеч
Пишет ipanshin,
Я это делаю дома. Я могу конечно принести еще один комп, но боюсь меня выгонят из дома :) Нет ли у тебя russian language kit for acrobat reader v.4.0?
Другой комп может быть и вирту
Пишет DTsuranoff,
Другой комп может быть и виртуальным :)
А ни русских китов, ни дельфинов у меня нет
Другой комп может
Пишет ipanshin,
программист тоже :)
народ не может это найти. Это в msdn? Или название другое?
м-да,обеднели :)
Грошик
Надо править - правило устало,
Нет задора, былого огня,
Нет несомого всеми металла -
Денег нет у меня...
Кузнецов уголовного счастья,
Металлистов валюты - не трож...
Мне на обломках самовластья
(снова рухнула империя, хе-хе)
Нашелся только медный грош.
Старательно я строю жизнь
На этот медный грошик,
Как птице нужны неба синь
Да горстка хлебных крошек.
Игорь, какой к черту MSDN ?Q
Пишет DTsuranoff,
Игорь, какой к черту MSDN ?
QA ты в Start->SQL server ищещь или в MSDN ???
Я тебе говорю что после того как ты поставил Yukon у тебя должно появиться Start->Programs->SQL server 2005 -> и там список программ в том числе и эта хрень
Если ее нет, значит при установке YUKON ты чтото не поставил
Ну ты так не сердись :) Я пон
Пишет ipanshin,
Ну ты так не сердись :) Я понял.
Programs->SQL server 2005 -> это есть
а вот этой хрени нет(???). У MS все так, то нос отвалится, то уши :) .
Пойду искать то, что я не поставил. :)
Димасравни компоненты setup
Пишет ipanshin,
Дима
сравни компоненты setup
-sql database services
-analysis services
-reporting services
-notification services
-data transformation services
-workstation component,books online and development tool
in advancedmanagement tool
-sql server computer manager
-sql server workbench
-sql profiler
-replication manager
and that's all
никакого studio у меня в меню Start->Programs->SQL server 2005 -> не наблюдается. У меня есть меню Start->Programs->SQL server ->
Видимо у меня setup совсем другой ???
Start -> Programs -> Microsoft
Пишет DTsuranoff,
Start -> Programs -> Microsoft SQL 2005
Там
Analysys Services
Notification Services
Tutorials
Business Intelligence Dev Studio
DTS tuning adviser
DTS import and Export Wizard
Profiler
Report Manager
SQL Computer manager
SQL server Bookls online
SQL server Management Studio