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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос к тем, кто скачал и установил SQL Server 2005 русский (триал или нет - не важно):
 
изменились ли следующие файлы по сравнению с английской версией:
 
имя             размер  CRC32
noiseRUS.txt 83986    d78091fb  
rusdict.lex    2078660 f75c00a3  
ruslr.dll        423224  d4db475a  
tsRUS.xml    1142      98bdaab0  
 
это полнотекстовый поиск на русском.

Всего записей: 10 | Зарегистр. 17-12-2004 | Отправлено: 19:35 24-07-2006
Pinocchio

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Помогите пожалуйста побороть глюк в базе с единственным триггером и единственной таблицей. Вернее в майкросовтовском элементе контроля (Grid) который доступен через "управление компьютером".
      Увидеть его очень просто. Создаём новую базу и в ней:
Подробнее...
    При вставке когда поле Number стоит цифра то всё работает нормально. Когда добавляем строку в непустую таблицу с пустым полем Number (primary key)  строка добавляется, поле Number остаётся пустым, но когда закроем таблицу и откроем заного то там увидим нормальное значение.
    Но когда первая строка таблицы имеет в поле Number значение = 0, то тогда при вставке с неуказанным Number возникает глюк - после вставки вместо вставляемой строки мы видим первую строку. Для эксперемента предлагаю вводить в поле Name значения типа aaa ccc bbb и нажимать стрелку вниз. Будет грид с абсолютно одинаковыми строками. Однако когда мы его обновим то будет видно что данные введены вполне корректно.


----------
Meaning this is something additional.

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 17:03 01-08-2006 | Исправлено: Pinocchio, 09:08 10-08-2006
KRS545

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
При таком раскладе надо обновлять Грид при каждой вставке, он же не знает что делает триггер на сервере.
А вообще по хорошему нужно убрать триггер, скрыть Number в Гриде, и сделать Number автоинкрементным, и все будет ок
 
Добавлено:
и еще  
IF ((SELECT [Number] FROM  inserted) = -1)  не очень правильно, т.к. SELECT [Number] FROM  inserted может выдать несколько значений при добавлении пакета записей, например при insert select

Всего записей: 91 | Зарегистр. 12-06-2005 | Отправлено: 18:56 01-08-2006
Pinocchio

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

Цитата:
При таком раскладе надо обновлять Грид при каждой вставке

Это можно как-то сделать средствами SQL? Я имею ввиду, что если бы я пользовал грид из собственной программы то вопросов про Number вообще небыло бы.

Цитата:
он же не знает что делает триггер на сервере.  

Вот именно - у него же не возникает подозрений что он посылал NULL в поле которое не может быть NULL. Ты же знаешь, что в компьютере много программ и они потом этот NULL поправляют.

Цитата:
А вообще по хорошему нужно убрать триггер, скрыть Number в Гриде, и сделать Number автоинкрементным

А вот тут поподробнее пожалуйста. Так как ничего не могу найти про термин автоинкремент в хелпах сервера и в книге по программированию MSSQL. Я нашёл IDENTITY и уже использую его, но в других целях (для корректности связей). Думаю понятно что Number это номер и нумерация с 200 тысячь в таблице которую почистили не очень меня радует. А идентификаторы так и работают, тем более их нельзя редактировать. Это уже через чур плохо для человека который собирается использовать базу для уменьшения беспорядка.

Цитата:
IF ((SELECT [Number] FROM  inserted) = -1)  не очень правильно

Естественно что это не правильно, однако посылать пакет записей с NULL значениями для примари полей никто не собирался вроде. SQL устраивает, не устраивала работа грида в ситуации когда первая запись в таблице имеет номер равный нулю.  
 
Добавлено:
Чем хорош триггер - это тем что его перед пакетной вставкой можно DROB а после вставки CREATE (это позволяет программе иметь туже производительность, а после отработки иметь защиту от пользователя "управления компьютером"). Честно говоря хотел состряпать небольшой сервис(службу) который бы запрещал удаление (редактирование) файлов занесённых в таблицу. Сделал ещё проще - не через триггер а через функцию - те же глюки. Дело видимо не в SQL. Вот код:

Код:
 
 
CREATE FUNCTION MN_Folders ()
RETURNS int
AS
BEGIN
  DECLARE @NUM INT
  SET @NUM = (SELECT MAX(Number) FROM [Folders])
  RETURN(@NUM+1)
END
go
 
 
ALTER TABLE [dbo].[Folders] ADD  
    CONSTRAINT [DF_Folders_Numer] DEFAULT ([dbo].[MN_Folders]()) FOR [Number]
go
 
 

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 13:01 02-08-2006 | Исправлено: Pinocchio, 09:34 10-08-2006
KRS545

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Под автоинкрементом имел ввиду как раз IDENTITY
Вообще не совсем понял какую цель вы преследуете.
Можно поподробнее... А потом будем думать как проще это сделать.
 

