Как предоставить разрешения для роли SQL для создания и управления временными таблицами - PullRequest
2 голосов
/ 18 января 2011

Я хотел бы предоставить разрешения для роли SQL для создания временной таблицы #foo и предоставить разрешения на любые действия с этой таблицей (SELECT, INSERT и DELETE). Как это возможно, если таблица #foo не создана (пользователь, который принадлежит этой роли, будет создавать ее и управлять ею)?

Спасибо

ПРИМЕЧАНИЕ. Если возможно, решение должно работать как с SQL 2008, так и с SQL Azure.

Ответы [ 3 ]

2 голосов
/ 18 января 2011

Вы не можете:

Глобальные временные таблицы автоматически удаляются, когда завершается сеанс , который создал таблицу, и все другие задачи перестают ссылаться на них . Связь между задачей и таблицей поддерживается только в течение жизни одного оператора Transact-SQL. Это означает, что глобальная временная таблица удаляется при завершении последнего оператора Transact-SQL, который активно ссылался на таблицу, когда завершался сеанс создания. текст ссылки

1 голос
/ 18 января 2011

Я не уверен насчет Azure, но ...

Если вы явно создаете таблицу в базе данных tempdb, она сохраняется в течение сеансов, но будет очищена при перезагрузке сервера.

create table tempdb..authors (au_id char(11))

Если вы создаете ## TempTable, он виден глобально, но также заканчивается сеансом создателя.

0 голосов
/ 21 января 2011

Очевидно, что пользователь, созданный с помощью AUTHORIZATION dbo, уже будет иметь право создавать временную таблицу и управлять ею, когда он будет подключен к базе данных.Только когда этому пользователю требуется доступ к другим таблицам в базе данных, ему необходимы явные разрешения, предоставленные ему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...