¿Es posible usar SqlBulkCopy en SQL 2008 sin el permiso 'db_datawriter'?

security sqlbulkcopy sql-server sql-server-2008

Pregunta

Quiero limitar las posibles formas de acceso a mi base de datos para usar solo procedimientos almacenados. Todo funciona bien, excepto System.Data.SqlClient.SqlBulkCopy . Lo uso solo en una clase para la importación masiva de datos.

¿Es posible evitar este problema?

Intenté otorgar un derecho antes de llamar a SqlBulkCopy y eliminarlo después de:

EXEC [db_mod].[sys].[sp_addrolemember] N'db_datawriter', N'my_user'
EXEC [db_mod].[sys].[sp_droprolemember] N'db_datawriter', N'my_user'

pero tal enfoque genera un error:

El usuario no tiene permiso para realizar esta acción.

Lo estoy ejecutando bajo el mismo usuario. ¿Cómo puedo permitir lo que necesito?

Respuesta popular

El error descrito, después de un intento en sp_addrolemember (), está relacionado con el usuario actual que no tiene los privilegios necesarios para modificar la configuración de la cuenta y la seguridad.

Con respecto a la ejecución de SqlBulkCopy, requiere privilegios de escritura, y el rol db_datawriter es una forma conveniente de proporcionarlos, pero quizás pueda considerar alternativas. Por ejemplo, en lugar de aumentar (aunque solo temporalmente) los privilegios de seguridad de la cuenta actual, puede modificar la configuración de seguridad asociada con esta base de datos / tablas en particular.

Cambiar la configuración de seguridad de los "elementos de seguridad", como los objetos de la base de datos, también requiere algunos privilegios administrativos, pero estos pueden estar asociados con la propiedad de la base de datos y, por lo tanto, pueden estar disponibles para usted aunque los privilegios de cambiar una cuenta no lo estén.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué