Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Создание глобальной переменно  [new]
Pupkin
Member

Откуда:
Сообщений: 115
Как создать глобальную переменную, которая живет до перезагрузки сервера и видна из любого соединения? Например так:

declare VAR int -- VAR - глобальная переменная
set VAR=1

в любом месте (и времени) могу сделать такое:

if(select isNull(VAR,0))=1 делать так ...
else делать сяк ...

Как ?
1 ноя 13, 18:50    [15066847]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
записать занчение в таблицу ,или использовать контекст инфо
1 ноя 13, 18:51    [15066849]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Pupkin
Member

Откуда:
Сообщений: 115
создавать временную таблицу, раздавать права ... не думаю, что здорово.
Использовать контекст инфо - поясните поподробнее, что имеете в виду
1 ноя 13, 19:02    [15066902]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
step_ks
Member

Откуда:
Сообщений: 936
Pupkin
Как создать глобальную переменную, которая живет до перезагрузки сервера и видна из любого соединения?

и из любой базы или у каждой своя?
1 ноя 13, 20:30    [15067167]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Pupkin
создавать временную таблицу, раздавать права ... не думаю, что здорово.
Использовать контекст инфо - поясните поподробнее, что имеете в виду
Не давайте права на таблицу. Сделайте функцию и дайте на неё права роли public.
1 ноя 13, 22:26    [15067626]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Roul_Duke
Member

Откуда: Киев
Сообщений: 89
Pupkin,
SQLCLR можно попробовать
1 ноя 13, 22:50    [15067723]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Roul_Duke
Member

Откуда: Киев
Сообщений: 89
Pupkin,
что-то типа этого, http://www.sqltreeo.com/wp/static-or-global-variables-in-t-sql-using-clr-udt/
1 ноя 13, 22:56    [15067748]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
step_ks
Member

Откуда:
Сообщений: 936
Pupkin, вы бы разъяснили, зачем потребовалась эта глобальная переменная.
+ на форуме уже есть обсуждения подобных тем.
1 ноя 13, 22:56    [15067749]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
step_ks
Pupkin, вы бы разъяснили, зачем потребовалась эта глобальная переменная.
Мыслит как может.
2 ноя 13, 01:11    [15068181]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34619
Pupkin
создавать временную таблицу, раздавать права ... не думаю, что здорово.
Использовать контекст инфо - поясните поподробнее, что имеете в виду


Зря не думаешь, это здорово.
2 ноя 13, 06:59    [15068569]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Maxx
или использовать контекст инфо
Зря вы это говорите молодняку. Вы же знаете сувать пальцы в розетку они горазд.

Контекст инфо - это некоторое одно единственное поле размером 128 байт и активное на всю сессию/соедиение (умирает вместе с ней). Сделано для определения контекста исполнения. К этому понятию также относится, контекст пользователя - его идентификатор, аля контекст среды, типа текущий язык, и всякое подобное.
Хотя уже есть информация и о пользователе и о языке и других параметров соединения (аля XACT_ABORT, ANSI_NULLS и т.п.), но для расширения и пользовательской кастомизации добавили это поле.

Если кто-то его будет использовать (застолбит для себя) не по назначению, тем самым не даст в дальнейшем использовать его по назначению. Кароче - лучше не лезть, если не уверен/не знаешь.
И по условию задачи (которая живет до перезагрузки сервера) она не подходит.

Pupkin, возможно вы удивитесь, но помимо императивного программирования есть ещё декларативное. Может в вашей школе это будут рассказывать чуть позже.
Так вот, там нет переменных, вааще. Ни всяких IF / WHILE и подобной чуши.

SQL основан на реляционной алгебре, т.е. на теории предикатов первого порядка (как и Пролог кстати).
Большинство задач можно решить в одну две команды, а не простынёй текста, как обычно это любят делать императивисты.
Так что переменные вам в большинстве случаев просто не понадобятся (не считая входных).
Чтоб вам было легче переключится - считайте таблицы переменными, притом глобальными.
Кстати, есть локальные табличные переменные и их даже можно передавать в процедуры.
2 ноя 13, 13:37    [15068999]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Pupkin
Member

Откуда:
Сообщений: 115
Знаете уважаемый Mnior, Вы не поверите, я действительно удивился, право.
И догадываюсь по слогу Вашему, что мы с Вами душой оченно сродственны по тяге к знаниям.
И мучает меня еще одна проблема (каковой Вы не можете не владеть): каковы достоинства применения реляционной инквизиции против предикативной гравитации применительно к императивической алгебре.
Пожалуйста снизойдите ко мне от своего корифейства.
Спасибо!
----
Однако и всем спасибо
4 ноя 13, 01:42    [15073418]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Pupkin
Member

Откуда:
Сообщений: 115
Maxx
... или использовать контекст инфо

Погуглил и (, не претендуя на оптимальность,) попробовал такое:

declare @info varbinary(128)
set @info = cast(123 as binary(1))
set CONTEXT_INFO @info
select cast(substring(CONTEXT_INFO(),1,1)as int)

и получил свою 123-ку.
Выгрузил management studio, каковым это пробовал и загрузил опять и ...

select cast(substring(CONTEXT_INFO(),1,1)as int) выдал NULL

Увы, похоже, что не живет эта штучка (CONTEXT_INFO) до перезагрузки сервера. Одна надежда на временную таблицу.

PS
В который уж раз подумал, что микрософт в своих творчествах руководствуется кодексом:
"Если что-нибудь осуществимо через задницу, то это должно быть именно через оную"
4 ноя 13, 14:32    [15074287]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Maxx
Member [скрыт]

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

MSDN
вы вторую строчку в хелпе читали ?
4 ноя 13, 14:38    [15074302]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Pupkin
Maxx
... или использовать контекст инфо

Погуглил и (, не претендуя на оптимальность,) попробовал такое:

declare @info varbinary(128)
set @info = cast(123 as binary(1))
set CONTEXT_INFO @info
select cast(substring(CONTEXT_INFO(),1,1)as int)

и получил свою 123-ку.
Выгрузил management studio, каковым это пробовал и загрузил опять и ...

select cast(substring(CONTEXT_INFO(),1,1)as int) выдал NULL

Увы, похоже, что не живет эта штучка (CONTEXT_INFO) до перезагрузки сервера. Одна надежда на временную таблицу.

PS
В который уж раз подумал, что микрософт в своих творчествах руководствуется кодексом:
"Если что-нибудь осуществимо через задницу, то это должно быть именно через оную"


не пробовали еще?
4 ноя 13, 14:53    [15074356]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Glory
Member

Откуда:
Сообщений: 104760
Pupkin
Выгрузил management studio, каковым это пробовал и загрузил опять и ...

select cast(substring(CONTEXT_INFO(),1,1)as int) выдал NULL

Увы, похоже, что не живет эта штучка (CONTEXT_INFO) до перезагрузки сервера.Одна надежда на временную таблицу.

Вы хотите, чтобы какое-то значение хранилось в памяти сервера навсегда ?
И какое отношение окончание коннекта имеет к перезагрузке сервера ?


Pupkin
В который уж раз подумал, что микрософт в своих творчествах руководствуется кодексом:
"Если что-нибудь осуществимо через задницу, то это должно быть именно через оную"

Как будто это майкрософт заставляет вас решать вашу задачу выбранными вами же способом.
4 ноя 13, 15:04    [15074400]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
Pupkin
Одна надежда на временную таблицу.
Ну попробуйте. Следующий пост будет: "Одна надежда на постоянную таблицу"
4 ноя 13, 15:54    [15074540]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
aleks2
Guest
Ну чо вы гнобите бедного пупкина?
Рассказали бы лучче про @@SPID, прелести постоянной таблицы и фильтрованные VIEW.

Он бы ишо первым плюнул в сторону оракла.
4 ноя 13, 15:58    [15074548]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
+ Pupkin
Pupkin
И мучает меня еще одна проблема (каковой Вы не можете не владеть): каковы достоинства применения реляционной инквизиции против предикативной гравитации применительно к императивической алгебре.
Прошу меня извинить, но "по слову вашему" я также решу отклонится от подобной бесполезной дискуссии про банальные вещи. Так что видимо вам суждено так и оставаться с этой проблемой наедине.
Но выражения "императивная алгебра" и "предикативная гравитация" просто атас. Аффтар жжот. Пиши исчо.

Pupkin
Погуглил и попробовал такое: CONTEXT_INFO
Читаем по диагонали. Почему-то не удивительно.

Pupkin
В который уж раз подумал, что микрософт в своих творчествах руководствуется кодексом:
"Если что-нибудь осуществимо через задницу, то это должно быть именно через оную"
Какой тонкий троллинг, видимо на "использовать по назначению", или как говорят в народе "Забивать гвозди микроскопом".

Во всём виновата конечно же MS, ибо не позволяет, понимаешь, реляционной алгеброй фигачить трушный императивизмъ.
Ай, яй, яй. Феодальная тирания против свободного пролетариата.
А вообще тематика топика прям так и режет адекватом.
4 ноя 13, 15:59    [15074554]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
aleks2
Он бы ишо первым плюнул в сторону оракла.
А оно нам надо?

Счастье в неведении ©
4 ноя 13, 16:03    [15074566]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Pupkin
Member

Откуда:
Сообщений: 115
Glory
Вы хотите, чтобы какое-то значение хранилось в памяти сервера навсегда ?

Нет, не навсегда, а до перезагрузки.

Glory
И какое отношение окончание коннекта имеет к перезагрузке сервера ?

Да никакого. С чего Вы взяли?
Я хочу, чтобы "Это Значение" было одинаково для всех и его можно было бы увидеть (и, возможно, изменить) мне на локальном сервере, коллеге Тряпкину из Соединенных Штатов Китая и прочим, приконнектившимся к серверу в пределах жизни сервера. После перезагрузки "Это Значение" может быть иным, чем "до того", но одинаковым для всех.

Glory
Как будто это майкрософт заставляет вас решать вашу задачу выбранными вами же способом.

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

invm
Ну попробуйте. Следующий пост будет: "Одна надежда на постоянную таблицу"

Попробую конечно. И не сомневайтесь

aleks2
Ну чо вы гнобите бедного пупкина?

Не, все нормально. Даже интересно. Вот почитайте (выше) про "предикаты первого порядка". Сильно познавательно в рамках темы.

Mnior
Но выражения "императивная алгебра" и "предикативная гравитация" просто атас. Аффтар жжот. Пиши исчо.

Да ладно скромничать, это-ж я тебя цитирую. Это лучче ты пиши, и лучче большими букавкамы, а то спрятал и не видать ничо. Стисьняисся противный ?
4 ноя 13, 17:12    [15074819]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Glory
Member

Откуда:
Сообщений: 104760
Pupkin
Можно привести достаточно примеров, кодда заявленный функционал просто не работает или столь сложен, что его патологически не применяют, зато работает открытый умельцами, не заявленный функционал. Оценивая Ваш опыт предполагаю, что Вы лукавите.

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

Pupkin
Я хочу, чтобы "Это Значение" было одинаково для всех и его можно было бы увидеть (и, возможно, изменить) мне на локальном сервере, коллеге Тряпкину из Соединенных Штатов Китая и прочим, приконнектившимся к серверу в пределах жизни сервера. После перезагрузки "Это Значение" может быть иным, чем "до того", но одинаковым для всех.

А откуда оно возьмется на сервере после перезагрузки ?
4 ноя 13, 17:17    [15074829]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Pupkin
Member

Откуда:
Сообщений: 115
Glory
Pupkin
Можно привести достаточно примеров, кодда заявленный функционал просто не работает

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

Отвечу, даю слово, но чуть позже и не в этой теме.

Glory
Pupkin
Я хочу, чтобы "Это Значение" было одинаково для всех и его можно было бы увидеть (и, возможно, изменить) мне и прочим приконнектившимся

А откуда оно возьмется на сервере после перезагрузки ?

Само ниоткуда не возьмется. Его создаст первый из (я, коллега Тряпкин ...)

if оно is null
или
if exists(оно)
then create или declare и далее set или insert
4 ноя 13, 17:55    [15074948]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Glory
Member

Откуда:
Сообщений: 104760
Pupkin
Само ниоткуда не возьмется. Его создаст первый из (я, коллега Тряпкин ...)

if оно is null
или
if exists(оно)
then create или declare и далее set или insert

И чем это лучше постоянной таблицы ?

Pupkin
Отвечу, даю слово, но чуть позже и не в этой теме.

Буду ждать
4 ноя 13, 17:59    [15074965]     Ответить | Цитировать Сообщить модератору
 Re: Создание глобальной переменно  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4256
Pupkin
Я хочу, чтобы "Это Значение" было одинаково для всех и его можно было бы увидеть (и, возможно, изменить) мне на локальном сервере, коллеге Тряпкину из Соединенных Штатов Китая и прочим, приконнектившимся к серверу в пределах жизни сервера.


храните в registry
4 ноя 13, 20:42    [15075536]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить