Tengo la siguiente configuración:Problema con SQL Server "EJECUTAR" TAL
Hay un servidor de base de datos SQL con varias tablas que tienen disparadores establecidos en ellos (que recogen datos de la historia). Estos activadores son procedimientos almacenados de CLR con EXECUTE AS 'HistoryUser'
. El usuario HistoryUser
es un usuario simple en la base de datos sin un inicio de sesión. Tiene permisos suficientes para leer en todas las tablas y escribir en la tabla de historial.
Cuando hago una copia de seguridad de la base de datos y luego la restauro a otra máquina (máquina virtual en este caso, pero no importa), los disparadores ya no funcionan. De hecho, ya no funciona la suplantación para el usuario. Incluso una simple declaración como este
exec ('select 3') as user='HistoryUser'
produce un error:
Cannot execute as the database principal because the principal "HistoryUser" does not exist, this type of principal cannot be impersonated, or you do not have permission.
I read in MSDN que esto puede ocurrir si el dueño del DB es un usuario de dominio, pero no lo es. E incluso si lo cambio a cualquier otra cosa (su solución recomendada), este problema persiste.
Si creo otro usuario sin iniciar sesión, puedo usarlo para la suplantación muy bien. Es decir, esto funciona muy bien:
create user TestUser without login
go
exec ('select 3') as user='TestUser'
no quiero recrear todos los factores desencadenantes, por lo que ¿hay alguna manera de cómo puedo hacer el trabajo existente HistoryUser
?
Bump: Lo sentimos, pero esto es algo urgente ...
Nop, no ayuda. –