Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Bulk Insert, права и временная таблица.  [new]
AlexR
Guest
Нужно записать данные из файла в временную таблицу. Bulk Insert находиться внутри процедуры.
Все работает до тех пор пока у меня права администратора. Но процедуру должны запускать пользователи, как обойти это. Если запускать без прав администратора выводиться ошибка

'Server: Msg 8104, Level 16, State 2, Procedure usp_s_export_in, Line 47
The current user is not the database or object owner of table '#x'. Cannot perform SET operation.'
16 окт 01, 11:58    [15219]     Ответить | Цитировать Сообщить модератору
 RE:Bulk Insert, права и временная таблица.  [new]
Pandre
Member

Откуда:
Сообщений: 181
Only members of the sysadmin and bulkadmin fixed server roles can execute BULK INSERT.
16 окт 01, 12:10    [15220]     Ответить | Цитировать Сообщить модератору
 RE:Bulk Insert, права и временная таблица.  [new]
AlexR
Guest
Но Bulk Insert вызываеться из процедуры, процедура создана админом который имеет такие права.
Вот я и подумал что может пройдет Ownership Chains. Кагда вызыватьеся процедура с правами владельца, но что то не выходит ?
16 окт 01, 12:21    [15221]     Ответить | Цитировать Сообщить модератору
 RE:Bulk Insert, права и временная таблица.  [new]
AlexR
Guest
Если какой нибудь вариант записать данные в временную таблицу из файла. С помощью bcp подозреваю что нельзя. Хотя пока не пробовал.
16 окт 01, 12:24    [15222]     Ответить | Цитировать Сообщить модератору
 RE:Bulk Insert, права и временная таблица.  [new]
Pandre
Member

Откуда:
Сообщений: 181
Можно создать ODBC Text DataSource и считать через
select * into #tmp from OPENROWSET(...)
16 окт 01, 12:50    [15223]     Ответить | Цитировать Сообщить модератору
 RE:Bulk Insert, права и временная таблица.  [new]
Glory
Guest
А запуск bcp.exe будет как раз зависеть от прав учетной записи заданной в xp_sqlagent_proxy_account (пользователь, который будет осуществлять bulk insert не принадлежит роли sysadmins), ведь для ее запуска из процедуры вы будете использовать xp_cmdshell и тем более для данной утилиты может задать под каким логином она будет присоединяться к серверу.
16 окт 01, 13:18    [15224]     Ответить | Цитировать Сообщить модератору
 RE:Bulk Insert, права и временная таблица.  [new]
AlexR
Guest
Сейчас попробую, но мне кажеться что я не смогу при помощи bcp записать данные в временную таблицу созданну в той же процедуре откуда будет взываться xp_cmdshell ' bcp ... и т.д '
16 окт 01, 13:37    [15225]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Bulk Insert, права и временная таблица.  [new]
akuz
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 6749
Только что столкнулся с той же проблемой.

Никак не удаётся запихнуть в процедуру закачку файлов в таблицы через BULK INSERT, так что бы она работала от имени юзера, не обладающего ролью dbo.

Через временные таблицы выдаёт

The current user is not the database or object owner of table '#x'. Cannot perform SET operation.'

Через постоянные

The current user is not the database or object owner of table 'dbo.х'. Cannot perform SET operation.

Почему BULK INSERT не работает от имени владельца процедуры?
Как это обойти?

Гуры, что скажете? Два года почти прошло. :)
20 июн 03, 13:43    [236238]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, права и временная таблица.  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Раз уж надо, чтоб юзеры пользовали булкинсерт, то и дай им права bulkadmin. Иначе вроде никак...
20 июн 03, 13:48    [236248]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, права и временная таблица.  [new]
akuz
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 6749
Дал конечно, за кого ты меня принимаешь. :)

Проблема не в этом, а в том, что BULK INSERT в процедуре запускается от пользователя запустившего процедуру, а не от создателя процедуры, как все остальные статменты, поэтому и временная таблица становится недоступной. Если пользователя добавить в dbo, то всё работает. Так и сделал, но как то криво получается.
20 июн 03, 15:56    [236482]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, права и временная таблица.  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А юзеры на папку, где лежит bcp.exe какие права имеют?
20 июн 03, 16:09    [236508]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, права и временная таблица.  [new]
Gu
Guest
Если Userы используют SQL авторизацию, то у них нет прав на папки.
Как правильно сказал AlexR, проверяется Ownership Chains и конечного пользователя надо делать dlladmin и давать право на insert к таблице.
20 июн 03, 16:48    [236577]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, права и временная таблица.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Да ничего не изменилось - до сих пор висит в кнолидж бэйс как баг
http://support.microsoft.com/default.aspx?scid=kb;en-us;302621
20 июн 03, 17:09    [236614]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, права и временная таблица.  [new]
akuz
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 6749
Ну баг, так баг.

Спасибо Glory, успокоил.
20 июн 03, 17:30    [236663]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, права и временная таблица.  [new]
DrEvil
Guest
I have exactly the same issue but not with a temp table.

Grr.. What a pain!
17 сен 03, 05:28    [341669]     Ответить | Цитировать Сообщить модератору
 Re: Bulk Insert, права и временная таблица.  [new]
cvasil
Member

Откуда:
Сообщений: 519
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=32654
17 сен 03, 07:20    [341693]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить