2011-11-18 19 views
5

¿Existe soporte nativo para ejecutar consultas en paralelo desde un procedimiento almacenado en SQL Server 2008 R2? Tome este pseudo código, por ejemplo,Compatibilidad con TSQL nativo para consultas paralelas

create proc dbo.MySproc 
as 
    delete from SomeTable where Predicate = true [as parallel] 
    delete from AnotherTable where Predicate = false [as parallel] 

    [wait for queries] 

    select * from SomeTable join AnotherTable on Predicate = true 

que he visto ejemplos de hacer esto, pero se requiere la instalación de procedimientos CLR no nativos que es lo que quiero evitar.

NOTA: No estoy hablando de planes de ejecución, me refiero a ejecutar dos consultas no relacionadas al mismo tiempo como sincronización, no una después de la otra.

+0

Puede dispararlos desde el archivo por lotes. Lo hago en algunos procesos ahora. Proc1 Proc2 Proc3 todos se ejecutan en paralelo y actualizan una tabla de marcado, Proc4 se activa cuando se establecen los 3 indicadores – JNK

+0

¿Quiere decir archivo por lotes como al ejecutarlos a través de osql? –

+0

Sí. Si usa 'start', el archivo por lotes iniciará el comando sin esperar que se complete, y lanzará tantas sesiones' osql' como necesite – JNK

Respuesta

6

No, no existe una sintaxis de T-SQL para controlar el paralelismo.

Hay una serie de juegos que puede jugar para obtener algo similar, pero todos requieren una entidad que no sea T-SQL. Por ejemplo, trabajos de SQL Server, SP CLR que generan múltiples hilos, aplicación C# que genera los hilos, uso de sqlcmd para ejecutar T-SQL, etc.

+0

+1 eso es lo que estoy viendo. Gracias. –

Cuestiones relacionadas