Saltar al contenido

¿Por qué no es posible crear índices en tablas temporales en aislamiento SNAPSHOT?

Solución:

En las versiones modernas de SQL Server (2014+) puede crear los índices cuando crea la tabla, por ejemplo:

create table #t(id int primary key, a int, index ix_a nonclustered(a))

También puede crear la tabla temporal antes de que comience la transacción de la instantánea.

Casi todo el DDL está prohibido dentro de un SNAPSHOT transacción. ALTER TABLE y TRUNCATE TABLE obviamente no están permitidos. CREATE TABLE está en la lista blanca. CREATE INDEX podría estar en la lista blanca, pero simplemente no lo es.

Esto aún no es compatible a partir de SQL Server 2019, pero hay un problema de foro de comentarios abierto para esto que vale la pena votar para permitir que CREATE INDEX en tablas temporales se incluya en la lista de permisos como sugiere david-browne-microsoft. https://feedback.azure.com/forums/908035-sql-server/suggestions/40970308-allow-index-creation-for-tables-within-a-snapshot

En particular, tener esta característica sería valioso para SELECT ... INTO #TempTable escenarios en los que actualmente no hay forma de agregar un índice a la tabla temporal resultante cuando se está en aislamiento de instantánea sin reestructurar la consulta para crear la tabla temporal y los índices por adelantado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *