Cuando restauramos una copia de seguridad de una base de datos de SQL Server desde un servidor a otro diferente es posible que los propietarios de las tablas de la base de datos recién restaurada no coincidan con el propietario que tenemos en el resto de bases de datos o con el de las tablas del sistema.
Si deseamos establecer de forma manual el propietario de una tabla (o en general de cualqueier objeto) de SQL Server podemos recurrir al procedimiento almacenado sp_changeobjectowner. Basta con abrir el analizador de consultas y escribir:
sp_changeobjectowner 'propietario.tabla', 'nuevo_propietario'
para cambiarlo. Por ejemplo:
sp_changeobjectowner 'usuario.Articulos', 'dbo'
cambiaría el propietario a 'dbo', es decir, el propietario por defecto de los objetos de una base de datos y el que normalmente se utiliza.
Al hilo del post de ayer me parece apropiado comentar que, para averiguar nosotros mismos qué permisos ha declarado un ensamblado (exe o dll), podemos utilizar una pequeña utilidad incluida en el SDK de la plataforma .NET llamado permview.exe.
Su sintaxis es la siguiente:
permview nombre_ensamblado.exe
o
permview nombre_ensamblado.exe /otuput: archivo.txt
para enviar los resultados a un archivo.
Lo que hace es "escupir" la información sobre los permisos declarados en formato XML, distinguiendo los permisos mínimos requeridos, los opcionales y los restringidos por la propia aplicación (tal y como vimos).
Necesitarás ejecutarlo desde la consola del SDK o de Visual Studio. Puede resultar útil como herramienta de diagnóstico.