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

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



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
wpt
Достаточно сумбурно описана проблема: вопервых нужно указать что за система у тебя, какую версию SQL server ставишь, полностью код ошибки ...
Возможно у тебя не запускается или еще что-то из-за какого-нить сервиса - либо остановлен либо отсутствует ...
На данный момент посоветую тебе почистить сначала систему от предыдущих версий SQL  server и поставить версию "Express" (хоть 2005 хоть 2008) ...

Всего записей: 1094 | Зарегистр. 13-11-2005 | Отправлено: 06:52 09-11-2009
mdid

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

Код:
 
select t.*,Top(1) v.* from TBofGoodsIncoming as t  
LEFT JOIN valuation as v  ON t.id_документа=v.id_документа AND t.ТМЦ=v.ТМЦ  
where t.id_документа=53 order by v.Дата desc ,v.Время desc
 

ругается на Top(1)..тоесть надо для каждой строки из таблицы TBofGoodsIncoming выудить последню строку из valuation в этом запросе

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 15:32 09-11-2009 | Исправлено: mdid, 15:35 09-11-2009
counsellor

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Естественно не будет работать.  Почитайте BOL, что ли. Или хорошую книжку по SQL...
 
Попробуйте так:

Код:
select t.*, v.*  
from TBofGoodsIncoming as t  
outer apply (select top 1 valuation where id_документа = t.id_документа and ТМЦ = t.ТМЦ order by v.Дата desc, v.Время desc) as v
where t.id_документа = 53  

Всего записей: 17 | Зарегистр. 30-12-2005 | Отправлено: 16:49 09-11-2009
mdid

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

Код:
 
select t.*, v.*  
from TBofGoodsIncoming as t  
outer apply (select top 1 * from valuation where id_документа = t.id_документа and ТМЦ = t.ТМЦ order by Дата desc, Время desc) as v  
where t.id_документа = 54  
 

были небольшие неточности но спасибо за направление

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 20:04 09-11-2009
shadow_user777



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется БД.
Подключение юзера осуществляется стандартно - логин\пасс.
Если юзер подключился с логином qwert и пассом 123456, то изменив регистр букв в логине а именно логин QWERT и пасс 123456, он может ПОВТОРНО зайти в БД.
Т.е. 1 логин - 2 коннекта.
Как можно с этим поборотся?
MsSQL 2000

Всего записей: 1449 | Зарегистр. 31-07-2005 | Отправлено: 17:58 22-01-2010
counsellor

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Более того, ему необязательно менять регистр букв. Юзер с логином qwert и пассом 123456 может зайти в БД сколько угодно раз одновременно, если специально не бороться с этим.

Всего записей: 17 | Зарегистр. 30-12-2005 | Отправлено: 18:24 22-01-2010
shadow user777



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
counsellor
Интересует как раз таки запрет таких "заходов".
Как это можно реализовать?
 
В дополнение -  юзеры заходят удаленно, т.е. разные ИП. Может чем поможет ....
Проблема стоит ребром

Всего записей: 1449 | Зарегистр. 31-07-2005 | Отправлено: 21:31 22-01-2010 | Исправлено: shadow user777, 21:32 22-01-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shadow user777 counsellor
 
Запрет можно организовать достаточно легко. На каждый login проверяем таблицу входящих логинов. Если не нашли, заносим новый. На выходе очищаем таблицу от текущего логина.
Можно еще порыться в направлении SQL Server 2000 Auditing
Но audit для данной задачи черезмерно. Даже если и можно там что-то найти для логинов.

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 22:04 22-01-2010 | Исправлено: dneprcomp, 22:04 22-01-2010
shadow user777



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тут еще заковыка в том что софт которым коннектится юзер, без исходников.
Т.е. предпринять что либо в софтине, невозможно.
Остается только что то придумать в самой MSSQL.
Триггер команду SELECT не держит

Всего записей: 1449 | Зарегистр. 31-07-2005 | Отправлено: 22:15 22-01-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shadow user777
Юзер же что-то делает в базе при входе. Какие-то stored procedure работают, функции...
Вот на первое действие(вернее перед ним) и поставить
 
PS.Поищи Logon Triggers

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 22:28 22-01-2010 | Исправлено: dneprcomp, 22:38 22-01-2010
shadow_user777



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ммм, оказалось все сложнее....
Программа юзает при подключении к БД не логон а запрос вида SELECT.
Т.е. в БД, в таблице, содержатся данные о логинах паролях и характеристиках аккаунтов. При коннекте юзер селектит свои данные в программу.

 
Добавлю.
При коннекте в таблице статуса коннекта 0 сменяется на 1.
При повторном коннекте похоже что туда же снова записывается 1 и все.
Может с этим можно что-то сотворить?

Всего записей: 1449 | Зарегистр. 31-07-2005 | Отправлено: 09:30 23-01-2010 | Исправлено: shadow_user777, 11:04 23-01-2010
dneprcomp



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shadow_user777
 
1.Логон должен быть по любому. Иначе как сервер знает кому отсылaть данные? И кому записывать 1.
2.
Цитата:
При коннекте в таблице статуса коннекта 0 сменяется на 1
Cтатус сменяется для конкретного логина? Тогда попробовать что-нибуть с instead тригером.
 
Forcefully Disconnect All Users and Drop a Database
 
kill all processes on the server
 
Procedure to forcibly disconnect users from a database

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 19:43 23-01-2010 | Исправлено: dneprcomp, 20:55 23-01-2010
AviDen



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shadow_user777
Попробуй заюзать след. схему:
1. Вешаешь триггер на изменение поля статуса в таблице аккаунтов, в котором
1.1. Определяешь список активных сессий, залогиненных под тем же логином, например, таким запросом:

Код:
select * from sysprocesses where loginame=(select suser_sname()) and spid != @@SPID

1.2. Если этот список не пуст (т.е., мы залогинились повторно) - делаешь ритуальное самоубийство для текущей сессии (см. команду KILL)
 
Добавлено:
Упс... А текущий процесс-то киллом убить нельзя...
 
Добавлено:
Хотя для убиства тек. сессии можно заюзать что-то вроде
Код:
RAISERROR ('Error occured', 20, 1) WITH LOG

Но это доступно только для членов группы sysadmin, т.е. для самых что ни на есть навороченных юзеров ))

Всего записей: 316 | Зарегистр. 05-06-2007 | Отправлено: 19:58 05-03-2010
VGreen



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в шапочке поправьте  
SQL Server 2005 Books Online  
http://download.microsoft.com/download/3/D/9/3D956EA9-F211-4E66-929D-3431F8617127/SqlServer2K5_BOL_Jan2009_ru-RU.msi

Всего записей: 149 | Зарегистр. 19-09-2002 | Отправлено: 10:00 01-04-2010
billwet



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос. А можно ли запросом узнать IP-адреса компа (сервак) и как?
Все перерыл, не нашел. Может не там рыл?

Всего записей: 135 | Зарегистр. 25-01-2005 | Отправлено: 13:31 01-04-2010
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
billwet
Гугл отключили? Ссылка

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 15:03 01-04-2010
apnss

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть  2005 экспресс  
 
табличка с самосоединением  PTypeID  -> TypeID  
 
пример данных:  
 
   
 
Возникла необходимость сделать серверную функцию возвращающую конечные листы этого дерева напр.:  выборка по коду  TypeID = 2 должна вернуть  20101, 20102, 202  
 
как проще и продуктивнее реализовать рекурсию на MS SQL 2005 ?  
 
Добавлено:
 
RTFM:  BOL, WITH обобщенное_табличное_выражение
 
не все так страшно как казалось  
 
вот  может кому пригодится:  
 

Код:
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'dbo.GetChildTypes') and xtype in (N'FN', N'IF', N'TF'))
DROP FUNCTION dbo.GetChildTypes    
GO
CREATE FUNCTION dbo.GetChildTypes(@TypeID int)
RETURNS @out TABLE(TypeID int, PTypeID int, TypeName varchar(50), FileType varchar(10)) AS
BEGIN  
  WITH GetTypes(TypeID, PTypeID, TypeName, FileType) AS  
  (
    SELECT TypeID, PTypeID, TypeName, FileType FROM types WHERE TypeID = @TypeID
    UNION ALL
    SELECT E.TypeID, E.PTypeID, E.TypeName, E.FileType FROM types E  INNER JOIN GetTypes D ON E.PTypeID = D.TypeID
  )
  INSERT INTO @out
  SELECT TypeID, PTypeID, TypeName, FileType FROM GetTypes WHERE FileType IS NOT NULL  
RETURN
END

Всего записей: 708 | Зарегистр. 26-02-2002 | Отправлено: 20:31 10-04-2010 | Исправлено: apnss, 21:13 10-04-2010
Hrist



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
поставил 2003 R2 + SQL 2000 для 1С 7.7
ось и скуль видят 12гб озу и 8 ядер проца
НО - даже при перепроведении всей базы (а она за несколько лет уже более 15гигов)
занимается только одно ядро проца под 100% и 1.7гб оперативы и все
в скуле поставлено использовать все ядра и 10гб оперативы
в чем же тогда проблема?????

----------
"Дьявол рождается из пены на губах ангела, защищающего правое дело". ГРИГОРИЙ ПОМЕРАНЦ

Всего записей: 2897 | Зарегистр. 24-06-2002 | Отправлено: 11:52 12-04-2010
counsellor

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема в 1С. Она использует базу SQL как DBF, т.е. тупо выкачивает все данные на клиентскую машину и там считает

Всего записей: 17 | Зарегистр. 30-12-2005 | Отправлено: 12:28 12-04-2010
Hrist



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
counsellor
вы серьезно? ТАКОГО я от нее даже и не ожидал    
 
я уже понял что семерка однопроцессорная и что бы нагрузить остальные ядра недостаточно запусить перепроведение в одной копии - нужно как можно больше пользователей запустить в базу и смотреть нагрузку
 
но что бы грузила данные на клиентскую машину? скуль ей отдаст их не выполнив запроса на обработку?
впрочем я понял так что в таск манаджере и смотреть не стоит - врет он при работе скуля - буду смотреть перформанце и под загрузкой уже реальной со всеми пользователями - картина может измениться кардинально

----------
"Дьявол рождается из пены на губах ангела, защищающего правое дело". ГРИГОРИЙ ПОМЕРАНЦ

Всего записей: 2897 | Зарегистр. 24-06-2002 | Отправлено: 12:46 12-04-2010
Открыть новую тему     Написать ответ в эту тему

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