Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Microsoft SQL Server

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

Открыть новую тему     Написать ответ в эту тему

Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MICROSOFT SQL SERVER
 
тема посвящена выяснению ответов на вопросы, касающихся установки, функционирования и использования Microsoft SQL Server; также обсуждаются вопросы, касающиеся использования T-SQL (диалект SQL-языка, используемого в этой версии сервера)
 
популярные ответы на популярные вопросы "где скачать?" и "чем сломать?" можно найти здесь

 
 
Официальная документация:
SQL Server 2005 Books Online (original/english, 135MB, september 2007);
SQL Server 2005 Books Online (перевод/русский, 148MB, январь 2009);
 
 
Официальные обновления:
[для версий, начиная с 9.0.3042] / [полный перечень обновлений / зеркало]
03/06/2007: KB933508 (9.0.3042 > 9.0.3050);
04/03/2007: KB934458 (9.0.3050 > 9.0.3054);
04/03/2007: KB934459 (9.0.3054 > 9.0.3159);
06/28/2007: KB936305 (9.0.3159 > 9.0.3175);
 
 
Альтернативные источники информации:
sql.ru - очень полезный ресурс с говорящим за себя названием; пожалуй, лучший (если не единственный) на просторах ru'нета; кроме форумов есть большая подборка статей, FAQ, и прочее.

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 11:49 18-07-2003 | Исправлено: niichavo, 16:13 02-04-2010
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergioLeonov
В таблице без формата хранится. Формат от программного окружения зависит. YYYYMMDD - универсальный ISO формат даты без учета времени.  

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 13:04 31-08-2017
SergioLeonov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexzzy

Цитата:
SergioLeonov
В таблице без формата хранится. Формат от программного окружения зависит. YYYYMMDD - универсальный ISO формат даты без учета времени.  

 
Ага! Значит я где-то совсем рядом копался Сейчас попробовал с Select - выбирает как нужно.
Сейчас еще с зависимостями поразбираюсь. вечером backup - и можно пробовать.
Большое спасибо за разъяснение!
 
т.е. вот это будет работать:
 
DELETE TOP (100000) FROM RegisteredEvent WHERE RegDate < '20170601'

Всего записей: 6 | Зарегистр. 01-11-2005 | Отправлено: 15:56 31-08-2017
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergioLeonov
Я бы добавил order by RegDate Asc сначала в SELECT,  
а затем и в DELETE если выборка устраивает, что бы удалять начиная с более старых

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 04:53 01-09-2017
SergioLeonov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp

Цитата:
SergioLeonov
Я бы добавил order by RegDate Asc сначала в SELECT,  
а затем и в DELETE если выборка устраивает, что бы удалять начиная с более старых

 
В смысле Select' ом посмотреть, а затем Delete'  ом удалить?
Или как-то одним скриптом? Если одним, то если не трудно, подскажите как.
Спасибо за наводки

Всего записей: 6 | Зарегистр. 01-11-2005 | Отправлено: 08:21 01-09-2017 | Исправлено: SergioLeonov, 08:22 01-09-2017
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergioLeonov
Именно двумя. Сначала посмотреть SELECT и убедиться что использованы правильные параметры.
К примеру, может надо не ASC, a DESC. Или дату другую использовать. И только если выборка устраивает, делаете DELETE с точно такими же параметрами.  

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 16:22 01-09-2017
SergioLeonov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dneprcomp
Спасибо, я уже сегодня развлекался с Select с вашими добавлениями к Alexzzy
И даже уже знаю, что мне нужно Asc  
Но база здоровенная, еле ползает, за 2 месяца 16 года - около миллиона строк из журнала событий приложения. Того кто так ее проектировал - убивать.  
Сейчас как раз Backup запускаю, интересно сколько времени на базу в 120 гигов уйдет.
А завтра уже - обрезание
 
Вот что значит незнание - сегодня сначала * в скрипте пропускал, потом:
Я говорю SQL:
SELECT top 100 * FROM RegisteredEvent where RegDate < '20161231' order by RegDate Asc - работает
 
Я говорю SQL:
SELECT top 100 * FROM RegisteredEvent where RegDate < '20160631' order by RegDate Asc
Он мне:
/* Error: "The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value." */
 
