2011-04-21 13 views
5

¿Cómo puedo detectar mediante programación si el usuario actual tiene permisos CREATE TABLE en la base de datos actual?¿Cómo puedo detectar si tengo el permiso CREATE TABLE?

Estoy escribiendo una herramienta que hará un procesamiento largo, y luego crear tablas de base de datos para guardar los resultados. Solo quiero crear las tablas si el proceso se ejecuta hasta su finalización. Pero si el usuario no podrá crear las tablas, no tiene sentido pasar el tiempo de procesamiento. Me gustaría detectar el problema del permiso y fallar rápido.

Esto será de una aplicación C#, y no puedo suponer que se instalarán bibliotecas especiales, lo que probablemente descarte SQL-DMO y SMO. Si hay una manera fácil de verificar los permisos con una consulta/script T-SQL, sería ideal.

Respuesta

9

¿Por qué no crear primero la tabla y, si eso no funciona, no seguir adelante?

Dicho esto, también se puede utilizar la siguiente función HAS_PERMS_BY_NAME:

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

Más información aquí:

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

+0

+1, esta es una solución más sostenible que el uso de la función de los permisos. –

Cuestiones relacionadas