Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблемы с Express Edition 2008  [new]
Гурант
Member

Откуда:
Сообщений: 129
Всем здравствуйте!

В программе есть таблица регистрации соединений ( _cur_cnct). Там хранится, среди прочего, @@SPID соединения (default value).
После каждого нового соединения происходит сначала очистка этой таблицы от возможных старых соединений (@@SPID совпадает с новым).
Когда это работало под полным MSSQL 2008 - все отрабатывало нормально, под Express Edition 2008 каждое новое соединение вызывает полное опустошение таблицы коннектов. Причем @@SPID у обоих соединений разное, т.к. если такую очистку убрать - все работает.

Привожу выжимки кода:
	-- удаление прошлых соединений для данного SPID
  execute _cmn_rgstr_del_cnnct_spid

	-- регистрация соединения
  INSERT INTO _cur_cnct default values
процедура _cmn_rgstr_del_cnnct_spid содержит код:
	-- перенос текущих соединений SPID в прошлые соединения
 INSERT _old_cnct
  SELECT cc.id AS id_cur_cnct, cc.sp_id, cc.log_in, cc.usr_name, 
             cc.cnct_date, GETDATE() AS unrg_date, cc.is_admin
  FROM   _cur_cnct cc
  WHERE  cc.sp_id=@@SPID

	-- удаление данного SPID из текущих соединений
  DELETE 
  FROM   _cur_cnct
  WHERE  sp_id=@@SPID     

Вопрос: В чём наколка то?
16 сен 09, 18:19    [7669605]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Гурант
Member

Откуда:
Сообщений: 129
И что! Никаких мыслей?
18 сен 09, 16:58    [7680630]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
в контексте вызова 1 хп, такой код и приведет к очистке содержимого таблицы
  FROM   _cur_cnct cc
  WHERE  cc.sp_id=@@SPID

	-- удаление данного SPID из текущих соединений
  DELETE 
  FROM   _cur_cnct
  WHERE  sp_id=@@SPID   
-------------------------------------
Jedem Das Seine
18 сен 09, 17:02    [7680653]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
Гурант
И что! Никаких мыслей?

Вы хотите сказать, что WHERE sp_id=@@SPID не работает что ли ?
18 сен 09, 17:03    [7680660]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Гурант
Member

Откуда:
Сообщений: 129
Maxx
в контексте вызова 1 хп, такой код и приведет к очистке содержимого таблицы
  FROM   _cur_cnct cc
  WHERE  cc.sp_id=@@SPID

	-- удаление данного SPID из текущих соединений
  DELETE 
  FROM   _cur_cnct
  WHERE  sp_id=@@SPID   
-------------------------------------
Jedem Das Seine


Не понял утверждения. И почему был взят кусок кода из предыдущего Select-а
18 сен 09, 17:42    [7680880]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Гурант
Member

Откуда:
Сообщений: 129
Glory
Гурант
И что! Никаких мыслей?

Вы хотите сказать, что WHERE sp_id=@@SPID не работает что ли ?


Вот именно. Я сам в непонятках...
18 сен 09, 17:43    [7680886]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Гурант


Не понял утверждения. И почему был взят кусок кода из предыдущего Select-а


я понял что ето код одной процедуры,исходя из вашего описания ??

Гурант
[процедура _cmn_rgstr_del_cnnct_spid содержит код:

-- перенос текущих соединений SPID в прошлые соединения
INSERT _old_cnct
SELECT cc.id AS id_cur_cnct, cc.sp_id, cc.log_in, cc.usr_name,
cc.cnct_date, GETDATE() AS unrg_date, cc.is_admin
FROM _cur_cnct cc
WHERE cc.sp_id=@@SPID

-- удаление данного SPID из текущих соединений
DELETE
FROM _cur_cnct
WHERE sp_id=@@SPID


Вопрос: В чём наколка то?
18 сен 09, 17:47    [7680915]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
Гурант
Glory
Гурант
И что! Никаких мыслей?

Вы хотите сказать, что WHERE sp_id=@@SPID не работает что ли ?


Вот именно. Я сам в непонятках...

Как то не верится
18 сен 09, 17:47    [7680917]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Гурант
Member

Откуда:
Сообщений: 129
всплыли новые обстоятельства. Т.к. прога не моя, то после долгих изысканий в глубине кода обнаружил следующее

 INSERT _old_cnct
  SELECT cc.id AS id_cur_cnct, cc.sp_id, cc.log_in, cc.usr_name, 
         cc.cnct_date, GETDATE() AS unrg_date, cc.is_admin, 0 AS is_crrct
  FROM   _cur_cnct cc 
  WHERE  cc.sp_id<>@@SPID AND NOT EXISTS
         (SELECT * FROM master..sysprocesses ms	
          WHERE    ms.dbid>0 AND cc.sp_id=ms.spid)
          
  IF @@ERROR>0 GOTO EXEC_ERR

					-- удаление потерянных текущих соединений
  DELETE _cur_cnct
  FROM   _cur_cnct cc
  WHERE  cc.sp_id<>@@SPID AND NOT EXISTS
         (SELECT * FROM master..sysprocesses ms 
          WHERE    ms.dbid>0 AND ms.spid = cc.sp_id)

В принципе то-же самое, но с привязкой к таблице процессов. Это все вынесено в отдельную SP. Если эту процедуру отключить - коннекты не рвутся.
21 сен 09, 13:05    [7686661]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> В принципе то-же самое, но с привязкой к таблице процессов. Это все
> вынесено в отдельную SP. Если эту процедуру отключить - коннекты не рвутся.

фигасе "то же самое". совсем же другое условие.
а прав-то хватает тому, кто эту процедуру запускает?
а то, без разрешения "view server state" (как минимум) в sysprocesses
пользователь никого кроме себя и системных процессов не увидит.

Posted via ActualForum NNTP Server 1.4

21 сен 09, 13:14    [7686726]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

* и системных процессов

пардон, их тоже не увидит, но сути это не меняет.

Posted via ActualForum NNTP Server 1.4

21 сен 09, 13:17    [7686746]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Гурант
Member

Откуда:
Сообщений: 129
не могу врубиться:
поставил себе Microsoft SQL Server Management Studio, а там нет доступа к таблице master..sysprocesses. только к представлениям sys.sysprocesses - у него права PUBLIC.Выборка
Этого достаточно?
21 сен 09, 13:51    [7686993]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
Гурант
не могу врубиться:
поставил себе Microsoft SQL Server Management Studio, а там нет доступа к таблице master..sysprocesses. только к представлениям sys.sysprocesses - у него права PUBLIC.Выборка
Этого достаточно?


BOL
If a user has VIEW SERVER STATE permission on the server, the user will see all executing sessions in the instance of SQL Server; otherwise, the user will see only the current session.
21 сен 09, 13:55    [7687013]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Гурант
Member

Откуда:
Сообщений: 129
Glory
Гурант
не могу врубиться:
поставил себе Microsoft SQL Server Management Studio, а там нет доступа к таблице master..sysprocesses. только к представлениям sys.sysprocesses - у него права PUBLIC.Выборка
Этого достаточно?


BOL
If a user has VIEW SERVER STATE permission on the server, the user will see all executing sessions in the instance of SQL Server; otherwise, the user will see only the current session.


Спасибо, я это уже понял
Где эти статусы посмотреть можно - в представлениях я ничего похожего не нашел
21 сен 09, 14:21    [7687178]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
Что за "эти статусы" ?
21 сен 09, 14:21    [7687184]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Гурант
Member

Откуда:
Сообщений: 129
"VIEW SERVER STATE" и прочие, думаю это не единственный статус (право)
21 сен 09, 14:35    [7687307]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
Гурант
"VIEW SERVER STATE" и прочие, думаю это не единственный статус (право)

Все права всегда назначались командой GRANT
21 сен 09, 14:37    [7687332]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Гурант
Member

Откуда:
Сообщений: 129
... или галочкой в соответствующей форме SQL Server Management Studio

Народ! Ну знаю я что не шарю в MSSQL, знаю!
Посоветуйте - что сделать то надо, без подколок
21 сен 09, 15:50    [7687867]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
USE master
GO

GRANT VIEW SERVER STATE TO public
21 сен 09, 15:55    [7687886]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Glory
Member

Откуда:
Сообщений: 104760
Гурант
... или галочкой в соответствующей форме SQL Server Management Studio

Народ! Ну знаю я что не шарю в MSSQL, знаю!
Посоветуйте - что сделать то надо, без подколок

И что мешает зайти в свойства логина и в закладке Securables поставить нужные галочки ?
Заодно там же можете нажать Script и увидеть как эти галочки выглядят в виде команд
21 сен 09, 15:57    [7687897]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Гурант
Member

Откуда:
Сообщений: 129
pkarklin
USE master
GO

GRANT VIEW SERVER STATE TO public


Спасибо! помогло.
Просто странно - пытаюсь найти такую настройку через Менеджер - не получается. Только запуском скрипта
21 сен 09, 16:55    [7688292]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
Гурант
pkarklin
USE master
GO

GRANT VIEW SERVER STATE TO public


Спасибо! помогло.
Просто странно - пытаюсь найти такую настройку через Менеджер - не получается. Только запуском скрипта

Свойства базы, права.
21 сен 09, 16:57    [7688309]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Express Edition 2008  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
Ozerov
Гурант
pkarklin
USE master
GO

GRANT VIEW SERVER STATE TO public


Спасибо! помогло.
Просто странно - пытаюсь найти такую настройку через Менеджер - не получается. Только запуском скрипта

Свойства базы, права.



*Сервера, конечно же.
21 сен 09, 17:01    [7688330]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить