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

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо! Еще вопрос. Нужно получить некое максимальное значение из N таблиц.  Число N ~100. Я сделал так:
SELECT     MAX(A)  
FROM         (SELECT     MAX(pole) AS A
                       FROM          Tab1
                       UNION
                       SELECT     MAX(pole) AS A
                       FROM         Tab2  
                       UNION
                       ........
                       UNION
                       SELECT     MAX(pole) AS A
                       FROM         TabN)
 
Может можно сделать проще?
 

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 11:10 16-10-2003 | Исправлено: Megard, 11:21 16-10-2003
daw

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

Цитата:
Может можно сделать проще?

Может быть, имеет смысл сделать представление (view) с объединением этих таблиц и выбирать максимальное значение из представления...
А так - вполне нормальный вариант.

Всего записей: 28 | Зарегистр. 18-06-2002 | Отправлено: 12:31 16-10-2003
Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо!. Еще вопрос. Сколько должно быть записей в таблице, чтобы при запросе вроде:  
                                    SELECT A
                                    FROM Tabl
                                    WHERE A=B
 
скажем, на пне 1000 были бы заметны "тормоза"?
 
 

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 17:02 16-10-2003
v0yager



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общем случае ответа на твой вопрос не существует.  
 
Скорость выполнения приведенного запроса зависит от множества не описанных факторов:  
 
    - тип данных поля А, наличие индексов, распределение множества значений А и т.д.  
(пример, если А это пол (М-Ж, всего два значения), а Tabl - это таблица военных в БД армии, то подавляющее большинство значений А = М и толку от индекса не будет, все равно table scan)
 
    - характеристики дисковой подсистемы (ATAPI/IDE, SCSI), RAID (нет/есть-?тип).
    - расположение базы на диске, наличие "конкуренции" на сервере за ресурсы (диск,память,процессор) с другими установленными приложениями.
 
Для начала можно порекомендовать посмотреть план выполнения запроса в Query Analyzer и поискать table scan'ы. Дальше - по обстановке.

Всего записей: 95 | Зарегистр. 08-05-2003 | Отправлено: 09:25 17-10-2003
Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну чтобы порядок хотябы можно было оценить.
Допустим некий "среднестатистический домашний компьютер"
Все поля, допустим, char. Нормальное распределение. Никакой конкуренции за ресурсы нету. Сколько таких полей должно быть? Несколько тысяч, десятков тысяч, или больше? И на сколько критичны характеристики диска?
 
Добавлено
Подскажите плз, что это за индексация такая на MSMSQL? Где почитать?

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 13:17 17-10-2003 | Исправлено: Megard, 13:18 17-10-2003
Megard

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

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 16:31 24-10-2003
Bloody_Nokia_Adept



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

Цитата:
Ну так знает кто-нибудь?

А что знать?
1. Примерное количество записей? Глупый вопрос, который просто проигнорировали потому как определение "тормозов" очень субъективное. Какое ожидаемое время реакции и какое время реакции считается "тормозом", какая структура таблиц и связи между ними, какие типы данных и сложность запросов, какой метод выборки данных из СУБД - да существует море параметров влияющих на это. На кофейной гуще не гадаем.
2. Контекстный поиск по полям text/image? Первый появился в 7 версии, второй - в 2000. Позволяют искать по большим блокам данных с заданием части слова и учетом морфологии языка. Ключевые слова в BOL: CONTAINS, FREETEXT, MATCHES, Indexing Service и Full-Text Queries. Можешь так же в MSDN прочитать статью "Textual Searches on Database Data Using Microsoft SQL Server 7.0" и "Textual Searches on File Data Using Microsoft SQL Server 7.0". В 2000 принципиально нового ничего не появилось за исключением поиска по image.
 
Вопросы?

----------
Дядя Фёдор, пес и кот - все в одном лице живет!
Он обфукать любит сразу, вот такая вот зараза!
Эпиграмма на меня, "1001 ночь ХАИ", 535 гр., 1999 г.

Всего записей: 785 | Зарегистр. 27-11-2002 | Отправлено: 19:03 24-10-2003
Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо. Вопрос еще такой:  
В таблице два поля "id" и "message". При добавлении новой записи к "message", в поле "id" добавляется запись "предыдущий id+1". Если добавление "message" сделают одновременно несколько пользователей, что произойдет?

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 17:01 09-11-2003 | Исправлено: Megard, 17:03 09-11-2003
daw

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

Цитата:
что произойдет?

Зависит от реализации... Если id - это действительно поле-счетчик (identity) то и добавится несколько записей с последовательными id. Если же
Цитата:
добавляется запись "предыдущий id+1"
реализовывалось руками (есть любители приключений, которым идентити не нравится), то может быть всякое...
зы: кстати, в поле запись добавить нельзя - запись можно добавить в таблицу...

Всего записей: 28 | Зарегистр. 18-06-2002 | Отправлено: 08:10 10-11-2003
Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, подскажите плз, как написать запрос, чтобы поле id  было с auto_increment.
 
     CREATE TABLE tab
    (
     id     CHAR(10) NOT NULL
     mess   CHAR(1000)
     PRIMARY KEY  (id)
    )

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 13:39 17-11-2003
daw

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
никак... identity к полям типа char неприменимо....

Цитата:
The IDENTITY property can be assigned to tinyint, smallint, int, bigint, decimal(p,0), or numeric(p,0) columns

но вот если поле id будет у Вас типа, скажем, int (настоятельно рекомендую, кстати!), то можно будет сделать так:
 
    CREATE TABLE tab  
    (  
     id     INT NOT NULL IDENTITY(1,1),
     mess   CHAR(1000)  
     PRIMARY KEY  (id)  
    )

Всего записей: 28 | Зарегистр. 18-06-2002 | Отправлено: 16:38 17-11-2003
Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
... а может в данном случае вместо INT лучше использовать numeric? Или это безразлично?

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 19:15 17-11-2003
daw

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

Цитата:
а может в данном случае вместо INT лучше использовать numeric

А в этом есть какой-то глубокий смысл? Лично я сомневаюсь, что это чем-то будет лучше... Учтите, кстати, что identity применимо не просто к numeric, а только к numeric(p,0), то бишь, к numeric с 0 знаков после запятой...

Всего записей: 28 | Зарегистр. 18-06-2002 | Отправлено: 08:32 18-11-2003
Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо.  
Такой вопрос. Можно средствами sql определить существует ли некая таблица или нет? Или для этого нужно "процедуру" делать?

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 13:39 18-11-2003
naPmu3aH



Из лесу вышел
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Такой вопрос. Можно средствами sql определить существует ли некая таблица или нет?

Можно. Как-нибудь типа так:

Код:
select * from [<database>].sysobjects tbl
where tbl.name = '<table_name>'
    and tbl.type='U'
 

Имя можно проверять по LIKE, можно применять конструкцию вида

Код:
where id = object_id(N'[<db_owner>].[<table_name>]') and OBJECTPROPERTY(id, N'IsUserTable') = 1


----------
Ну і хто тебе кликав, чому ти прийшла, Стара проститутка, сука-війна? Хто тобі платить за наші тіла? Скільки ще тобі треба, яка їх ціна?

Всего записей: 4643 | Зарегистр. 30-10-2001 | Отправлено: 14:59 18-11-2003
daw

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

Код:
 
if exists(select * from sysobjects where name = 'myTable' and xtype = 'U')  
  select 'существует'  
else  
  select 'не существует'
 

еще можно покопать в сторону sp_help, sp_tables...

Всего записей: 28 | Зарегистр. 18-06-2002 | Отправлено: 15:43 18-11-2003
zsv

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Три вопроса.
1.Запускаю сохраненную на сервере процедуру в одном потоке
   .....
   Form1.StoredProc1.ExecProc;
   .....
   Могу ли я как то остановить ее выполнение на сервере из другого потока.
2.Регистрит ли сервер как нибудь, что в данный момент времени данная сохраненная    процедура выполняется.
3.Как мне после запуска сохр процедуры в приложении отслеживать, что она функционирует и связь с сервером не пропала.
 
Добавлено
.

Всего записей: 25 | Зарегистр. 20-08-2003 | Отправлено: 11:52 04-12-2003
Megard

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вопрос:  
при запросе "SELECT *" к полю ntext появляется ошибка:
"Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. (severity 16) in..."
 
Как вылечить?

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 15:10 05-12-2003
MrZeRo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Megard
Может, старая клиентская часть?

Всего записей: 831 | Зарегистр. 30-01-2002 | Отправлено: 18:22 05-12-2003
Megard

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

Всего записей: 135 | Зарегистр. 13-09-2002 | Отправлено: 17:38 08-12-2003
Открыть новую тему     Написать ответ в эту тему

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