En las opciones de "Script to", puede elegir crear un script para crear lo que desee. ¿Hay alguna forma de obtener una estructura de tabla coincidente para una vista usando un método similar?¿Es posible crear un script de una vista como una tabla en SQL Server?
Respuesta
Puede hacer SELECT INTO
desde la Vista a una nueva tabla y luego ejecutar esa secuencia de comandos.
SELECT TOP 0 * INTO NewTable FROM YourView
Podría ahorrar un poco de tipeo si ese es el motivo de la pregunta.
Es la estructura de la tabla que quiero reproducir, no los datos. –
¡Es por eso que no se han insertado datos! una vez que exista la nueva tabla, puede usar la funcionalidad SSMS estándar para realizar su secuencia de comandos. –
Estoy confundido, ¿estás diciendo que necesito crear la tabla manualmente? –
Si quiere decir generar una declaración CREATE TABLE
basada en las columnas seleccionadas en la definición de una Vista, no estoy al tanto de ninguna manera de hacerlo sin pasos intermedios, como lo que sugiere @Martin.
Esto es lo que estamos usando para hacer esto.
Todo el crédito para el siguiente va al puesto más alto here y @Zanlok cuya versión revisada que he usado y ammended mirar vistas en lugar de tablas:
SELECT
t.TABLE_CATALOG,
t.TABLE_SCHEMA,
t.TABLE_NAME,
'create table '+QuoteName(t.TABLE_SCHEMA)+'.' + QuoteName(so.name) + ' (' + LEFT(o.List, Len(o.List)-1) + '); '
+ CASE WHEN tc.Constraint_Name IS NULL THEN ''
ELSE
'ALTER TABLE ' + QuoteName(t.TABLE_SCHEMA)+'.' + QuoteName(so.name)
+ ' ADD CONSTRAINT ' + tc.Constraint_Name + ' PRIMARY KEY ' + ' (' + LEFT(j.List, Len(j.List)-1) + '); '
END as 'SQL_CREATE_TABLE'
FROM sysobjects so
CROSS APPLY (
SELECT
' ['+column_name+'] '
+ data_type
+ case data_type
when 'sql_variant' then ''
when 'text' then ''
when 'ntext' then ''
when 'decimal' then '(' + cast(numeric_precision as varchar) + ', ' + cast(numeric_scale as varchar) + ')'
else
coalesce(
'('+ case when character_maximum_length = -1
then 'MAX'
else cast(character_maximum_length as varchar) end
+ ')','')
end
+ ' '
+ case when exists (
SELECT id
FROM syscolumns
WHERE
object_name(id) = so.name
and name = column_name
and columnproperty(id,name,'IsIdentity') = 1
) then
'IDENTITY(' +
cast(ident_seed(so.name) as varchar) + ',' +
cast(ident_incr(so.name) as varchar) + ')'
else ''
end
+ ' '
+ (case when IS_NULLABLE = 'No' then 'NOT ' else '' end)
+ 'NULL '
+ case when information_schema.columns.COLUMN_DEFAULT IS NOT NULL THEN 'DEFAULT '+ information_schema.columns.COLUMN_DEFAULT
ELSE ''
END
+ ',' -- can't have a field name or we'll end up with XML
FROM information_schema.columns
WHERE table_name = so.name
ORDER BY ordinal_position
FOR XML PATH('')
) o (list)
LEFT JOIN information_schema.table_constraints tc on
tc.Table_name = so.Name
AND tc.Constraint_Type = 'PRIMARY KEY'
LEFT JOIN information_schema.tables t on
t.Table_name = so.Name
CROSS APPLY (
SELECT QuoteName(Column_Name) + ', '
FROM information_schema.key_column_usage kcu
WHERE kcu.Constraint_Name = tc.Constraint_Name
ORDER BY ORDINAL_POSITION
FOR XML PATH('')
) j (list)
WHERE
xtype = 'V'
AND name NOT IN ('dtproperties')
-- AND so.name = 'ASPStateTempSessions'
;
Si usted tiene acceso a SSIS, inserto un flujo de datos Para la fuente, use su vista. Para el destino, use la nueva tabla. La tabla completa se generará con columnas y tipos de datos. Si no desea transferir datos, puede dejarlos tal como están. Su tabla ya se habría creado al hacer clic en Sí para guardar su flujo de datos. Ahora, puede ir al SSMS y generar un script si desea ver los nombres de columna y los tipos de datos para la nueva tabla que acaba de generar.
Si lo tiene instalado, puede usar el Asistente de importación y exportación de SQL Server. Establezca su fuente y destino en el mismo servidor, la fuente es la vista, el destino es una nueva tabla. Esto tomará las definiciones de columna de la vista y creará una nueva tabla con esas definiciones.
El inconveniente obvio es que la nueva tabla tendrá los datos de la vista anterior, lo que podría ser un problema si tiene un gran número de filas como resultado de la vista. La forma más fácil alrededor de esto y crear una tabla en blanco con la definición de la vista es para seleccionar la opción "Escribir una consulta para especificar los datos para transferir" en el wizare y usar un código como éste:
SELECT * FROM YourView WHERE 1=2
Como 1 no es igual a 2, no se devolverán filas, pero se conservará la definición de la columna y la nueva tabla se creará con esa definición.
Espero que ayude!
- 1. Crear vista temporal desde una tabla temporal en SQL Server
- 2. Crear una tabla temporal como una tabla actual en SQL Server 2005/2008
- 3. ¿Es posible crear una tabla temporal en una vista y soltarla después de seleccionar?
- 4. posible crear una consulta sql con comodines de tabla?
- 5. crear tabla de Vista
- 6. ¿Cómo selecciono un 1 como un bit en una vista sql-server?
- 7. Cómo crear un tipo de tabla en SQL Server 2005
- 8. ¿Es posible crear una identificación única en una vista de SQL Server que permanecerá igual cada vez que se llame a la vista?
- 9. ¿Cuánto espacio ocupa una vista en Microsoft SQL Server?
- 10. Crear un índice de texto completo en una vista en SQL Server 2005
- 11. Cómo crear una restricción única compuesta en SQL Server 2005
- 12. Crear una vista SQL con los parámetros
- 13. ¿Es posible enmascarar una vista en Android?
- 14. ¿Es posible que una tabla SQL tenga cero columnas?
- 15. ¿Es posible tratar una tabla como solo lectura en hibernación?
- 16. Trituración XML de la columna de la tabla en una vista en SQL Server
- 17. SQL Server creando una tabla temporal desde otra tabla
- 18. ¿Es posible crear un nuevo operador T-SQL usando el código CLR en SQL Server?
- 19. Crear una tabla temporal en PL/SQL
- 20. SQL Server copia todas las filas de una tabla a otra, es decir, una tabla duplicada
- 21. ¿Es posible insertar una tabla de datos VB.NET completa en un servidor SQL a la vez
- 22. Cómo reconstruir vista en SQL Server 2008
- 23. ¿Puedo crear crear una función global en SQL Server?
- 24. Crear una tabla de columnas CSV en SQL Server sin necesidad de utilizar un cursor
- 25. nolock en una tabla temporal en SQL Server 2008
- 26. Servidor SQL, usando una tabla como cola
- 27. Cómo reemplazar una cadena en un SQL Server Tabla Columna
- 28. Crear datos de prueba en SQL Server
- 29. Comentarios SQL sobre Crear tabla en SQL Server 2008
- 30. Crear una tabla SQL de Excel VBA
¿Quiere decir generar una declaración 'CREATE TABLE' basada en las columnas seleccionadas en la definición de una Vista? Hasta donde yo sé ... –
Esta pregunta me recordó a http://stackoverflow.com/questions/21547/in-sql-server-how-do-i-generate-a-create-table-statement -for-a-given-table, que puede o no ayudarlo. – Justin
@djacobson, estoy empezando a pensar que tienes razón. Publicarlo como una respuesta y lo aceptaré. –