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

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



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

Цитата:
Это невозможно

"Это" - это что? Т.е. если ограничить размер файла БД, то будет генерироваться ошибка, при добавлении новой записи? Правильно я понимаю?
 
Ну а возможно ли как-нибудь ограничить количество строк в таблице?
А сбрасывать счётчик-ключевое поле до единицы можно? Например, при достижении таблицы длины в N строк?
 
Добавлено:
Как сбросить счётчик я нашёл: DBCC CHECKIDENT... Правда это не решает задачу, да и потом возможны ошибки при совпадении ключевых полей... Чувствую нужно при добавлении записи организовывать проверки всякие или копать в сторону ограничений и/или триггеров...
 
Ещё вопрос. Что будет при добавлении записи если счётчик-ключевое поле уже достиг своего предельного значения. Тоже будет генерироваться ошибка без добавления записи?

Всего записей: 836 | Зарегистр. 14-09-2005 | Отправлено: 21:20 28-09-2009 | Исправлено: niichavo, 21:51 28-09-2009
bigsloth



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

Цитата:
Что будет при добавлении новой записи в таблицу, когда файл достигнет своего предела?

Зависит от настроек сервера. Либо база станет доступной только для чтения, либо сработает autogrowth и файл данных автоматически увеличится.
 

Цитата:
копать в сторону ограничений и/или триггеров...

ограничения вам вряд ли помогут, а триггеры.. может быть и помогут копайте в сторону INSERT .. BEFORE. А по другому эту задачу нельзя решить? Обязательно заменять данные в таблице?

Всего записей: 239 | Зарегистр. 18-09-2009 | Отправлено: 06:15 29-09-2009
niichavo



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

Цитата:
А по другому эту задачу нельзя решить?

Можно конечно и в обычной процедуре добавления устроить проверку, например, найти самую старю запись (есть столбец datatime) или удалить строку с самым маленьким показателем счётчика, когда число строк в таблице превысит некоторый лимит. Ещё не определился до конца.

Цитата:
Обязательно заменять данные в таблице?

Задача такая. Не дать расти таблице до бесконечности. Ну а если установлен предел росту таблице (не важно какими методами), и таблица достигла своего предела, а новые данные нужно добавлять, то что в данном случае делать? Я кроме как удалять или перезаписывать старые строки решения не вижу. Может быть вы видите альтернативное решение задачи?

Всего записей: 836 | Зарегистр. 14-09-2005 | Отправлено: 10:08 29-09-2009 | Исправлено: niichavo, 10:10 29-09-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
niichavo
Сделайте триггер INSTEAD OF на добавление. И проверяйте количество записей в таблице. Если превышает допустимое, то удаляйте более старые записи.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 11:52 29-09-2009
niichavo



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

Цитата:
копайте в сторону INSERT .. BEFORE

В MS SQL Server 2005 я не нашёл BEFORE. Не ткёте в MSDN, где упоминается INSERT .. BEFORE?
volser

Цитата:
Сделайте триггер INSTEAD OF на добавление

Так наверное и сделаю. Хотя мне кажется, что проще написать проверку в встроенной процедуре (я использую для выборки и вставки встроенные процедуры).
 
Всем спасибо!

Всего записей: 836 | Зарегистр. 14-09-2005 | Отправлено: 16:56 29-09-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
niichavo
В MS SQL Server 2005/2008 есть только два вида триггеров. INSTEAD OF и AFTER (он же FOR).

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 18:30 29-09-2009
bigsloth



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
niichavo
дико извиняюсь, что ввел в заблуждение. имелся в виду именно INSTEAD OF..  
Все-таки идея переписывать таблицу мне кажется немного неправильной.. Скорее всего это приведет к росту фрагментации индексов, что скажется на производительности. Вам так дорого место на жестком диске? Может имеет смысл посмотреть в сторону секционирования и после накопления определенного числа записей (например, в 2 раза больше, чем требуется для работы приложения) очищать старую секцию?

Всего записей: 239 | Зарегистр. 18-09-2009 | Отправлено: 05:43 30-09-2009
niichavo



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

Цитата:
Может имеет смысл посмотреть в сторону секционирования

Для общего развития я гляну, спасибо. Секционированные таблицы и индексы поддерживаются только в выпусках Microsoft SQL Server 2005 Enterprise Edition и Developer Edition, а у меня Microsoft SQL Server 2005 Standart.

Всего записей: 836 | Зарегистр. 14-09-2005 | Отправлено: 10:43 30-09-2009
Uniqas

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ВСем доброго времени суток.  
Очень надеюсь на Вашу подсказку....
Случилась такая штуковина: Перестал работать SQL Profiler. Стоит Sql 2005 Standart. После установки и загрузки баз все работало...но спустя пару недель..слетел профайлер...При этом заметил, что перестала запускаться служба "Optimizer .net ...". Как то в инете наткнулся на одного парня...у которого случилась очень похожая фигня...Говорит, что переставил visual studio 2005 и всё...
Кто что подскажет?  
Сразу извиняюсь, что не выложил подробную инфу по ошибкам...просто у меня не постоянный доступ к серверу...
 
 
И кстати, зодно..подскажите пожалуста - как сделать, чтобы в таблице строки шли по алфавитному порядку значений определенного столбца. Т.е. есть таблица персонала. Есть программа которая показывает отчет с этой таблицы. Как сделать чтобы персонал показывался по алфавитному порядку...
Знаю что при обработке запроса нужно в конце использовать order by...А можно просто как то сделать так, чтобы сама таблица была упорядоченая...Просто не знаю как и какой запрос использует вышеупомянутая программа...
Заранее спасибо

Всего записей: 20 | Зарегистр. 30-07-2009 | Отправлено: 10:31 07-10-2009 | Исправлено: Uniqas, 10:35 07-10-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Uniqas
Для сортировки используй order by... Данные в самой таблице хранятся в произвольном порядке.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 11:41 07-10-2009
bigsloth



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
volser
Ну почему же в произвольном.. Они хранятся в порядке возрастания ключа кластерного индекса. Другое дело, что никто не гарантирует вывод данных, без явного указания сортировки, в этом порядке..  
Поэтому, Uniqas, действительно нужно использовать order by

Всего записей: 239 | Зарегистр. 18-09-2009 | Отправлено: 13:34 07-10-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
bigsloth
А если в таблице нет кластерного индекса?

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 17:18 07-10-2009
bigsloth



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
volser
Тогда в куче, да.

Всего записей: 239 | Зарегистр. 18-09-2009 | Отправлено: 05:13 08-10-2009
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sql 2008
есть ли способ не делая два запроса...получить ID только что добавленного элемента?
добавляю через ADO

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 12:34 19-10-2009 | Исправлено: mdid, 12:35 19-10-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mdid
ID что это за столбец?

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 12:46 19-10-2009
mdid

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

Код:
SELECT @@IDENTITY AS 'Id';

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 12:49 19-10-2009 | Исправлено: mdid, 12:55 19-10-2009
counsellor

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Лучше пользоваться SCOPE_IDENTITY()

Всего записей: 17 | Зарегистр. 30-12-2005 | Отправлено: 13:47 19-10-2009
Fire Lizard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день
 
Разработал тут утилиту для MS SQL Server
 
Что умеет:
 
1. Поиск объектов БД (таблиц, процедур, индексов) по имени
2. Поиск слов в теле процедур и DDL (насколько я знаю последнее не умеет ни одна из существующих ныне утилит). Например можно задать искать поле например currency и увидеть в каких таблицах оно присутствует и в каких функциях и процедурах фигурирует и для каких индексов используется.
 
Для работы требуется иметь NT-логин в БД (SQL-логин планирую сделать позже)
 
EMS2 (версия которая требует .NET Framework 2.0)
 
http://upload.com.ua/get/901113795/
 
EMS3 (версия которая требует .NET Framework 3.5 т.к. переписана на WPF)
 
http://upload.com.ua/get/901113797/
 
На данный момент две версии одинаковы по функционалу но развиваться будет только EMS3
 
Пользуйтесь на здоровье!
 
Буду какие замечания пишите в этой теме.
 
Заранее извиняюсь если веткой ошибся.

Всего записей: 421 | Зарегистр. 17-11-2008 | Отправлено: 13:24 21-10-2009
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите какие ключи использовать чтобы установить mssql express из командной строки при этом задать имя сервера пас для sa и путь установки

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 15:42 22-10-2009
naPmu3aH



Из лесу вышел
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SIgor33
http://msdn.microsoft.com/en-us/library/ms144259.aspx

----------
"Русские Доски" - сила! "Русские Доски" - класс! Кто не знает досок - тот сами догадайтесь кто

Всего записей: 4641 | Зарегистр. 30-10-2001 | Отправлено: 13:21 24-10-2009
Открыть новую тему     Написать ответ в эту тему

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