values valid the nivel compatibility_level compatibilidad are sql-server sql-server-2005 tsql

valid - ¿Cuál es su mayor error de SQL Server o incidente embarazoso?



sql server download (25)

Tú sabes de lo que estoy hablando.

Todos hemos estado allí en algún momento. Tienes ese horrible sentimiento de terror y la realización de "¡Oh Dios mío!" Realmente sucedió.

Sin dudas, ahora puedes reírte de eso, correcto, así que continúa y comparte tus percances de SQL Server con nosotros.

Aún mejor si puede detallar cómo resolvió su problema para que podamos aprender de nuestros errores juntos.

Para que la bola funcione, iré primero ...

Fue en mis primeros años como un Junior Server Guru. Estaba corriendo alrededor de Enterprise Manager, realizando algunas tareas administrativas. Ya sabes cómo es esto, verificando algunos registros, asegurándote de que las copias de seguridad funcionen bien, un poco de mantenimiento de la base de datos, prácticamente haciendo negocios en el piloto automático y presionando la tecla Intro en las indicaciones usuales que aparecen.

Oh, espera, fue un aviso "¿Estás seguro de que deseas eliminar esta tabla?". ¡Demasiado tarde!

Solo para confirmar que hay DBA aspirantes, eliminar una tabla de producción es algo muy malo.

Huelga decir que se estableció rápidamente un récord mundial para la restauración más rápida de la base de datos a una nueva base de datos, seguida rápidamente por una migración de tabla, oh sí. Todos los demás no sabían nada, por supuesto, pero aún así una valiosa lección aprendida. ¡Concentrado!


Afortunadamente, solo hacemos un gallo antes de que te des cuenta de que el uso de transacciones realmente es muy, muy trivial. Modifiqué miles de registros por accidente antes, afortunadamente hay un retroceso ...

Si está consultando el entorno en vivo sin haber probado a fondo sus guiones, entonces creo que vergonzoso debería ser realmente temerario o quizás poco profesional.


Al comienzo de mi período de cooperación, terminé expirando el acceso a todos los que usaban este sistema en particular (el cual era utilizado por muchas aplicaciones en mi Provincia). En mi defensa, era nuevo en SQL Server Management Studio y no sabía que podía ''abrir'' tablas y editar entradas específicas con una declaración sql.

Expiré todo el acceso del usuario con una simple instrucción UPDATE (el acceso a esta aplicación fue dado por una cuenta de usuario en el cuadro SQL así como una entrada específica en una tabla de acceso) pero cuando fui a resaltar esa misma declaración y ejecutarla, No incluí la cláusula WHERE.

Un error común que me dicen. La solución rápida era la de las cuentas de alguien que no se había ejecutado (incluidas las cuentas que se suponía expirarían) hasta que se pudiera hacer una copia de seguridad de la base de datos. Ahora bien, abro tablas y selecciono entradas específicas con SQL o envuelvo absolutamente todo dentro de una transacción seguido de una reversión inmediata.


Cambié todos los precios a cero en un sitio de comercio electrónico de alto volumen y producción. Tuve que quitar el sitio y restaurar el DB desde la copia de seguridad. MUY FEO.

Afortunadamente, eso fue hace mucho tiempo.


Clase de SQL-servidor relacionado. Recuerdo haber aprendido sobre la importancia de eliminar siempre un SqlDataReader. Tenía un sistema que funcionaba bien en el desarrollo y que se estaba ejecutando contra la base de datos ERP. En producción, bajó la base de datos porque supuse que era suficiente para cerrar SqlConnection, y tenía cientos, sino miles de conexiones abiertas.


Comenzar una restauración desde la semana pasada en una instancia de producción en lugar de la instancia de desarrollo. No es un buen día.


Como dijo zabzonk, olvidé la cláusula WHERE en una actualización o dos en mi día.


El error más grande fue darles a los desarrolladores acceso de "escritura" al DB de producción. Muchos registros DEV y TEST se insertaron / sobrescribieron y también respaldaron la producción hasta que fue sabiamente sugerido (¡por mí!) Para permitir solo el acceso de lectura.


Estaba trabajando en el sistema de pago en un gran negocio en línea. Negocio multimillonario en euros.

  • Obtenga un script de un colega con algunas actualizaciones pequeñas.
  • Ejecútelo en producción.
  • Obtenga un informe de error 30 minutos después del servicio de asistencia, quejándose de que no hay compras durante los últimos 30 minutos.
  • Descubra que todas las conexiones están esperando que se libere un bloqueo de tabla
  • Descubro que el guión de mi colega comenzó con una BEGIN TRANSACTION explícita y esperaba que escribiera manualmente COMMIT TRANSACTION al final.
  • Explique al jefe por qué se perdieron 30 minutos de ventas.
  • Me culpo a mí mismo por no leer la documentación del script correctamente.

Esto fue antes de los días en que Google podría ayudar. No encontré este problema con SQL Server, pero con su primo más viejo y feo, Sybase.

Actualicé un esquema de tabla en un entorno de producción. Al no comprender en ese momento que los procedimientos almacenados que utilizan SELECT * deben recompilarse para recoger nuevos campos, procedí a pasar las siguientes ocho horas tratando de descubrir por qué el procedimiento almacenado que realizaba una pieza clave de trabajo seguía fallando. Solo después de reiniciar el servidor, me enteré.

Perder miles de dólares y cientos de horas-hombre (usuario final) en el sitio de su cliente estrella es toda una experiencia educativa. ¡¡Muy recomendable!!


