---
schema_version: "1"
id: 85a0e1da6a1f660372c44ff0c145ec2145bdff983078c2e4d8b37622f05c70ef
title: Ejecutar SQL inicial
collection: tableau
version: current
locale: es-es
portal_url: https://docs.salesforce.com/tableau/current/es-es/server/connect_basic_initialsql.md
canonical_url: https://help.tableau.com/current/server/es-es/connect_basic_initialsql.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 6e566daa84235b188826b01bd3135642d2892ab8b41c3a607b26a8ee791c1f71
description: Run an initial SQL command when connecting to a database, including parameters and deferred execution.
---
[Saltar al contenido principal](#main-content)

# Ejecutar SQL inicial

**Nota**: Tableau Prep Builder versión 2019.2.2 y posteriores admiten el uso de SQL inicial, pero aún no admiten todas las mismas opciones admitidas por Tableau Desktop. Para obtener información sobre el uso de SQL inicial con Tableau Prep Builder, consulte [Utilizar SQL inicial para consultar sus conexiones](https://help.tableau.com/current/prep/es-es/prep_connect.htm#initial_SQL) en la ayuda de Salesforce de Tableau Prep Builder.

Al conectarse a algunas bases de datos, puede especificar un comando SQL inicial que se ejecutará o usará un valor en caché cuando se establezca una conexión con la base de datos (por ejemplo, al abrir el libro de trabajo, actualizar una extracción, iniciar sesión en Tableau Server o efectuar una publicación en Tableau Server).

**Nota:** El SQL inicial es diferente de una conexión SQL personalizada. Una conexión SQL personalizada define una relación (o tabla) en la que se van a emitir consultas. Para obtener más información, consulte [Conectarse a una consulta SQL personalizada](https://help.tableau.com/current/pro/desktop/es-es/customsql.htm).

Puede usar este comando para lo siguiente:

- Configurar tablas temporales para usarlas durante la sesión.
- Configurar un entorno de datos personalizado.

Puede añadir un comando SQL inicial tanto en el cuadro de diálogo Conexión de servidor como en la página Fuente de datos.

Nota: Si su fuente de datos puede ejecutar una declaración SQL inicial, aparecerá un vínculo SQL inicial en la esquina inferior izquierda del cuadro de diálogo Conexión al servidor. Para obtener información sobre su fuente de datos, consulte [Conectores compatibles](https://help.tableau.com/current/pro/desktop/es-es/exampleconnections_overview.htm).

## Para usar SQL inicial

1. En el cuadro de diálogo Conexión de servidor, haga clic en SQL inicial. Como alternativa, en la página Fuente de datos, seleccione Datos > SQL inicial o Datos > Unión de consultas y SQL inicial, según la base de datos a la que se conecte.
2. Escriba el comando SQL en el cuadro de diálogo SQL inicial. Puede utilizar el menú desplegable Insertar para pasar parámetros a la fuente de datos.
    
    ![Configuración inicial de SQL con un campo de texto para ingresar declaraciones SQL.](/tableau/current/es-es/server/es-es/Img/connect_basic_initialsql.png)

**Nota:** Tableau no examina si la declaración tiene errores. Esta declaración SQL se envía a la base de datos cuando se conecte.

Es posible que su licencia de software no le permita usar SQL inicial con su conexión. Si publica en Tableau Server, el servidor debe estar configurado para permitir declaraciones SQL iniciales. De manera predeterminada, el software de servidor se configura para permitir que estas declaraciones se ejecuten cuando el libro de trabajo se carga en un navegador web.

Los administradores pueden configurar el servidor de modo que omita las instrucciones SQL iniciales usando el comando `tsm configuration set`:

`tsm configuration set -k vizqlserver.initialsql.disabled -v true`

Si el servidor no admite instrucciones SQL iniciales, el libro de trabajo se abre, pero los comandos SQL iniciales no se envían.

Para obtener más información sobre el comando `tsm configuration set`, consulte la [ayuda de Tableau Server](https://help.tableau.com/current/server/es-es/cli_configuration_tsm.htm#TSMSet).

## Parámetros en una declaración SQL inicial

Puede pasar parámetros a la fuente de datos mediante una declaración SQL inicial. La siguiente lista tiene varios beneficios de usar parámetros en una declaración SQL inicial.

- Puede configurar una suplantación con los parámetros TableauServerUser o TableauServerUserFull.
- Si la fuente de datos lo permite, puede configurar una seguridad de nivel de fila (para Oracle VPD o SAP Sybase ASE, por ejemplo) para procurar que los usuarios vean solamente los datos que estén autorizados a ver.
- Puede indicar más detalles durante el registro, como la versión de Tableau o el nombre del libro.

Los siguientes parámetros se pueden usar en una declaración SQL inicial:

<table class="table--plain"><tbody><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1"><span class="uicontrol">Parámetro</span></td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1"><span class="uicontrol">Descripción</span></td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1"><span class="uicontrol">Ejemplo de valor indicado</span></td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1"><span class="uicontrol">TableauServerUser</span></td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">El nombre de usuario del usuario del servidor actual. Se usa al configurar una suplantación en el servidor. Indica una cadena vacía si el usuario no ha iniciado sesión en Tableau Server.</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">jsmith</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1"><span class="uicontrol">TableauServerUserFull</span></td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Nombre de usuario y dominio del usuario de servidor actual. Se usa al configurar una suplantación en el servidor. Indica una cadena vacía si el usuario no ha iniciado sesión en Tableau Server.</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">domain.lan\jsmith</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1"><span class="uicontrol">TableauApp</span></td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Nombre de la aplicación de Tableau.</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1"><p><span class="mc-variable Variables.TabsProductDesktop variable">Tableau Desktop</span> Professional</p><p>Tableau Server</p></td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyE-Column1-Body1"><span class="uicontrol">TableauVersion</span></td><td class="TableStyle-Basic-Border-BodyE-Column1-Body1">Versión de la aplicación de Tableau.</td><td class="TableStyle-Basic-Border-BodyD-Column1-Body1">9.3</td></tr><tr class="TableStyle-Basic-Border-Body-Body1"><td class="TableStyle-Basic-Border-BodyB-Column1-Body1"><span class="uicontrol">WorkbookName</span></td><td class="TableStyle-Basic-Border-BodyB-Column1-Body1">Nombre del libro de trabajo de Tableau. Úselo solo en libros de trabajo con una fuente de datos incrustada.</td><td class="TableStyle-Basic-Border-BodyA-Column1-Body1">Análisis financiero</td></tr></tbody></table>

> [!WARNING]
> 
> **Advertencia:** Tableau Desktop no incluye el dominio. Puede incluirlo si no está usando delegación y establece tsm configuration set -k DelegationUseFullDomainName=-v true--force-keys

Los siguientes ejemplos reflejan distintas formas de usar parámetros en una declaración SQL inicial.

- En este ejemplo se establece el contexto de seguridad de Microsoft SQL Server:
    
    `EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;`
- En este ejemplo se muestra cómo se pueden usar parámetros en una fuente de datos DataStax para añadir detalles al registro o para configurar una variable de sesión que permita llevar un seguimiento de los datos:
    
    `SET TABLEAUVERSION [TableauVersion];`
- Este ejemplo se puede usar para ayudar a configurar la seguridad en el nivel de fila para Oracle VPD:
    
    `begin`
    
     `DBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);`
    
    `end;`
    
    Nota: Los bloques PL/SQL de Oracle necesitan un punto y coma final para cerrar el bloque. Consulte la documentación de Oracle para ver la sintaxis adecuada.

### Aplazar la ejecución en el servidor

Una declaración SQL inicial se puede aplazar de forma que solo se ejecute en el servidor. Un motivo para aplazar una ejecución en el servidor es que carezca de permiso para ejecutar los comandos que configuran la suplantación. Incluya entre las categorías <ServerOnly></ServerOnly> los comandos que se van a ejecutar solo en el servidor.

Ejemplo:

CREATE TEMP TABLE TempTable(x varchar(25));
INSERT INTO TempTable VALUES (1);
<ServerOnly>INSERT INTO TempTable Values(2);</ServerOnly>

### Seguridad y suplantación

Si usa los parámetros TableauServerUser o TableauServerUserFull en una instrucción SQL inicial, creará una conexión exclusiva que no se podrá compartir con otros usuarios. Esto también puede restringir el uso compartido de la caché, lo que puede mejorar la seguridad, aunque también puede ralentizar el rendimiento.

## Solución de problemas de "crear tabla" para conexiones MySQL y Oracle

#### Para conexiones MySQL, las tablas no aparecen después de usar un SQL inicial para crear una tabla

Después de conectarse a MySQL y ejecutar una declaración SQL inicial, es posible que las tablas no se muestren debido a la forma en que Tableau crea la consulta.

CREATE TABLE TestV1.testtable77(testID int);

Para resolver este problema, añada `IF NOT EXISTS` a la declaración SQL:

CREATE TABLE IF NOT EXISTS TestV1.TestTable(testID int);

#### Para las conexiones Oracle, el uso de un SQL inicial para crear una tabla hace que Tableau se detenga

Cuando se conecta a Oracle y ejecuta una declaración SQL inicial, Tableau se detiene (aparece una rueda giratoria) debido a la forma en que Tableau construye la consulta.

CREATE TABLE TEST\_TABLE (TESTid int)

Para resolver este problema, utilice la siguiente declaración SQL:

BEGIN
EXECUTE IMMEDIATE 'create table test\_table(testID int)';
EXCEPTION
WHEN OTHERS THEN NULL;
END;