Всего записей: 91 | Зарегистр. 12-06-2005 | Отправлено: 16:45 02-08-2006
Pinocchio

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
KRS545
Допустим я разрешил жене удалять записи с tv тюнера, но те файлы которые удалять нельзя "зашарены", так как атрибут редонли не отдаляет процесс удаления файла даже на один клик окея.  
Если список шареных файлов хранить в базе то такой вариант очень удобен - так как лесть в базу будет лень. Логично?  
Тем более что программу снимающую карту диска в базу я уже написал. ID использую для того чтобы ссылки иерархии каталогов велись базой автоматически. А вот нумерация влияющая на порядок записей по ID меня не привлекает.
 
Добавлено:
Номер это нумер и по логике если последняя запись в таблице нумерована максимальным числом то новую запись логичнее всего представить с номером большим на единицу.

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 18:48 02-08-2006 | Исправлено: Pinocchio, 09:17 10-08-2006
KRS545

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pinocchio
Че то не совсем врубился, особенно про карту диска, ссылки иерархии каталогов, и что помешает все-таки удалить файлы с диска напрямую.
 
логичнее всего представить с нумером большим на единицу
ну и сделайте его IDENTITY

Всего записей: 91 | Зарегистр. 12-06-2005 | Отправлено: 19:14 02-08-2006 | Исправлено: KRS545, 19:29 02-08-2006
Pinocchio

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

Цитата:
Че то не совсем врубился, особенно про карту диска, ссылки иерархии каталогов, и что помешает все-таки удалить файлы с диска напрямую.

Когда файл открыт эксклюзивно типа "*.mdf" то его удалить сложнее.

Цитата:
ну и сделайте его IDENTITY

Спасибо за совет, к сожалению мы на разных языках видимо разговариваем. На моём языке идентификатор это идентификатор, а номер это номер. Мне трудно улавливать Ваш юмор, мне нужен был совет, или время. Оказалось второе. После того как понял, что мне необязательно видеть в гриде то, что идёт до первого номера всё встало на свои места. Пока я ввел ограничение. А когда будут более тонкие материи, будет вполне очевидно, почему не только мне приходится избегать применения нулевых значений.
Подробнее...
Понимаю, что это только визуальный эффект, однако прикольный.

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 12:39 03-08-2006 | Исправлено: Pinocchio, 12:28 14-08-2006
Pinocchio

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Мой вопрос похоже закрылся. Показал всё как есть. Вобщем ей понравилось, но интерпретация была однозначной - этот эффект глюк. Так же она поняла почему для нас такие моменты большая ценность.

Всего записей: 683 | Зарегистр. 18-11-2002 | Отправлено: 12:24 08-08-2006 | Исправлено: Pinocchio, 09:33 10-08-2006
TitanMK



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мож такое у кого было.
Вообщем мне срочно нужена помощь....
сатвлю сиквел 2005 Ent собраный как написано в варезнике... при установке винда кидает при установке компонентов Books Online, менеджмент студио вот ето С:\windows\instaler3A7C7.msi was rejected by digital signature policy....че за хрень... до етого ставил на 2003 SP1 было все ОК. Ставлю на систему Win2003 SP1 + R2
и все.. нече не ставится... в логах таже ошибка

Всего записей: 192 | Зарегистр. 27-04-2006 | Отправлено: 12:25 28-08-2006
djdtyfhu



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть файл. Пусть называется KadrFull.BAK первые байты выглядят так:
"TAPE   Њ                                      ‡Ѕ(–                    , ^   T{l{M i c r o s o f t   S Q L   S e r v e r       SPAD    ^          L"
 
далее есть строчка:
" K a d r s   b a c k u p s a   SPAD    R          @    "
 
как я понимаю это бэкап базы данных в формате MS SQL Server
Подскажите как можно восстановить исходную базу и просмотреть данные
 
P.S. Кроме этого файла есть сформированные запросы и сам запускальщик оболочки.
На компьютере установлен только Delphi 5 без самого MS SQL Server.

Всего записей: 422 | Зарегистр. 28-12-2004 | Отправлено: 04:05 10-09-2006
naPmu3aH



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

Цитата:
без самого MS SQL Server

Ну и куда в таком случае восстанавливать базу?  

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

Всего записей: 4642 | Зарегистр. 30-10-2001 | Отправлено: 05:21 10-09-2006
darmoedina



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здравствуйте.
Помогите составить запрос, чтобы данные из одного 2 столбца скопировались в 1 столбец кроме тех ячеек которые уже заполнены в 1 столбце.  Или с синтаксиса какого оператора надо начать?

Всего записей: 44 | Зарегистр. 07-06-2006 | Отправлено: 16:57 20-09-2006
gerrCrazzy



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

Цитата:
кроме тех ячеек которые уже заполнены в 1 столбце

гм.. что значит не заполнены? равны 0, пустой строке или null?
ниже пример для null

Цитата:
Или с синтаксиса какого оператора надо начать?


Код:
 
UPDATE [имя_таблицы]
SET [столбец1] = [столбец2]
WHERE [столбец1] is null
 

 

Всего записей: 63 | Зарегистр. 27-12-2002 | Отправлено: 17:11 20-09-2006
darmoedina



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

Цитата:
гм.. что значит не заполнены? равны 0, пустой строке или null?  