Insertó 5 millones de personas de prueba en una base de datos de producción. El mayor error en mi opinión fue permitirme tener acceso de escritura a la producción de bases de datos en primer lugar. : P ¡Mal dba!


Las columnas son anulables y los valores de los parámetros no pueden recuperar la información correcta ...


Más allá del típico error de cláusula where. Corrió una gota en un DB incorrecto y por lo tanto tuvo que ejecutar una restauración. Ahora compruebo tres veces el nombre de mi servidor. Afortunadamente tuve una buena copia de seguridad.


Mi mayor error de SQL Server fue suponer que era tan capaz como Oracle en lo que respecta a la concurrencia.

Dejame explicar.

Cuando se trata del nivel de aislamiento transaccional en SQL Server, tiene dos opciones:

  1. Lecturas sucias: las transacciones pueden ver datos no confirmados (de otras transacciones); o
  2. Selecciona el bloque en las actualizaciones no confirmadas.

Creo que estos provienen de ANSI SQL.

(2) es el nivel de aislamiento predeterminado y (imho) el menor de dos males. Pero es un gran problema para cualquier proceso de larga duración. Tenía que hacer una carga de datos por lotes y solo podía hacerlo en horas, ya que mataba al sitio web mientras se estaba ejecutando (tardaba de 10 a 20 minutos ya que estaba insertando medio millón de registros).

Oracle, por otro lado, tiene MVCC. Esto básicamente significa que cada transacción verá una vista consistente de los datos. No verán datos no confirmados (a menos que establezca el nivel de aislamiento para hacer eso). Tampoco bloquean las transacciones no confirmadas (me asombró la idea de que una base de datos supuestamente empresarial lo consideraría aceptable sobre la base de una concurrencia).

Baste decir que fue una experiencia de aprendizaje.

Y sabes qué? Incluso MySQL tiene MVCC.


No, es exactamente un "error" pero cuando estaba aprendiendo PHP y MYSQL me pasaba horas al día, tratando de descubrir por qué mi código no funcionaba, sin saber que tenía las credenciales de contraseña / nombre de usuario / host / base de datos incorrectos para mi base de datos SQL No puedes creer cuánto tiempo perdí en eso, y para empeorar las cosas, esto no fue un incidente de una vez. Pero jajaja, está todo bien, construye carácter.


Nuestros IT Ops decidieron actualizar a SQL 2005 desde SQL 2000.

El lunes siguiente, los usuarios preguntaban por qué su aplicación no funcionaba. Errores como:

DTS no encontrado, etc.

Esto condujo a un buen conjunto de 3 sábados en la oficina reconstruyendo los paquetes en SSIS con un buen paquete de tiempo extra :)


Supongo que todos se han perdido la cláusula WHERE de un DELETE o UPDATE en algún momento ...


Teníamos una aplicación antigua que no manejaba la sincronización con nuestra base de datos de recursos humanos para actualizaciones de nombres de manera muy eficiente, principalmente debido a la forma en que introdujeron los cambios en los títulos. De todos modos, cierta mujer se casó, y tuve que escribir una solicitud de cambio de base de datos para actualizar su apellido, olvidé la cláusula where y todos en el nombre de dicha aplicación ahora era Allison Smith.


Trabajé una vez con un desarrollador junior que se confundió y llamó "Drop" en lugar de "Delete" en una mesa.

Fue una larga noche trabajando para restaurar la copia de seguridad ...

Editar: debería haber mencionado, esto fue en un entorno de producción, y la mesa estaba llena de datos ...


Una buena cantidad de años atrás estaba trabajando en un sitio de clientes, que tenía un buen script para borrar el entorno de desarrollo de todos los pedidos, carros y clientes ... para facilitar las pruebas, así que puse el maldito script en el servidor de producciones consultar el analizador y ejecutarlo.

Tomé unos 5-6 minutos para ejecutar también, estaba quejándome de lo lento que era el servidor de desarrollo hasta que surgió el número de filas eliminadas. :)

Afortunadamente, había ejecutado una copia de seguridad completa desde que estaba a punto de hacer una instalación.


Una vez, y solo una vez, escribí algo similar a lo siguiente:

psql> UPDATE big_table SET foo=0; WHERE bar=123

Logré solucionar el error bastante rápido. Desde ese momento y otro error mis actualizaciones siempre comienzan como:

psql> UPDATE table SET WHERE foo=''bar'';

Mucho más fácil evitar errores de esa manera.


Uno de mis favoritos ocurrió en una importación automatizada cuando el cliente cambió la estructura de datos sin decírnoslo primero. La columna del número de Seguridad Social y la cantidad de dinero que debíamos pagar a la persona se cambiaron. Afortunadamente, lo encontramos antes de que el sistema intentara pagarle a alguien su número de seguro social. Ahora tenemos controles en importaciones automatizadas que buscan datos divertidos antes de ejecutar y detenerlo si los datos parecen extraños.


olvidando resaltar la cláusula WHERE al actualizar o eliminar

creación de secuencias de comandos y comprobación de objetos dependientes de caída primero y ejecutar esto en producción


He visto muchas otras personas que pierden una cláusula WHERE .

Yo mismo, siempre WHERE cláusula WHERE primero, y luego vuelvo al comienzo de la línea y escribo el resto de la consulta :)


Establecí la memoria máxima del servidor en 0. Estaba pensando en ese momento que automáticamente le diría al servidor SQL que use toda la memoria disponible (era temprano). No tal suerte. El servidor SQL decidió usar solo 16 MB y tuve que conectarme en el modo de usuario único para recuperar la configuración.


Pulse "Restaurar" en lugar de "Copia de seguridad" en Management Studio.