Как я могу определить, есть ли у меня разрешение CREATE TABLE? - PullRequest
6 голосов
/ 21 апреля 2011

Как программно определить, имеет ли текущий пользователь разрешения CREATE TABLE в текущей базе данных?

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

Это будет из приложения C #, и я не могу предположить, что будут установлены какие-либо специальные библиотеки, которые, вероятно, исключают SQL-DMO и SMO. Если есть простой способ проверить разрешения с помощью запроса / скрипта T-SQL, это было бы идеально.

1 Ответ

11 голосов
/ 21 апреля 2011

Почему бы сначала не создать таблицу, а если это не удастся, не идти дальше?

Тем не менее, вы также можете использовать следующую функцию HAS_PERMS_BY_NAME:

SELECT HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'CREATE TABLE');

Больше информации здесь:

http://msdn.microsoft.com/en-us/library/ms189802.aspx

...