Для пустой строки
зы где можно прочесть какие значения можно подставлять?
 
Добавленно:  
При попытке задать пустую строку "" пишет  

Код:
 
Msg 1038, Level 15, State 4, Line 3
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Add a name or single space as the alias name.  
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near ''.
 

Всего записей: 44 | Зарегистр. 07-06-2006 | Отправлено: 10:40 21-09-2006 | Исправлено: darmoedina, 11:10 21-09-2006
SJS

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.  Помогите или намекните , как сделать КОД для триггера из sql запросов идущих от MSAccess'a:
 
 
--Query1
SELECT dbo.T_USER_INSIDE.USER_DATA, dbo.T_USER_INSIDE.USER_KEY, dbo.T_USER_INSIDE.TASK_NUM
FROM dbo.T_USER_INSIDE
GROUP BY dbo.T_USER_INSIDE.USER_DATA, dbo.T_USER_INSIDE.USER_KEY, dbo.T_USER_INSIDE.TASK_NUM
HAVING (((dbo.T_USER_INSIDE.USER_DATA) Is Not Null) AND ((dbo.T_USER_INSIDE.USER_KEY) Is Not Null)  
AND ((dbo.T_USER_INSIDE.TASK_NUM)=123));
 
--Query2
SELECT dbo.T_USER_INSIDE.USER_ID, Sum(dbo.T_USER_INSIDE.TASK_NUM)  
AS [Sum-TASK_NUM], dbo.T_USER_INSIDE.USER_SPID
FROM dbo.T_USER_INSIDE
GROUP BY dbo.T_USER_INSIDE.USER_ID, dbo.T_USER_INSIDE.USER_SPID
HAVING (((Sum(dbo.T_USER_INSIDE.TASK_NUM))=0));
 
--Query3....
INSERT INTO dbo.T_USER_INSIDE ( USER_ID, USER_SPID, USER_DATA, USER_KEY, TASK_NUM )
SELECT Query2.USER_ID, Query2.USER_SPID, Query1.USER_DATA, Query1.USER_KEY, Query1.TASK_NUM
FROM Query2, Query1;
 
Прошу наверно много...но может кто из специалистов подскажет

Всего записей: 20 | Зарегистр. 21-10-2001 | Отправлено: 05:06 26-09-2006
vladk1973



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

Цитата:
Помогите или намекните , как сделать КОД для триггера из sql запросов идущих от MSAccess'a:

Читал, и не понял ни одной буквы...
Нельзя ли подробнее указать, что конкретно надо получить и причем тут MS SQL Server

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 07:34 26-09-2006
SJS

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladk1973
 
это sql запросы к серверу из приложения на изменение значений одной таблицы, если изменения insert, delete в ней произошли, лучше это, мне так кажеться, сделает триггер к этой таблице...
но код триггера будет выглядеть несколько иначе чем эти sql запросы...ну не силён я в триггерах

Всего записей: 20 | Зарегистр. 21-10-2001 | Отправлено: 17:01 26-09-2006
vladk1973



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SJS
Триггеры могут обрабатывать только команды DML
На SELECT триггер не поставишь - здесь надо смотреть в сторону представления (create view...)
Первые два запроса можно смело оформить в виде представления
На команду INSERT - триггер на таблицу T_USER_INSIDE, пожалуйста, ставь. Только зачем он тебе?
Сама команда INSERT будет выглядеть как  
INSERT ***  
  SELECT *** FROM view1, view2
 
Я понимаю, что ничего не понимаю, нельзя ли цель этих трех запросов указать ?
 
Добавлено:
darmoedina

Цитата:
Msg 1038, Level 15, State 4, Line 3
An object or column name is missing or empty. For SELECT INTO statements, verify each column has a name. For other statements, look for empty alias names. Aliases defined as "" or [] are not allowed. Add a name or single space as the alias name.  
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near ''.
 

Код команды UPDATE пожалуйста в студию. Подозреваю, что пишешь  
  WHERE [столбец1] IS ''
 

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 02:58 27-09-2006 | Исправлено: vladk1973, 03:04 27-09-2006
SJS

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladk1973 и darmoedina  
 
я понимаю что код который тут поместил...немного запутал вас
Хорошо попробую так задачу обрисовать словами :
есть таблица в базе sql (ниже не код)
dbo.T_USER_IN ( ID, NUM, SPID, HOST, DATA,KEY)
внешнее приложение замисывет строку (insert)
dbo.T_USER_IN ( ID, NUM="0", SPID, HOST, DATA,KEY)
надо чтобы эта строка записалась в таблицу, а триггер (после )
если записывается NUM="0", создал бы аналогичную 1 запись, но в ней  
NUM ="3" например, DATA=10 и KEY = "077"
 
 
 
 
Добавлено:
я понимаю что тут надо работать с таблицей  inserted,
а потом выпонить команду Insert...но это у меня не получается - собрать в "кучу"

Всего записей: 20 | Зарегистр. 21-10-2001 | Отправлено: 04:36 27-09-2006
Открыть новую тему     Написать ответ в эту тему

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