Tengo un par de tablas de gran tamaño (188m y 144m filas) que necesito para llenar de puntos de vista, pero cada vista contiene unos pocos cientos de millones de filas (reunir datos pseudo-modelados dimensionalmente en una forma plana). Las claves en cada tabla tienen más de 50 bytes compuestos de columnas. Si los datos estuvieran en tablas, siempre podría pensar en usar sp_rename para crear la otra tabla nueva, pero esa no es realmente una opción.¿Confirmación por lotes en operación INSERT grande en SQL nativo?
Si realizo una única operación INSERT, el proceso utiliza una gran cantidad de espacio de registro de transacciones, normalmente archivándolo y generando muchos problemas con los DBA. (Y sí, este es probablemente un trabajo que los DBA deben manejar/design/architect)
Puedo usar SSIS y transmitir los datos a la tabla de destino con confirmaciones por lotes (pero esto requiere que los datos se transmitan a través de la red , ya que no podemos ejecutar paquetes de SSIS en el servidor).
Cualquier otra cosa que no sea dividir el proceso en múltiples operaciones INSERT utilizando algún tipo de clave para distribuir las filas en diferentes lotes y hacer un ciclo?
Si el particionado de tablas es una opción, puede dividir las inserciones por el valor de parición. Podría hacer que sea más rápido unir los subconjuntos resultantes. –