Говорит мне SQl - иди книгу читай или кино смотри "31 июня".... Нет такой даты
 
Еще раз благодарю Alexzzy и dneprcomp за советы
 
 
Добавлено:
Пардон за еще один глупый вопрос - при бэкапе база сразу пишется по указанному пути?
Ну, т.е. я указал для файла бэкапа путь на внешний винт - туда и пойдет, без промежуточных временных файлов?

Всего записей: 6 | Зарегистр. 01-11-2005 | Отправлено: 18:20 01-09-2017 | Исправлено: SergioLeonov, 18:32 01-09-2017
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergioLeonov
Как вариант. Вместо бэкапа можно создать рядом на том же сервере дополнительную БД с таблицей RegisteredEvent и туда перекидывать лишние данные, указывая в запросах полный путь к базам данных. Типа
Код:
insert DatabaseName2.dbo.RegisteredEvent
select * from DatabaseName1.dbo.RegisteredEvent where ...
и затем удалять данные из DatabaseName1.
При желании можно и на другой сервер перекидывать, настроив LinkedServer и указывать LinkedServerName.DatabaseName.dbo.RegisteredEvent
 

Цитата:
Пардон за еще один глупый вопрос - при бэкапе база сразу пишется по указанному пути?  
Ну, т.е. я указал для файла бэкапа путь на внешний винт - туда и пойдет, без промежуточных временных файлов?

Должно писаться напрямую. Точно не могу сказать, на MS SQL углубленно не специализируюсь. Основное у меня Sybase(SAP) ASE, MS SQL родственник (вырос из sybase sql server). 120 гиг это далеко не большая БД.

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 23:01 01-09-2017 | Исправлено: Alexzzy, 13:47 02-09-2017
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SergioLeonov
только не стоит так вольно с датой обращаться - стринг - не дата - даже если ИНОГДА (при определенных настройках и работает)...
Правильно будет так:
Код:
CONVERT(datetime,'2016-12-01',102)

Ну и для удобства часто требуется приводить даты к границам месяца:
Код:
Начало текущего месяца
CONVERT(datetime,CONVERT(CHAR(8),my_date,102)+'01',102)
Конец текущего месяца
DATEADD(day,-1,DATEADD(month,1,CONVERT(datetime,CONVERT(CHAR(8),my_date,102)+'01',102)))
Конец предыдущего месяца
DATEADD(day,-1,CONVERT(datetime,CONVERT(CHAR(8),my_date,102)+'01',102))

 

Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 10:23 02-09-2017
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yurkesha
Строка в ISO стандарте YYYYMMDD всегда автоматически конвертируется в datetime и ни от каких настроек не зависит.

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 11:43 02-09-2017
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexzzy
это американский формат представления даты. Настройки языка для базы и SQL-инстанса целиком заведомо будут влиять на его интерпретацию.

Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 11:58 02-09-2017
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yurkesha
Да ничего не будет влиять. Попробуйте.

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 12:27 02-09-2017
yurkesha



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alexzzy
я уже пробовал и не раз...  
Национальные настройки бывают не только русский-английский да и национальные настройки ОС бывают разные
Так же как и версии SQL-сервера могут сильно варьироваться...
Если есть заведомо независимый способ преобразования то имеет смысл использовать его, а не неявное преобразование типов.

Всего записей: 2741 | Зарегистр. 15-12-2003 | Отправлено: 12:33 02-09-2017
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yurkesha
Интересно, в каком случае, для примера, YYYYMMDD не сконвертируется в datetime?
 

Цитата:
Если есть заведомо независимый способ преобразования то имеет смысл использовать его, а не неявное преобразование типов.

В общем случае, естейственно да.
 
И, кстати

Цитата:
это американский формат представления даты.  

ISO
 

Цитата:
Так же как и версии SQL-сервера могут сильно варьироваться...  

Вроде как, например, "русская" версия отличается от английской только тем, что её можно поставить только на "русскую" ОС.
 

Цитата:
только не стоит так вольно с датой обращаться - стринг - не дата

Хорошее примечание, но в конкретном случае это не обязательно.

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 12:41 02-09-2017 | Исправлено: Alexzzy, 18:23 02-09-2017
andyzubov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
может проще SET DATEFORMAT в сессии указать и работать дальше как хочется?

