2012-07-04 13 views
7

En mi código de servidor, creo una tabla temporal (llamada #temp), inserto algunos datos y luego elimino la tabla temporal. Si más de 1 usuarios ejecutaran esta sección del código (creación de la tabla temporal) al mismo tiempo, ¿crearía sql server 2008 una tabla temporal por usuario o crearía 1 tabla temporal "global"? Si es una tabla, ¿supongo que me encontraría en problemas cuando se crea la misma tabla más de una vez?Sql server 2008, son tablas temporales únicas

Respuesta

8

De MSDN:

Se pueden crear tablas temporales locales y globales. Locales temporales tablas son visibles sólo en la sesión actual, y globales temporales tablas son visibles para todas las sesiones
...
Si se crea una tabla temporal local en un procedimiento almacenado o aplicación que se puede ejecutar al mismo tiempo de varios usuarios, el Motor de base de datos debe ser capaz de distinguir las tablas creadas por los diferentes usuarios. El Motor de base de datos lo hace internamente al añadiendo un sufijo numérico a cada nombre de tabla temporal local. El nombre completo de una tabla temporal almacenada en la tabla sysobjects en tempdb se compone del nombre de tabla especificado en la sentencia CREATE TABLE y el sufijo numérico generado por el sistema. Para permitir el sufijo , table_name especificado para un nombre temporal local no puede exceder 116 caracteres.

+2

También desde el MSDN: Prefijo de nombres de tablas temporales locales con signo solo número (#table_name), y el prefijo global nombres de tabla temporal con un doble signo de número (## nombre_tabla). – Eminem

Cuestiones relacionadas