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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
EugeneBoss3



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
wasilissk
Спасибо за ссылку, но на второй вопрос я там ответа не нашёл.
Обязательно ли для этого отключать пользователей от сервера?

Всего записей: 247 | Зарегистр. 15-09-2009 | Отправлено: 02:54 06-11-2011
wasilissk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneBoss3
Ответ на второй вопрос с той самой ссылки

Цитата:
 
Устранение неполадок
Операция сжатия заблокирована
 
Операции сжатия могут быть блокированы транзакцией, запущенной с уровнем изоляции, основанном на управлении версиями строк. Например, если в процессе продолжительной операции удаления, запущенной с уровнем изоляции, основанном на управлении версиями строк, запущена операция DBCC SHRINK DATABASE, операция сжатия будет ждать завершения работы операции удаления. В этом случае операции DBCC SHRINKFILE и DBCC SHRINKDATABASE выводят информационное сообщение (5202 для SHRINKDATABASE и 5203 для SHRINKFILE) в журнал ошибок SQL Server каждые 5 минут в течение первого часа, а затем по одному сообщению каждый час.
 
....
 
Это означает, что операция сжатия блокируется транзакциями моментального снимка, которые имеют временные метки старше, чем метка 109, представляющая последнюю транзакцию, завершающую операцию сжатия. Это также показывает, что столбцы transaction_sequence_num или first_snapshot_sequence_num в динамическом административном представлении sys.dm_tran_active_snapshot_database_transactions содержат число 15. Если столбцы transaction_sequence_num или first_snapshot_sequence_num в представлении содержат число, меньшее, чем последняя транзакция, выполненная операцией сжатия (109), то операция сжатия будет ждать завершения этих транзакций.
 
Разрешить эту проблему можно, выполнив следующие действия:
- Прервите выполнение транзакции, блокирующей операцию сжатия.
- Прервите операцию сжатия. Если операция сжатия прервана, любая завершенная работа сохранена.
- Пока операция сжатия ожидает завершения блокирующих транзакций, ничего делать не нужно.
 

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 10:54 06-11-2011
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ, подсобите с запросом
Table1 - мастер таблица
FIO
...
Table1_ID
 
Table2 детал таблица
Table1_ID,
Table2_ID,
Kolvo
........
Table2_ID
 
Table3 справочник наименований
Tovar_Name
.....
Table3_ID
 
Table4
Tovar_Type_Name
Tovar_Type может быть от 1 до 6
Table4_ID
 
Так вот надо составить запрос и разместить данные по горизонтали в зависимости от Tovar_Type
типа такой таблички
     |  Tovar_Type=1   |  Tovar_Type=2   |  ....  |  Tovar_Type=6   |
FIO|TovarName|Kolvo|TovarName|Kolvo|  ....   |TovarName|Kolvo|

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 13:58 24-11-2011
wasilissk

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

Код:
 
select  
  FIO FIO1,  TovarName TovarName1, Kolvo Kolvo1,
  '' FIO2, '' TovarName2, '' Kolvo2,
  ....
where Tovar_Type=1
UNION ALL
select  
  '' FIO1, '' TovarName1, '' Kolvo1,
  FIO FIO2,  TovarName TovarName2, Kolvo Kolvo2,
  ....
where Tovar_Type=2
  .......
 

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 14:07 24-11-2011
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
wasilissk
подкоректируй мой запрос , а то что-то  у меня не то выходит
select  
    fio FIO1,
    type_name type_name1,
    oboryd_name oboryd_name1,
    sum(kolvo) kolvo1
from  abo
 
left join abo_oboryd on abo.abo_id=abo_oboryd.abo_id
left join spr_oboryd on abo_oboryd.spr_oboryd_id=spr_oboryd.spr_oboryd_id
left join spr_oboryd_type on spr_oboryd.spr_oboryd_type_id=spr_oboryd_type.spr_oboryd_type_id
where spr_oboryd_type.spr_oboryd_type_id=1
group by fio1,type_name1,oboryd_name1
 
UNION ALL
select  
    "FIO1","type_name1","oboryd_name1",kolvo1, - ругается на ету строку
Column unknown. FIO1.

 
 
    fio FIO2,
    type_name type_name2,
    oboryd_name oboryd_name2,
    sum(kolvo) kolvo2
from  abo
 
left join abo_oboryd on abo.abo_id=abo_oboryd.abo_id
left join spr_oboryd on abo_oboryd.spr_oboryd_id=spr_oboryd.spr_oboryd_id
left join spr_oboryd_type on spr_oboryd.spr_oboryd_type_id=spr_oboryd_type.spr_oboryd_type_id
where spr_oboryd_type.spr_oboryd_type_id=4
group by fio2,type_name2,oboryd_name2
 
такой запрос присобачит справа от FIO1,type_name1,oboryd_name1,kolvo1 -  FIO2,type_name2,oboryd_name2,kolvo2 ????????

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 16:13 24-11-2011
wasilissk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
Ты немного не понял там не "FIO1", а '' FIO1, т.е. пустая строка с алиасом FIO1.
Т.о. получим  
 
'Иванов',  'тип1', '', '', ....
'', '', Петров, 'тип2', '', ''''
Хотя после твоих поправок я понял, что нужно в одной строке получить что-то вроде
'Иванов',  'тип1', 'Петров', 'тип2'
Если так, то нужно просто развернуть таблицу, это можно сделать примерно таким запросом

Код:
 
select t1.name name1, t2.name name2, t3.name name3, t4.name name4
from table1 t1
LEFT JOIN  table1 t2 ON t2.type = 2
LEFT JOIN  table1 t3 ON t3.type = 3
LEFT JOIN  table1 t4 ON t4.type = 4
where t1.type = 1
 

Но это четыре фулскана, одной и той же таблицы. Если это возможно, то лучше развернуть прямо в отчете, или для чего это делается...

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 17:40 24-11-2011
MagistrAnatol



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

Цитата:
Но это четыре фулскана, одной и той же таблицы

не 4 а 6 , просто юзверям хочется видеть отчет как он у них реализован в екселе  
в отчете пока проблематично, пока не выходит создать крос отчет в фастрепорте
если брать только одно поле мастер таблицы, то все норм, ну а мне надо выводить дофига полей и данные не верные.
в идеале
Цитата:
нужно просто развернуть таблицу

если можно реализуй на запросе  
    fio FIO1,  
     type_name type_name1,  
     oboryd_name oboryd_name1,  
     sum(kolvo) kolvo1  
 from  abo  
   
 left join abo_oboryd on abo.abo_id=abo_oboryd.abo_id  
 left join spr_oboryd on abo_oboryd.spr_oboryd_id=spr_oboryd.spr_oboryd_id  
 left join spr_oboryd_type on spr_oboryd.spr_oboryd_type_id=spr_oboryd_type.spr_oboryd_type_id  
where spr_oboryd_type.spr_oboryd_type_id=1  
 group by fio1,type_name1,oboryd_name1
 мне надо получить 6 разворотов  
     type_name type_name1,  
     oboryd_name oboryd_name1,  
     sum(kolvo) kolvo1  
в зависимости от  spr_oboryd_type.spr_oboryd_type_id=1 - 2,3,,,6

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 18:30 24-11-2011
wasilissk

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

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 18:39 24-11-2011
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
wasilissk
держи http://rghost.ru/31916651
правда ето для файребирда, но логика от сервера не поменяется
 
 
Добавлено:
wasilissk
вариант с юнион не совсем подходит,у меня с мастер таблицы кроме фио надо выводить ещо с десяток
полей и построить отчет с 10-ю одинаковыми полями, но большая часть из которых будет пустая очень тяжело если вообще реально, хотя если потрах... по настоящему моно конечно в отчете сделать FIO1+FIO2+.....  
 
всем принявшим участие огромный сенкс
вот запрос с sql.ru, мож кому пригодиться
 
select t1.fio,
       max(case when p.produktid = 1 then p.produkt end) as Pr1,
       sum(case when p.produktid = 1 and t3.isvkl = 0 then t3.kvo else 0 end) Pr1_vkl,
       sum(case when p.produktid = 1 and t3.isvkl = 1 then t3.kvo else 0 end) Pr1_vikl,
 
       max(case when p.produktid = 2 then p.produkt end) as Pr2,
       sum(case when p.produktid = 2 and t3.isvkl = 0 then t3.kvo else 0 end) Pr2_vkl,
       sum(case when p.produktid = 2 and t3.isvkl = 1 then t3.kvo else 0 end) Pr2_vikl,
 
       max(case when p.produktid = 3 then p.produkt end) as Pr3,
       sum(case when p.produktid = 3 and t3.isvkl = 0 then t3.kvo else 0 end) Pr3_vkl,
       sum(case when p.produktid = 3 and t3.isvkl = 1 then t3.kvo else 0 end) Pr3_vikl
  from produkt p
       join table1 t1 on 1 = 1
       left join table3 t3 on t3.produktid = p.produktid and t3.table1id = t1.table1id
  group by 1

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 09:55 25-11-2011
wasilissk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
что-то типа такого
 
select TYPE_NAME1, FIO1, OBORYD_NAME1, KOLVO1,
       TYPE_NAME2, FIO2, OBORYD_NAME2, KOLVO2,
   ...
 
from ABO a0
 
left join (
  select ao1.ABO_ID ABO_ID1, st1.TYPE_NAME TYPE_NAME1, a1.FIO FIO1, so1.OBORYD_NAME OBORYD_NAME1, SUM(ao.KOLVO) KOLVO1  
  from ABO_OBORYD ao1
  left join ABO a1 on a1.ABO_ID = ao1.ABO_ID
  left join SPR_OBORYD so1 on so1.SPR_OBORYD_ID = ao1.SPR_OBORYD_ID
  left join SPR_OBORYD_TYPE st1 on st1.SPR_OBORYD_TYPE_ID = so1.SPR_OBORYD_TYPE_ID
  where st1.SPR_OBORYD_TYPE_ID = 1
  group by ao1.ABO_ID
) t1 on ABO_ID1 = a0.ABO_ID
 
left join (
  select ao2.ABO_ID ABO_ID2, st2.TYPE_NAME TYPE_NAME2, a2.FIO FIO2, so2.OBORYD_NAME OBORYD_NAME2, SUM(ao.KOLVO) KOLVO2  
  from ABO_OBORYD ao2
  left join ABO a2 on a2.ABO_ID = ao2.ABO_ID
  left join SPR_OBORYD so2 on so2.SPR_OBORYD_ID = ao2.SPR_OBORYD_ID
  left join SPR_OBORYD_TYPE st2 on st2.SPR_OBORYD_TYPE_ID = so2.SPR_OBORYD_TYPE_ID
  where st2.SPR_OBORYD_TYPE_ID = 2
  group by ao2.ABO_ID
) t2 on ABO_ID2 = a0.ABO_ID
 
  ...
 
group by a0.ABO_ID

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 12:08 25-11-2011
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ, можно как-то в селекте задать какие колонки выводить по условию ???

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 12:00 29-11-2011
bigsloth



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
MagistrAnatol
Не понимая вашей задачи сложно сказать, но возможно, вам нужна конструкция вида CASE WHEN ... THEN ... ELSE ... END

Всего записей: 239 | Зарегистр. 18-09-2009 | Отправлено: 12:05 29-11-2011
EugeneBoss3



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Знатоки, подскажите в чём может быть причина ошибки MS SQL2005:
"Невозможно подключиться к БД. Проверьте настройки соединения"
имя сервера, логин и пароль - правильные. Сеть настроена и работает без проблем.

Всего записей: 247 | Зарегистр. 15-09-2009 | Отправлено: 04:44 09-12-2011
bigsloth



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EugeneBoss3
Какое приложение подключается? Судя по тексту ошибки - эту ошибку возвращает приложение, а не sql server.
Как вариант, в SQL Server Configuration manager/Surface Area Configuration проверить, что разрешены удаленые подключения к SQL Server и включен протокол, который используется приложением для подключения.

Всего записей: 239 | Зарегистр. 18-09-2009 | Отправлено: 07:54 09-12-2011
ekemov

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EugeneBoss3
БД может ненастроена на сетевой режим или запрещено из вне подключения. Возможно кто то порт БД блокирует, что очень часто бывает.

Всего записей: 804 | Зарегистр. 23-12-2005 | Отправлено: 08:41 09-12-2011
EugeneBoss3



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bigsloth
ekemov
Проблема возникла после попытки сжать БД изменить структуру таблицы в БД с помощью внешнего приложения (инсталлятора). Ранее так-же делали изменения в БД с помощью внешнего инсталлятора, проблем не было. Алгоритм подключения к БД был прежний, с одним исключением - были отключены все клиенты.

Всего записей: 247 | Зарегистр. 15-09-2009 | Отправлено: 00:33 10-12-2011
perceptron

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2EugeneBoss3: опишите подробней проблему

Всего записей: 433 | Зарегистр. 23-12-2005 | Отправлено: 00:35 10-12-2011
bigsloth



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EugeneBoss3
Присоединяюсь к perceptron. Опиши подробнее.
Попробуй подключиться к своему SQL Server с помощью SQL Server Management Studio и посмотри в каком сейчас состоянии та БД, с которой производили все эти действия.  

Всего записей: 239 | Зарегистр. 18-09-2009 | Отправлено: 12:36 10-12-2011
perceptron

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2EugeneBoss3:
Если вы меняете структуру таблиц, в которых работают пользователи то неуидивительно, что ругается
Если дело не доходит до соединения, то хотелось бы узнать
ещё бы версию ОС и строку соединения к базе вашу бы увидеть для ясности...
 
 

Всего записей: 433 | Зарегистр. 23-12-2005 | Отправлено: 23:35 10-12-2011
EugeneBoss3



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ситуация следующая.
Поддержку нашей АСУ осуществляют разработчики через дополнительные обновления, присылаемые по email'у.
Обновления, где не требуется отключение пользователей от сервера проходят без проблем, но когда разработчики требуют отключения пользователей от сервера возникает ошибка подключения к БД.
Мы пробовали два варианта: выход пользователей из приложения, использующего сервер и отключение сетевого кабеля от сервера. В обоих случаях ошибка подключения к БД.
 
Операционная система Windows Server 2008
Сеть доменная.
Сервер - MS SQL Server 2005
Часть программного кода, в которой осуществляется проверка подключения к БД в приложении, присланная разработчиками:
osql /S имя_сервера /U имя_пользователя /P пароль /d имя_БД
Ни мы ни разработчики не могут понять причины ошибки! Алгоритм подключения к БД не изменялся.

Всего записей: 247 | Зарегистр. 15-09-2009 | Отправлено: 00:47 14-12-2011 | Исправлено: EugeneBoss3, 00:48 14-12-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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