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

Откуда:
Сообщений: 12
Добрый день!
Необходимо запросом SQL генерировать xml-ку, которая должна располагаться в личной папке пользователя windows, который запустил этот скрипт.
Вот тело скрипта

DECLARE @FN varchar(50)
DECLARE @SQL varchar (1000)
DECLARE @KORVET varchar (1000)
DECLARE @FILTR varchar (7)

set  @FILTR=6
set @FN = 'C:\Users\%userprofile%\Documents\test.xml'
set @SQL = 'sELECT KATEGORIQ_L_GOTNOSTI p_tiplg, snils p_snils, nom p_fam, prenom p_im, patronyme p_ot, ne_le p_dr, 1 s_mkb from patients where patients.patients_id=0'+@FILTR

exec sp_makewebtask @outputfile = @FN, @query = @SQL, @templatefile = 'C:\SOFTLINE\korvet.tpl'

Выходит сообщение:
Msg 16821, Level 11, State 1, Procedure sp_makewebtask, Line 131
SQL Web Assistant: Could not open the output file.

Как я понимаю SQL не знает путь 'C:\Users\%userprofile%\Documents\test.xml'
Если прописать конкретный путь, xml-ка нормально генерируется.

Пытался ввести переменную на %userprofile%, но у меня не получилось вытянуть из SQL имя текущего пользователя windows.

Прошу помощи!

Сообщение было отредактировано: 22 окт 15, 03:20
22 окт 15, 03:13    [18309678]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Buster Bunny
Member

Откуда:
Сообщений: 12
забыл написать, SQL 2005
22 окт 15, 03:24    [18309682]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
o-o
Guest
1. Ничего не надо писать перед %userprofile%,
оно и так включено в переменную.
2. У меня лично нет никакого "documents", зато есть "my documents"
3. Если не прокатит "%userprofile%\my documents\",
залезьте в свою процедуру и посмотрите, что там в строке 131 хотят.
4. Вы уверены, что попадете в папку юзера-исполнителя, а не в какое-нибудь c:\users\default?
У меня сервер под локал систем ходит, я админ, если его прошу сделать
xp_cmdshell 'echo %userprofile% > z:\TEMP\a.txt
выводится то самое c:\users\default
а был бы прокси и исполнитель не-админ, думаю, попало бы в папку учетки-прокси
22 окт 15, 08:36    [18309790]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Buster Bunny
у меня не получилось вытянуть из SQL имя текущего пользователя windows.

Может как-то так?
SELECT SUSER_NAME() AS [Login identification name of the user], 
SUSER_SNAME() AS [Login name associated with SID], 
SYSTEM_USER  AS [Current login]
22 окт 15, 08:40    [18309798]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Buster Bunny
Member

Откуда:
Сообщений: 12
Jovanny
Может как-то так?
SELECT SUSER_NAME() AS [Login identification name of the user], 
SUSER_SNAME() AS [Login name associated with SID], 
SYSTEM_USER  AS [Current login]



вот, что получилось
sa sa sa
Это не пользователь винды
22 окт 15, 09:05    [18309849]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Buster Bunny
Это не пользователь винды

если соединение произошло под sql login, то разумеется это не будет "пользователь винды"
22 окт 15, 09:19    [18309890]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Buster Bunny
Member

Откуда:
Сообщений: 12
o-o
1. Ничего не надо писать перед %userprofile%,
оно и так включено в переменную.

написал '%userprofile%\Documents\test.xml' - результат тот же
o-o
2. У меня лично нет никакого "documents", зато есть "my documents"

написал '%userprofile%\my documents\test.xml' - результат тот же
o-o
3. Если не прокатит "%userprofile%\my documents\",
залезьте в свою процедуру и посмотрите, что там в строке 131 хотят.

хм, не знаю где хранится эта процедура, она является системной SQL
o-o
4. Вы уверены, что попадете в папку юзера-исполнителя, а не в какое-нибудь c:\users\default?

У меня сервер под локал систем ходит, я админ, если его прошу сделать
xp_cmdshell 'echo %userprofile% > z:\TEMP\a.txt
выводится то самое c:\users\default
а был бы прокси и исполнитель не-админ, думаю, попало бы в папку учетки-прокси

Да, в винде в проводнике указываю этот путь и попадаю в папку "Мои документы" текущего пользователя.
22 окт 15, 09:22    [18309903]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Buster Bunny
Member

Откуда:
Сообщений: 12
Glory
Buster Bunny
Это не пользователь винды

если соединение произошло под sql login, то разумеется это не будет "пользователь винды"

согласен, но вход в программу происходит не под windows authentication
22 окт 15, 09:23    [18309912]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Buster Bunny
Да, в винде в проводнике указываю этот путь и попадаю в папку "Мои документы" текущего пользователя.

в винде в проводнике той же машины, где и mssql запущен ?
22 окт 15, 09:23    [18309914]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Buster Bunny
Glory
пропущено...

если соединение произошло под sql login, то разумеется это не будет "пользователь винды"

согласен, но вход в программу происходит не под windows authentication

И что вы тогда хотите от MSSQL ? Чтобы он зачем-то откуда-то узнал, как и кем там пользователь авторизовался у себя на рабочей станции ?
22 окт 15, 09:24    [18309918]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
Buster Bunny, вот похожая тема. А чем скрипт-то запускается? sqlcmd?
22 окт 15, 09:32    [18309960]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Buster Bunny
Member

Откуда:
Сообщений: 12
Serg_77m
Buster Bunny, вот похожая тема. А чем скрипт-то запускается? sqlcmd?

Запускается программой Медиалог.
22 окт 15, 09:40    [18310005]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
Buster Bunny
Запускается программой Медиалог.
И которая для всех пользователей подключается к серверу от имени sa? На стороне сервера их тогда никак не различить, придётся искать обходные пути.
22 окт 15, 10:06    [18310147]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Вот тело скрип
Guest
Buster Bunny,

это в целом вообще не задача субд про профили виндовых пользователей что-то там знать и в их папочки раскладывать

есть в какой-то момент понимание, кто что просит и куда это нужно ему положить - вот начиная с этого момента всё известное передавайте как параметры. формировалка xml при этом совершенно не обязана быть еще и раскладывалкой по папкам.
формировалка - выплюнула нечто
внешняя служба (батник/exe/что-то еще) - положила это нечто в нужное хранилище под нужным именем

с точки зрения сервера эти "c:\users" - это вообще трэш какой-то. это ж сервер. какие юзерс?
22 окт 15, 10:21    [18310250]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
o-o
Guest
Buster Bunny,
вы не понимаете, что и под чьей учеткой запускается.
я знаю про xp_cmdshell, и для него все работает именно так, как документировано.
а) виндовый юзер сисадмин. выполняться будет под учеткой сервера(1-ая картинка)
б) скульный юзер сисадмин. выполняться будет под учеткой сервера(2-ая картинка)
в) любой юзер с правами на запуск xp_cmdshell, но не сисадмин. выполнится под учеткой-прокси (3 картинка)
по техническим причинам больше не могу менять креденшелы этой учетки, пароль у ней протух,
в данный момент ошибка, хотя прокси сконфигурирован.
на ноуте сейчас изображу

К сообщению приложен файл. Размер - 123Kb
22 окт 15, 10:22    [18310260]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
o-o
Guest
Buster Bunny
o-o
залезьте в свою процедуру и посмотрите, что там в строке 131 хотят.

хм, не знаю где хранится эта процедура, она является системной SQL

ну, у вас может и системная, а у меня ее нет (см. 1-ое окно)
у меня 2008 R2.
но если она есть, смотрите ее текст через sp_helptext (2-ое окно на картинке)

К сообщению приложен файл. Размер - 57Kb
22 окт 15, 10:28    [18310320]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Buster Bunny
Member

Откуда:
Сообщений: 12
Serg_77m
Buster Bunny
Запускается программой Медиалог.
И которая для всех пользователей подключается к серверу от имени sa? На стороне сервера их тогда никак не различить, придётся искать обходные пути.

