Saltar al contenido

Programación Sql, Error inesperado MS SQLSERVER

  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

Índice

    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″]