Аннотация:
Как я заметил, на RSDN не было еще статьи посвященной именно T-SQL новшествам в SQL 2005. Думаю, эта статья будет интересна читателям журнала.
AC>Рисунок отсутствует.
AC>-- AC>With best regards, Alex Cherednichenko.
Огромное спасибо за информацию на русском
понравилось PIVOT а то сворачивание замучило
есть пара вопросов
1) можно ли использовать в критич приложениях версию EXPRESS в основном сильная нагрузка по запросам
не свалится ли он в out вместе со встроенной NET пока опыта мало вот и спрашиваю
2) как решается следующий вопрос (причем и для select и для update использую данный прием)
тоже пока в этом направлении мало опыта
есть таблица скажем с покупателями и заказами сделанными ими
пользователь выбрал 15 поставщиков и нужно найти по ним счета я применяю след подход
беру ID и делаю запрос вот так примерно
str1 = '10, 30, 32, 67, 87, 88'
SET str2 = 'SELECT from Orderds where ID_Customer IN (str1)'
EXECUTE @str2
а не хотелось бы динамический sql применять ???
Re[3]: Новые возможности T-SQL в MS SQL Server 2005
Здравствуйте, Аноним, Вы писали:
А>2) как решается следующий вопрос (причем и для select и для update использую данный прием) А>тоже пока в этом направлении мало опыта А>есть таблица скажем с покупателями и заказами сделанными ими А>пользователь выбрал 15 поставщиков и нужно найти по ним счета я применяю след подход А>беру ID и делаю запрос вот так примерно
А>str1 = '10, 30, 32, 67, 87, 88'
А>SET str2 = 'SELECT from Orderds where ID_Customer IN (str1)'
А>EXECUTE @str2
А>а не хотелось бы динамический sql применять ???
Здравствуйте, Гайдар Магдануров, Вы писали:
ГМ>Статья:
ГМ>Инструкция TABLESAMPLE
В чем отличие от select top?
Вселенная бесконечна как вширь, так и вглубь.
Re[4]: Новые возможности T-SQL в MS SQL Server 2005
От:
Аноним
Дата:
08.12.05 15:09
Оценка:
Здравствуйте, tpg, Вы писали:
tpg>Здравствуйте, Аноним, Вы писали:
А>>2) как решается следующий вопрос (причем и для select и для update использую данный прием) А>>тоже пока в этом направлении мало опыта А>>есть таблица скажем с покупателями и заказами сделанными ими А>>пользователь выбрал 15 поставщиков и нужно найти по ним счета я применяю след подход А>>беру ID и делаю запрос вот так примерно
А>>str1 = '10, 30, 32, 67, 87, 88'
А>>SET str2 = 'SELECT from Orderds where ID_Customer IN (str1)'
А>>EXECUTE @str2
А>>а не хотелось бы динамический sql применять ???
Здравствуйте, <Аноним>, Вы писали:
А>1) можно ли использовать в критич приложениях версию EXPRESS в основном сильная нагрузка по запросам А>не свалится ли он в out вместе со встроенной NET пока опыта мало вот и спрашиваю
Устанешь ты его в аут сваливать. Да, он ресурсоемкий, но устойчивость у него превосходная. Учти, что более тяжелые версии требуют и больше ресурсов для работы. Express специально проектировался с расчетом на использование как storage-движка, а не сервера приложений.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Новые возможности T-SQL в MS SQL Server 2005
Здравствуйте, Real 3L0, Вы писали:
R3>Здравствуйте, Гайдар Магдануров, Вы писали:
ГМ>>Статья:
ГМ>>Инструкция TABLESAMPLE
R3>В чем отличие от select top?
в том, что она возвращает не top.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Новые возможности T-SQL в MS SQL Server 2005
От:
Аноним
Дата:
09.12.05 08:07
Оценка:
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, <Аноним>, Вы писали:
А>>1) можно ли использовать в критич приложениях версию EXPRESS в основном сильная нагрузка по запросам А>>не свалится ли он в out вместе со встроенной NET пока опыта мало вот и спрашиваю S>Устанешь ты его в аут сваливать. Да, он ресурсоемкий, но устойчивость у него превосходная. Учти, что более тяжелые версии требуют и больше ресурсов для работы. Express специально проектировался с расчетом на использование как storage-движка, а не сервера приложений.
SQL Server Agent и 2 GB могли бы оставить елки палки это ведь не промышленный сервер
понятно что устану просто не хотелось бы скажем чтобы через месяц работы он упал сказав что не хватает памяти после 1.01gb нагрузки
1) а как отключить NET и вообще стоит ли
2) какого лучше библиотеки использовать ADO.NET или SQL NATIVE
хотя мне важется что все идет к NET + SQL NATIVE
Re[5]: Новые возможности T-SQL в MS SQL Server 2005
Здравствуйте, <Аноним>, Вы писали:
А>SQL Server Agent и 2 GB могли бы оставить елки палки это ведь не промышленный сервер
Не понял, xnj именно тебя беспокоит. Хочу напомнить, что использование знаков препинания — бесплатно, поэтому не имеет смысла на них экономить. А>понятно что устану просто не хотелось бы скажем чтобы через месяц работы он упал сказав что не хватает памяти после 1.01gb нагрузки
Гм. А почему ты думаешь, что Enterprize съест меньше памяти? А>1) а как отключить NET и вообще стоит ли
Никак. Не стоит. А>2) какого лучше библиотеки использовать ADO.NET или SQL NATIVE А>хотя мне важется что все идет к NET + SQL NATIVE
Да, это наиболее производительный способ. Стоит отметить, что Sql Native — это тоже ADO.NET.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Новые возможности T-SQL в MS SQL Server 2005
От:
Аноним
Дата:
09.12.05 11:51
Оценка:
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, <Аноним>, Вы писали:
А>>SQL Server Agent и 2 GB могли бы оставить елки палки это ведь не промышленный сервер S>Не понял, xnj именно тебя беспокоит. Хочу напомнить, что использование знаков препинания — бесплатно, поэтому не имеет смысла на них экономить. А>>понятно что устану просто не хотелось бы скажем чтобы через месяц работы он упал сказав что не хватает памяти после 1.01gb нагрузки S>Гм. А почему ты думаешь, что Enterprize съест меньше памяти? А>>1) а как отключить NET и вообще стоит ли S>Никак. Не стоит. А>>2) какого лучше библиотеки использовать ADO.NET или SQL NATIVE А>>хотя мне важется что все идет к NET + SQL NATIVE S>Да, это наиболее производительный способ. Стоит отметить, что Sql Native — это тоже ADO.NET.
Стоит отметить, что Sql Native — это тоже ADO.NET.
как это ??? вроде SQL NATIVE это другие DLL подточенные для всяких фишек SQL 2005
а так то вроде технология одна ADO.NET или как ???
Re[7]: Новые возможности T-SQL в MS SQL Server 2005
Извиняюсь, что не смог сразу ответить на ваши вопросы, поскольку до форума смог добраться лишь только что.
Отвечаю:
1) TABLESAMPLE и TOP отличаются тем, что TOP возвращает определенное число записей из выборки в соответствии с порядком сортировки. TABLESAMPLE дает некоторую выборку, определяемую квази случайным образом и содержащую число записей лишь _примерное_ равное заданному программистом.
2) SQL Express держит базу данных устойчиво и надежно. Отличий в надежности от SQL Standard или Enterprise нет. Просто у более старших редакций есть дополнительные возможности и сервисы (которые, кстати, тоже требовательны к ресурсам).
На счет устойчивости — использовал SQL Express в одном приложении (правда сейчас ребята, для которых это делалось собираются мигрировать на Standard, поскольку нужен полнотекстовый поиск) — сервер 2xXeon 3 GHz, 2 Gb RAM держит около 200 пользователей, база около 2 Gb. Проблем, насколько я знаю, нет.
3) Бояться использовать все возможности ADO.NET не стоит, поскольку технология хорошо оптимизирована и не внесет критических "тормозов" на современных машинах. Опять же, п.2
Во-первых, огорчает большое количество орфографических ошибок. На всех понажимал Ctrl+Enter, надеюсь автор исправит.
Теперь вопросы.
CREATE TABLE [dbo].[Brands](
[BrandID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](32) NOT NULL,
[ParentID] [int] NULL DEFAULT ((0))
)
Зачем разрешать в поле NULL и давать ему DEFAULT VALUE? Если у поля задано DEFAULT VALUE, то NULL туда никогда сам собой не вставится. Тем более, в Вашем, господин Магдануров, примере он в поле ParentID и не ожидается. Это следует из этого примера:
WITH C (BrandID, [Name], ParentID, NestingLevel) AS
(
SELECT B.BrandID, B.[Name], B.ParentID, 1 FROM Brands AS B WHERE ParentID = 0
UNION ALL
SELECT B.BrandID, B.[Name], B.ParentID, (NestingLevel + 1) FROM Brands AS B
INNER JOIN C ON C.BrandID = B.ParentID
)
Как я понимаю, это очередная опечатка.
Ещё вопрос. Вот цитата из Вашей статьи: ГМ>В предыдущих версиях SQL Server для использования переменной в качестве параметра оператора TOP приходилось прибегать к сложным конструкциям или динамическому созданию запроса.
А как же SET ROWCOUNT? В этой конструкции можно использовать переменную! И никакого динамического SQL!
Очень странно, что Вы, господин Магдануров, забыли о таком очевидном способе ограничить количество строк в выборке значением, заданным в переменной.
Re[2]: Новые возможности T-SQL в MS SQL Server 2005
Здравствуйте, BoresExpress, Вы писали:
BE>Во-первых, огорчает большое количество орфографических ошибок. На всех понажимал Ctrl+Enter, надеюсь автор исправит.
К сожалению должен признать, что опечатки есть. Но править их могут только редакторы, поскольку я, автор, таких прав не имею.
BE>Теперь вопросы. BE>
BE>Зачем разрешать в поле NULL и давать ему DEFAULT VALUE? Если у поля задано DEFAULT VALUE, то NULL туда никогда сам собой не вставится. Тем более, в Вашем, господин Магдануров, примере он в поле ParentID и не ожидается.
Да. Это опечатка.
BE>Ещё вопрос. Вот цитата из Вашей статьи: ГМ>>В предыдущих версиях SQL Server для использования переменной в качестве параметра оператора TOP приходилось прибегать к сложным конструкциям или динамическому созданию запроса. BE>А как же SET ROWCOUNT? В этой конструкции можно использовать переменную! И никакого динамического SQL! BE>Очень странно, что Вы, господин Магдануров, забыли о таком очевидном способе ограничить количество строк в выборке значением, заданным в переменной.
Речь идет _об операторе TOP_, а не о возможностях ограничения количества строк. Да SET ROWCOUNT позволяет выполнить ту же задачу, но здесь уже имеется некоторый недостаток — в случае большой процедуры, забыв восстановить значение количества строк, можно получить неприятные ошибки и нужно тщательно следить за такими "выкрутасами" других разработчиков проекта, поэтому в некоторых компаниях использование SET ROWCOUNT в хранимых процедурах даже было запрещено!
Гайдар
Re[3]: Новые возможности T-SQL в MS SQL Server 2005
От:
Аноним
Дата:
01.09.06 09:00
Оценка:
Здравствуйте, gaidar, Вы писали:
G>Здравствуйте, BoresExpress, Вы писали:
BE>>Во-первых, огорчает большое количество орфографических ошибок. На всех понажимал Ctrl+Enter, надеюсь автор исправит.
G>К сожалению должен признать, что опечатки есть. Но править их могут только редакторы, поскольку я, автор, таких прав не имею.
BE>>Теперь вопросы. BE>>
BE>>Зачем разрешать в поле NULL и давать ему DEFAULT VALUE? Если у поля задано DEFAULT VALUE, то NULL туда никогда сам собой не вставится. Тем более, в Вашем, господин Магдануров, примере он в поле ParentID и не ожидается.
G>Да. Это опечатка.
BE>>Ещё вопрос. Вот цитата из Вашей статьи: ГМ>>>В предыдущих версиях SQL Server для использования переменной в качестве параметра оператора TOP приходилось прибегать к сложным конструкциям или динамическому созданию запроса. BE>>А как же SET ROWCOUNT? В этой конструкции можно использовать переменную! И никакого динамического SQL! BE>>Очень странно, что Вы, господин Магдануров, забыли о таком очевидном способе ограничить количество строк в выборке значением, заданным в переменной.
G>Речь идет _об операторе TOP_, а не о возможностях ограничения количества строк. Да SET ROWCOUNT позволяет выполнить ту же задачу, но здесь уже имеется некоторый недостаток — в случае большой процедуры, забыв восстановить значение количества строк, можно получить неприятные ошибки и нужно тщательно следить за такими "выкрутасами" других разработчиков проекта, поэтому в некоторых компаниях использование SET ROWCOUNT в хранимых процедурах даже было запрещено!
G>Гайдар
Уважаемый Гайдар возвращаясь к теме EXPRESS
2) SQL Express держит базу данных устойчиво и надежно. Отличий в надежности от SQL Standard или Enterprise нет. Просто у более старших редакций есть дополнительные возможности и сервисы (которые, кстати, тоже требовательны к ресурсам).
На счет устойчивости — использовал SQL Express в одном приложении (правда сейчас ребята, для которых это делалось собираются мигрировать на Standard, поскольку нужен полнотекстовый поиск) — сервер 2xXeon 3 GHz, 2 Gb RAM держит около 200 пользователей, база около 2 Gb. Проблем, насколько я знаю, нет.
вот у меня в задаче которая написана на NET1 и БД MS 2000 происходило практически мгновенное соединение SQLCONNECTION
а вот в задаче которая написана на NET2 и БД MS 2005 Express происходит задержка на открытии SQLCONNECTION на 3-5 секунд причем и на локальном сервере ни как не пойму в чем причина могу прислать код если надо ....