Всего записей: 493 | Зарегистр. 02-04-2015 | Отправлено: 20:17 06-09-2017
Futurism

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят подскажите, пожалуйста
select  
logs.uid,
logs.event_value
 
from publicview.treasurehunters_ok logs
left join public.app_ok_cbaiodclebabababa_agg_users users  on logs.uid=users.uid
where  first_event_time>='01.09.2017 0:00:00'
and first_event_time <= '11.09.2017 0:00:00'
and logs.event ='balance_OK'
 
нужно отсортировать каждый uid по времени по возрастанию и оставить только самые первые значения по logs.event_value
 
т.е
id  logs.event_value
1      10
1      5
1      3
 
нам нужно вернуть только
1 10 т.е. самые первые строчки оставить
для каждого юзверя. так можно сделать?

Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 16:36 21-09-2017
andyzubov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Futurism
 
Почему нет, почитай
 
https://msdn.microsoft.com/ru-ru/library/ms186734(v%3Dsql.120).aspx

Всего записей: 493 | Зарегистр. 02-04-2015 | Отправлено: 17:37 21-09-2017
Futurism

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andyzubov
Можешь проверить
я правильно написал?
 
select * from (
select  
logs.uid,
logs.event_value,
ROW_NUMBER() OVER (PARTITION BY logs.uid ORDER BY logs.event_value ASC) r  
 
from publicview.treasurehunters_ok logs
left join public.app_ok_cbaiodclebabababa_agg_users users  on  
logs.uid=users.uid
where  first_event_time>='01.09.2017 0:00:00'
and first_event_time <= '11.09.2017 0:00:00'
and logs.event ='balance_OK') tab
where r=1

Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 17:39 21-09-2017
legionpheonix



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте знатоки sql.  
Подскажите как изменить команду для бэкапа.  
 
sqlcmd -S MSSQL502.aa.com -U username -P password -q  "BACKUP DATABASE [C288356_my] TO DISK = N'c:\1.bak'"  
 
Мне необходимо, чтобы при запуске батника выдавался вопрос к какому серваку подключаться и какая база, остальные параметры без изменений.  
 
Может кто подсказать?

Всего записей: 266 | Зарегистр. 23-02-2012 | Отправлено: 14:36 30-05-2018
andyzubov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
командная строка для того и нужна чтобы работать автономно, без вмешательства пользователя. А так сделай обертку на чем угодно по вызову командной строки с нужными тебе параметрами

Всего записей: 493 | Зарегистр. 02-04-2015 | Отправлено: 15:32 30-05-2018
Futurism

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, плиз по такому вопросу
SELECT
,[CustomerName]
,[ItemRelation]
,[SaleCount]
,[DocumentNum]
,[DocumentYear]
,[IsPromo]
 
FROM mytable
 
Поля
,[CustomerName
,[ItemRelation]
,[DocumentNum]
,[DocumentYear]
 
представляют собой стратовые категории
к примеру "магазин рога и копыта" - "111"-"37"-"2018год"
[SaleCount] число продаж
в чем сложность.
Для каждой такой страты есть данные по акции [IsPromo] (0-нет акции, 1 есть акция)
пример данных обрезанный, просто для примера
 
[ItemRelation] [SaleCount] IsPromo ,[DocumentNum] [DocumentYear]
11202 8,85947691 0 137 2018
11202 9,450108704 0 137 2018
11202 12,40326767 1 137 2018
11202 25,98779894 1 137 2018
11202 63,19760196 1 137 2018
11203 8,85947691 0 138 2018
11203 9,450108704 1 138 2018
11203 12,40326767 1 138 2018
 
мы видим что для страты
[ItemRelation] ,[DocumentNum] [DocumentYear]
11202 137 2018
 
3 единицы и два нулю по ispromo
 
по страте
[ItemRelation] ,[DocumentNum] [DocumentYear]
11203 138 2018
тут
2 единицы и один ноль.
 
Как мне написать запрос, который возвращает те "страты" в которых единицы по ispromo встречаются от 2 до 4 раз включительно?  
 
если что вот сами данные
http://rgho.st/7q7lzpKY6

Всего записей: 1200 | Зарегистр. 04-02-2011 | Отправлено: 14:57 12-06-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Microsoft SQL Server


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru