¿Hay una manera simple de colocar un grupo de tablas interrelacionadas en SQL Server? Idealmente, me gustaría evitar tener que preocuparme por el orden en que se enviarán, ya que sé que el grupo completo se habrá ido para el final del proceso.Eliminar un grupo de tablas en SQL Server
Respuesta
A riesgo de sonar estúpido, no creo que SQL Server admita la sintaxis de eliminar/cascada. Creo que puede configurar una regla de eliminación para hacer eliminaciones en cascada (http://msdn.microsoft.com/en-us/library/ms152507.aspx), pero por lo que sé, el truco con SQL Server es simplemente ejecutar su consulta de colocación una vez para cada tabla que está descartando, luego verifique que funcionó.
no tengo acceso a SQL Server para probar esto, pero ¿qué tal:
DROP TABLE IF EXISTS table1, table2, table3 CASCADE;
No estoy seguro de si el enfoque de Derek trabaja. No lo has marcado como la mejor respuesta hasta el momento.
Si no: con SQL Server 2005 debería ser posible, supongo.
Allí introdujeron excepciones (que aún no he usado). Así que deje caer la mesa, atrape la excepción, si ocurre y pruebe la siguiente tabla hasta que se hayan ido.
Puede almacenar la lista de tablas en una tabla temporal y usar un cursor para recorrerla, si lo desea.
Terminé usando Apache's ddlutils para realizar el descarte para mí, que lo resolvió en mi caso, aunque una solución que funcionaba solo en el servidor sql sería bastante más simple.
@Derek Park, no sabía que podía asignar tablas separadas allí, así que es útil, pero no parece funcionar como se esperaba. Nether IF EXISTS ni CASCADE son reconocidos por el servidor SQL, parece, y ejecutar drop table X, Y, Z
parece funcionar solo si se deben descartar en el orden establecido.
Consulte también http://msdn.microsoft.com/en-us/library/ms173790.aspx, que describe la sintaxis de la tabla de colocación.
Lo que le impide volver a colocar las tablas en cualquier orden son las dependencias de las claves externas entre las tablas. Así que deshazte de los FK antes de comenzar.
- Usando las vistas del sistema INFORMATION_SCHEMA, recuperar una lista de todas las claves externas relacionadas con cualquiera de estas tablas
- gota cada una de estas claves externas
- Ahora usted debería ser capaz de soltar todas las tablas, usando cualquier orden que quieras
Un enfoque diferente podría ser: primero deshacerse de las limitaciones, y luego soltar las tablas en una sola toma.
En otras palabras, una RESTRICCIÓN DE CAÍDA para cada restricción, luego una TABLA DE DESCARGAS para cada tabla; en este punto, el orden de ejecución no debería ser un problema.
Esto requiere que el sp___drop___constraints la escritura se puede encontrar en Database Journal:
sp_MSforeachtable @command1="print 'disabling constraints: ?'", @command2="sp_drop_constraints @tablename=?"
GO
sp_MSforeachtable @command1="print 'dropping: ?'", @command2="DROP TABLE ?"
GO
NOTA esto - obviamente - si nos referimos a colocar todas las tablas en la base de datos, así que tenga cuidado
- 1. Uso de tablas temporales en SQL Server
- 2. SQL Server Enterprise Manager - Masa Eliminar de tablas y cambio de propiedad de las Tablas
- 3. Optimizar Eliminar en SQL Server
- 4. NHibernate LINQ grupo por grupo no correctamente en SQL Server
- 5. actualizaciones de grupo de SQL Server por
- 6. Combinar dos tablas en SQL Server 2008
- 7. unen tres tablas en SQL Server 2005
- 8. SQL Server 2008: No se puede eliminar un archivo de FileStream y grupo de archivos
- 9. Grupo de SQL Server Por Mes
- 10. Grupo varias tablas en LINQ
- 11. Eliminar de varias tablas (linq a sql)
- 12. Sugerencias para implementar tablas de auditoría en SQL Server?
- 13. tablas temporales globales - SQL Server vs Oracle
- 14. Cómo muevo una tabla a un grupo de archivos en particular en SQL Server 2008
- 15. Sql server 2008, son tablas temporales únicas
- 16. SQL Server/Oracle: tablas temporales privadas
- 17. Cómo eliminar el desencadenador en SQL Server?
- 18. Eliminar filas "duplicadas" en SQL Server 2010
- 19. SQL Server 2008 Management Studio tablas de advertencia ¿advertencia?
- 20. ¿Eliminar registros duplicados en SQL Server?
- 21. Restricciones diferibles en SQL Server
- 22. SQL Server consulta de eliminación que implica dos tablas
- 23. ¿Cómo supervisar el grupo de conexiones activo en SQL Server?
- 24. Número máximo de tablas viables en SQL Server Y MySQL
- 25. ACTUALIZACIÓN o FUSIÓN de tablas muy grandes en SQL Server
- 26. SQL Server, tablas temporales con truncar contra variable de tabla con eliminar
- 27. Equivalente de sp_helptext para las tablas en SQL Server
- 28. Eliminación de tablas temporales globales (## tempTable) en SQL Server
- 29. ¿Cómo eliminar objetos de soporte de diagramas de SQL Server?
- 30. tablas dinámicas en SQL Server con espacios en la celda