Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
1317 / 536 / 67
Регистрация: 16.01.2013
Сообщений: 4,106

Можно ли сделать запрос, который будет выводить разную информацию в зависимости от пользователя которые используют sql server?

05.02.2013, 17:07. Показов 5895. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно сделать запрос который будет выводить разную информацию в зависимости от пользователя которые используют sql server?
на пример
пользователь manager, запрос выводит все по фильтру manager
пользователь manager28, запрос выводит все по фильтру manager28
это нужно чтобы интерфейс не делать под конкретного пользователя.

хочу сделать запрос который будет для всех один но в зависимости от имени входа в windows (логина sql server) меняется запрос. иначе мне придется каждому пользователю, а их 30 делать из за этого от дельно запросы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.02.2013, 17:07
Ответы с готовыми решениями:

Можно ли сделать бота который будет проверять данные пользователя?
Можно ли с PHP сделать бота который будет проверять данные пользователя, которые можно посмотреть обычному пользователю, не модератору, и...

Запустить другой пакетный файл, который будет выводить информацию о файлах в корне диска C:
Помогите решить задачу 8. Разработать пакетный файл для запуска другого пакетного файла, который, в свою очередь, будет выводить...

Где можно найти информацию по разработке приложений на asp, которые используют технологии XML & XSLT?
Здравствуйте, уважаемые. Подскажите, пожайлуста, где можно найти информацию по разработке приложений на asp, которые используют...

22
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
05.02.2013, 17:38
T-SQL
1
select SUSER_NAME()
1
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
05.02.2013, 17:41
А чем не подходит функция CURRENT_USER?
1
1317 / 536 / 67
Регистрация: 16.01.2013
Сообщений: 4,106
06.02.2013, 10:29  [ТС]
можно ссылку на примеры или где можно почитать?
0
1317 / 536 / 67
Регистрация: 16.01.2013
Сообщений: 4,106
06.02.2013, 10:29  [ТС]
можно ссылку на примеры или почитать где можно?
0
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
06.02.2013, 10:34
Майкрософт msdn, например. Там описаны и разбираются CURRENT_USER, SYSTEM_USER, SUSER_NAME, ... .
0
1317 / 536 / 67
Регистрация: 16.01.2013
Сообщений: 4,106
06.02.2013, 11:02  [ТС]
как сюда можно вставить код "select SUSER_NAME()" чтобы проверял sql server под "manager4" зашел в пользователь или "manager5" и вставлял соотведсвующий параметр для запроса
T-SQL
1
2
3
4
SELECT firma.kodFirm, firma.nameFirm, firma.abbr, firma.sfera, firma.region, firma.nomDog, firma.dataDog, firma.kontract, firma.FIO, firma.doljnost, firma.tel, firma.adres, firma.sait, firma.EMail, firma.proces, firma.DataKontacta, firma.ОКомпании
FROM firma
WHERE (((firma.kodManager)="manager4"))
GROUP BY firma.kodFirm, firma.nameFirm, firma.abbr, firma.sfera, firma.region, firma.nomDog, firma.dataDog, firma.kontract, firma.FIO, firma.doljnost, firma.tel, firma.adres, firma.sait, firma.EMail, firma.proces, firma.DataKontacta, firma.ОКомпании;
0
107 / 107 / 5
Регистрация: 28.12.2012
Сообщений: 207
06.02.2013, 13:24
T-SQL
1
2
3
4
SELECT firma.kodFirm, firma.nameFirm, firma.abbr, firma.sfera, firma.region, firma.nomDog, firma.dataDog, firma.kontract, firma.FIO, firma.doljnost, firma.tel, firma.adres, firma.sait, firma.EMail, firma.proces, firma.DataKontacta, firma.ОКомпании
FROM firma
WHERE firma.kodManager = (SELECT SUSER_NAME())
GROUP BY firma.kodFirm, firma.nameFirm, firma.abbr, firma.sfera, firma.region, firma.nomDog, firma.dataDog, firma.kontract, firma.FIO, firma.doljnost, firma.tel, firma.adres, firma.sait, firma.EMail, firma.proces, firma.DataKontacta, firma.ОКомпании;
0
1317 / 536 / 67
Регистрация: 16.01.2013
Сообщений: 4,106
06.02.2013, 15:23  [ТС]
Цитата Сообщение от asd24 Посмотреть сообщение
T-SQL
1
2
3
4
SELECT firma.kodFirm, firma.nameFirm, firma.abbr, firma.sfera, firma.region, firma.nomDog, firma.dataDog, firma.kontract, firma.FIO, firma.doljnost, firma.tel, firma.adres, firma.sait, firma.EMail, firma.proces, firma.DataKontacta, firma.ОКомпании
FROM firma
WHERE firma.kodManager = (SELECT SUSER_NAME())
GROUP BY firma.kodFirm, firma.nameFirm, firma.abbr, firma.sfera, firma.region, firma.nomDog, firma.dataDog, firma.kontract, firma.FIO, firma.doljnost, firma.tel, firma.adres, firma.sait, firma.EMail, firma.proces, firma.DataKontacta, firma.ОКомпании;
не работает, находит только если в базе указать в "kodManager" имя пользователя "SELECT SUSER_NAME()", нужно "manager4" в домене (domen\manager4)

Добавлено через 1 час 21 минуту
готов отблагодарить рублем кто поможет
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
06.02.2013, 16:19
Цитата Сообщение от ltv_1953 Посмотреть сообщение
А чем не подходит функция CURRENT_USER?
CURRENT_USER SUSER_NAME()
dbo<Domain>\<Login>

Вариант использования:
T-SQL
1
2
3
4
5
6
7
8
9
10
CREATE TABLE dbo.users(
    user_id int IDENTITY(1,1) NOT NULL CONSTRAINT PK_users PRIMARY KEY CLUSTERED,
    user_login nvarchar(128) NOT NULL CONSTRAINT UQ_users UNIQUE,
    user_FIO nvarchar(200) NULL,
    dt_register date NULL,
    dt_connect datetime NULL,
    dt_exit datetime NULL,
    hello_text nvarchar(500) NULL
   )
GO
T-SQL
1
2
3
4
5
6
7
8
declare @user_id int
SELECT @user_id = user_id FROM dbo.users WHERE user_login=SUSER_NAME()
IF @user_id is null
   PRINT 'GO OUT, Anonymous'
ELSE BEGIN
   UPDATE dbo.users SET dt_connect=GETDATE() WHERE user_id=@user_id
   ...
END
1
1317 / 536 / 67
Регистрация: 16.01.2013
Сообщений: 4,106
07.02.2013, 10:14  [ТС]
Цитата Сообщение от cygapb-007 Посмотреть сообщение
Вариант использования:
я понял что все предлагают создать таблицу с пользователями. но на sql server есть уже безопасность раздел и там все пользователи sql server и AD. не ужели их нельзя ни как задействовать и БД делать пользователей? да и задача не просто делать ограничения они уже есть, а сделать один интерфейс чтобы под разными учетками в домене работала под своего пользователя и менялся ЗАПРОС. иначе придется мне делать под каждого пользователя свой интерфейс
0
1317 / 536 / 67
Регистрация: 16.01.2013
Сообщений: 4,106
07.02.2013, 10:45  [ТС]
Задача следующая.
Должна быть БД предприятий CRM (Система управления взаимоотношениями с клиентами). Каждый менеджер, а их 30 чел, должен видеть только свою базу. не хочется делать для каждого отдельно БД так как потом нужно отчеты общие делать для руководства. Думал сделать интерфейс который записывал в поле имя пользователя при создании нового предприятия, а список предприятий выводил запросом для этого пользователя, но тогда получается для каждого пользователя свой интерфейс а это работа умноженная на 30!
вот и пытаюсь узнать как можно в одном интерфейсе для всех сделать запрос который выводит только тот список предприятий в зависимости от какой учетки открыли этот интефейс. в домене есть AD (Active Directory («Активные директории», AD), в sql server уже перенес все учетки и доступ есть с ограничениями. а вот запрос не знаю как сделать общий.
посоветуйте что нибудь
0
107 / 107 / 5
Регистрация: 28.12.2012
Сообщений: 207
07.02.2013, 11:04
Цитата Сообщение от evgenii3000 Посмотреть сообщение
не работает, находит только если в базе указать в "kodManager" имя пользователя "SELECT SUSER_NAME()", нужно "manager4" в домене (domen\manager4)
Не совсем понял что Вас не устроило в моём запросе? Не нужно имя домена в SUSER_NAME()? Его можно обрезать при желании:
T-SQL
1
2
3
4
5
-- Статический домен: (domen\manager4)
SELECT SUBSTRING(SUSER_NAME(), 7, 20)
 
-- Динамический
SELECT SUBSTRING(SUSER_NAME(), CHARINDEX('\', SUSER_NAME()) + 1, LEN(SUSER_NAME()) - CHARINDEX('\', SUSER_NAME()))
т.е. теперь Ваш запрос будет выглядеть след.образом:
T-SQL
1
2
3
4
SELECT firma.kodFirm, firma.nameFirm, firma.abbr, firma.sfera, firma.region, firma.nomDog, firma.dataDog, firma.kontract, firma.FIO, firma.doljnost, firma.tel, firma.adres, firma.sait, firma.EMail, firma.proces, firma.DataKontacta, firma.ОКомпании
FROM firma
WHERE firma.kodManager = (SELECT SUBSTRING(SUSER_NAME(), 7, 20))
GROUP BY firma.kodFirm, firma.nameFirm, firma.abbr, firma.sfera, firma.region, firma.nomDog, firma.dataDog, firma.kontract, firma.FIO, firma.doljnost, firma.tel, firma.adres, firma.sait, firma.EMail, firma.proces, firma.DataKontacta, firma.ОКомпании;
при этом колонка KodManager должна быть типа varchar либо nvarchar
Таким образом у Вас и будет происходить "разделение интерфейса" в зависимости от пользователя..
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
07.02.2013, 11:13
Единственно, что могу посоветовать - спроектировать схему данных. Выделить сущности, определить связи. Далее переходить к физической модели
0
1317 / 536 / 67
Регистрация: 16.01.2013
Сообщений: 4,106
07.02.2013, 11:53  [ТС]
Цитата Сообщение от asd24 Посмотреть сообщение
SELECT firma.kodFirm, firma.nameFirm, firma.abbr, firma.sfera, firma.region, firma.nomDog, firma.dataDog, firma.kontract, firma.FIO, firma.doljnost, firma.tel, firma.adres, firma.sait, firma.EMail, firma.proces, firma.DataKontacta, firma.ОКомпании
FROM firma
WHERE firma.kodManager = (SELECT SUBSTRING(SUSER_NAME(), 7, 20))
GROUP BY firma.kodFirm, firma.nameFirm, firma.abbr, firma.sfera, firma.region, firma.nomDog, firma.dataDog, firma.kontract, firma.FIO, firma.doljnost, firma.tel, firma.adres, firma.sait, firma.EMail, firma.proces, firma.DataKontacta, firma.ОКомпании;
Ошибка синтаксиса в выражении запроса 'firma.kodManager = (SELECT SUBSTRING(SUSER_NAME(), 7, 20))'.
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
07.02.2013, 12:01
Цитата Сообщение от evgenii3000 Посмотреть сообщение
Каждый менеджер, а их 30 чел, должен видеть только свою базу.
А потом заболел - и работа встала, передать полномочия на время болезни - не предусмотрено
0
107 / 107 / 5
Регистрация: 28.12.2012
Сообщений: 207
07.02.2013, 12:03
Цитата Сообщение от evgenii3000 Посмотреть сообщение
Ошибка синтаксиса в выражении запроса 'firma.kodManager = (SELECT SUBSTRING(SUSER_NAME(), 7, 20))'.
Давайте начнем с самого начала:
cкиньте скрипт на создание таблицы firma, а также несколько тестовых данных для колонки kodManager
1
1317 / 536 / 67
Регистрация: 16.01.2013
Сообщений: 4,106
07.02.2013, 12:08  [ТС]
прикрепил 2010 access
Вложения
Тип файла: rar manager4.rar (87.8 Кб, 2 просмотров)
0
1317 / 536 / 67
Регистрация: 16.01.2013
Сообщений: 4,106
07.02.2013, 12:09  [ТС]
Цитата Сообщение от cygapb-007 Посмотреть сообщение
А потом заболел
руководитель будет видеть все фирмы без фильтра
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
07.02.2013, 12:19
Цитата Сообщение от evgenii3000 Посмотреть сообщение
руководитель будет видеть все фирмы без фильтра
и выполнять работу за всех заболевших менеджеров?? забавный такой руководитель...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.02.2013, 12:19
Помогаю со студенческими работами здесь

Написать запрос, который будет выводить только имена состоящие из 4 букв
Имеем таблицу с именами и фамилиями. Есть пару строк, где имен не указано, только фамилии. Кто подскажет, какой оператор использовать для...

Не могу вывести информацию с SQL SERVER'a на программу для текущего пользователя
У меня тема &quot;Клуб знакомств&quot;. Создал БД на SQL Server'e (таблицы, представления, функции, процедуры, триггера) для своей программы....

Сделать аутентификацию пользователя по паролю, и в зависимости от пароля выдавать ту или иную информацию
Есть необходимость сделать аутентификацию пользователя по паролю, и в зависимости от пароля выдавать ту или иную информацию. Использовать...

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

Где в реестре можно найти разную информацию о ПК?
Привет всем, нужно найти информацию о местонахождении информации о видеокарте, ОЗУ в реестре ( если есть) Вот пример местонахождения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru