Error inesperado MS SQLSERVER situación muy inusual pero ocurre. para esto tenemos la programación sql. Esto suele ocurrir cuando los roles de seguridad no están bien definidos dentro de su servidor base datos. ademas del uso de una contraseña muy genérica la cual puede se adivinada por cualquier usuario.
Para finalizar después de tener estas vulnerabilidades de seguridad todos su sistema puede ser comprometido al punto de tener el siguiente error.
Se ha producido un error inesperado en InsertCustomerEmailOptions: No se pudo encontrar el procedimiento almacenado ‘cssp_New_Customer_Email’ .
A continuación se muestra la secuencia de SQL y escenario utilizado para esta programacion sql
Puedo crear una tabla de prueba y insertar algunas filas. Entonces copia de seguridad de la base de datos y restaurar a un nombre de base de datos diferente.
Después de eliminar la tabla puedo consultar el log para ver que objeto fue eliminado y quien lo elimino pero no puedo saber nombre del objeto que fue eliminado ya que no existe.
Para obtener el nombre del objeto Eliminado, tiene que restaurar una copia de seguridad de la base de datos.
Utilice el ID de objeto del objeto eliminado consultar la base de datos (donde aún existe el objeto), para ver el nombre del objeto.
NOTA ESTO FUNCIONA SI Y SOLO SI SE DETECTO EL PROBLEMA ANTES DE HACER EL BACKUP
Ver script de base datos para los fines de verificar el error
- USE [TWO]
GO
–Create table
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TestTable]’) AND type IN (N’U’))
BEGIN
CREATE TABLE [dbo].[TestTable](
[FirstName] [varchar](30) NOT NULL,
[RowID] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
END
GO
–Populate table
INSERT INTO TestTable (FirstName, LastName) VALUES (‘Chuck’, ‘Norris’)
INSERT INTO TestTable (FirstName, LastName) VALUES (‘George’, ‘Washington’)
INSERT INTO TestTable (FirstName, LastName) VALUES (‘Britney’, ‘Spears’)
–Verify table
SELECT * FROM TestTable - –****************************
–REALIZR UN BACKUP DE LA BASE DE DATOS AHORA RESTAURE EN UNA BASE DE COMO NUEVA CON OTRO NOMBRE EN VEZ DE TWO PONGA TWO01
–****************************
–ELIMINE LA TABLA EN LA BASE DE DATOS TWO
DROP TABLE TestTable - –Get info on drop from transaction log
SELECT
[Begin Time],
[Transaction Name],
SUSER_SNAME([Transaction SID]) AS UserName,
[Transaction Id],
[Transaction SID],
[SPID],
(SELECT TOP (1) [Lock Information] FROM fn_dblog (NULL, NULL)
WHERE [Transaction Id] = fndb.[Transaction Id]
AND [Lock Information] LIKE ‘%SCH_M OBJECT%’) AS ObjectID
FROM fn_dblog (NULL, NULL) AS fndb
WHERE [Transaction Name] = ‘DROPOBJ’
GO - –En la consulta previa, revise los valores de los campos ObjetoID. El ID de objeto es el valor numérico al final, entre dos puntos
–HoBt 0:ACQUIRE_LOCK_SCH_M OBJECT: 6:1554182124:0
–In this example, the object ID is: 1554182124
–Insert numeric object ID and run on restored copy of DB
USE TWO01
SELECT OBJECT_NAME(1554182124) AS ObjectName
Entradas relacionadas
[pt_view id=»a71a788m75″]