Нет, каждый юзер логинится в винду под своей учеткой, далее в Медиалог заходят, так же каждый под своей, она отличается от виндовой, но она является учеткой SQL
например:
в винду заходит под учеткой: Term123
в Медиалог: Sharonov
22 окт 15, 10:35    [18310367]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
o-o
Guest
Вот картинка с ноута.
Прокси аккаунт -- локальный админ
На картинке его директория из %userprofile%
Исполнитель -- скульный логин l, сисадмином не является

К сообщению приложен файл. Размер - 46Kb
22 окт 15, 10:38    [18310381]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Buster Bunny
Member

Откуда:
Сообщений: 12
o-o
Buster Bunny
пропущено...

хм, не знаю где хранится эта процедура, она является системной SQL

ну, у вас может и системная, а у меня ее нет (см. 1-ое окно)
у меня 2008 R2.
но если она есть, смотрите ее текст через sp_helptext (2-ое окно на картинке)

Эту процедуру необходимо включить в Surface Area

К сообщению приложен файл. Размер - 89Kb
22 окт 15, 10:39    [18310385]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
Buster Bunny
Нет, каждый юзер логинится в винду под своей учеткой, далее в Медиалог заходят, так же каждый под своей, она отличается от виндовой, но она является учеткой SQL
например:
в винду заходит под учеткой: Term123
в Медиалог: Sharonov
Понятно, но судя по этому 18309849, SQL-сервер видит их как sa. Программы Медиалог я не знаю, но подозреваю, что встроенную аутентификацию SQL-сервера она не использует. Соответственно, сервер не знает даже имён пользователей.
22 окт 15, 10:42    [18310402]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Buster Bunny
Member

Откуда:
Сообщений: 12
o-o
Buster Bunny,
вы не понимаете, что и под чьей учеткой запускается.
я знаю про xp_cmdshell, и для него все работает именно так, как документировано.
а) виндовый юзер сисадмин. выполняться будет под учеткой сервера(1-ая картинка)
б) скульный юзер сисадмин. выполняться будет под учеткой сервера(2-ая картинка)
в) любой юзер с правами на запуск xp_cmdshell, но не сисадмин. выполнится под учеткой-прокси (3 картинка)
по техническим причинам больше не могу менять креденшелы этой учетки, пароль у ней протух,
в данный момент ошибка, хотя прокси сконфигурирован.
на ноуте сейчас изображу

Будет использоваться вариант Б, но в Вашем примере отображена не его папка, а папка пользователя по умолчанию. Default user
22 окт 15, 10:44    [18310410]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Buster Bunny
а папка пользователя по умолчанию. Default user

Потому что sql login-ы не имеют никакх папок
22 окт 15, 10:47    [18310431]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Buster Bunny
Member

Откуда:
Сообщений: 12
Serg_77m
Buster Bunny
Нет, каждый юзер логинится в винду под своей учеткой, далее в Медиалог заходят, так же каждый под своей, она отличается от виндовой, но она является учеткой SQL
например:
в винду заходит под учеткой: Term123
в Медиалог: Sharonov
Понятно, но судя по этому 18309849, SQL-сервер видит их как sa. Программы Медиалог я не знаю, но подозреваю, что встроенную аутентификацию SQL-сервера она не использует. Соответственно, сервер не знает даже имён пользователей.

Всё верно.
Я не очень хорошо знаю SQL, поэтому у меня и возник вопрос, может ли SQL каким-нибудь образом получить имя текущего пользователя винды.
22 окт 15, 10:48    [18310435]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Buster Bunny
Member

Откуда:
Сообщений: 12
Glory
Buster Bunny
а папка пользователя по умолчанию. Default user

Потому что sql login-ы не имеют никакх папок

это понятно :)
22 окт 15, 10:48    [18310441]     Ответить | Цитировать Сообщить модератору
 Re: как использовать переменную windows %userprofile% в SQL  [new]
Glory
Member

Откуда:
Сообщений: 104751
Buster Bunny
Я не очень хорошо знаю SQL, поэтому у меня и возник вопрос, может ли SQL каким-нибудь образом получить имя текущего пользователя винды.

Для чего бы это ему было бы нужно ?
22 окт 15, 10:50    [18310450]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить