powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / SQLCLR статический List<>: подскажите идею
4 сообщений из 4, страница 1 из 1
SQLCLR статический List<>: подскажите идею
    #39224104
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего хотелось бы сделать, упрощенно, на примере так
есть SQL CLR ассембли, в ней три процедуры

1. AddUser
2.RemoveUser
3.GetList

каждый юзер, запускающий клиентское приложение вызвает процедуру AddUser со своим именем, при выходе удаляет RemoveUser
всегда есть возмоность вызвать GetList и получить список юзеров


НО: нужна ассембли WITH PERMISSION_SET = SAFE;
что собственно дает ощибку при использовании статического списка.

Как можно решить проблему?
...
Рейтинг: 0 / 0
SQLCLR статический List<>: подскажите идею
    #39224124
Сергей В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
SELECT *
FROM sys.dm_exec_sessions 
where status = 'running'
...
Рейтинг: 0 / 0
SQLCLR статический List<>: подскажите идею
    #39224136
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей В.
Код: sql
1.
2.
3.
SELECT *
FROM sys.dm_exec_sessions 
where status = 'running'



Задача другая, надо как описано выше. Суть не в том, как получить список, а как реализовать.

Ясно, что статические не пройдут, похоже придется в таблице держать общие данные.
...
Рейтинг: 0 / 0
SQLCLR статический List<>: подскажите идею
    #39238047
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть пример, создается с SAFE, даже как-то странно, но рабоатет.
Вопрос: что будет с _KeyValuePairs , если эти функции будут вызываться параллельно многими юзерами?
Lock поставить нельзя, SAFE не позволяет.

Код: c#
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.
public class CachingStuff
        {
            private static readonly Hashtable _KeyValuePairs = new Hashtable();

            [SqlFunction(DataAccess = DataAccessKind.None, IsDeterministic = true)]
            public static SqlString GetKVP(SqlString KeyToGet)
            {
                if (_KeyValuePairs.ContainsKey(KeyToGet.Value))
                {
                    return _KeyValuePairs[KeyToGet.Value].ToString();
                }

                return SqlString.Null;
            }

            [SqlProcedure]
            public static void SetKVP(SqlString KeyToSet, SqlString ValueToSet)
            {
                if (!_KeyValuePairs.ContainsKey(KeyToSet.Value))
                {
                    _KeyValuePairs.Add(KeyToSet.Value, ValueToSet.Value);
                }

                return;
            }

            [SqlProcedure]
            public static void UnsetKVP(SqlString KeyToUnset)
            {
                _KeyValuePairs.Remove(KeyToUnset.Value);
                return;
            }
        }
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / SQLCLR статический List<>: подскажите идею
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]