¿Qué es una consulta que me mostrará la definición completa, incluidos índices y claves para una tabla de SQL Server? Quiero una consulta pura, y sé que SQL Studio puede darme esto, pero a menudo estoy en computadoras "salvajes" que tienen solo las aplicaciones más básicas y no tengo derechos para instalar Studio. Pero SQLCMD siempre es una opción.
ACTUALIZACIÓN: He intentado sp_help, pero solo produce un registro que muestra el nombre, el propietario, el tipo y la fecha de creación. ¿Hay algo más que me falta con sp_help?
Esto es lo que llamo:
aeropuertos sp_help
Tenga en cuenta que realmente quiero el DDL que define la tabla.
sql-server
tsql
Daniel Williams
fuente
fuente
sp_help
es que devuelve múltiples conjuntos de resultados. Estás describiendo las columnas devueltas por el primer conjunto de resultados.Respuestas:
No hay una forma fácil de devolver el DDL. Sin embargo, puede obtener la mayoría de los detalles de las vistas del esquema de información y las vistas del sistema .
fuente
sp_columns
como mencioné en mi respuesta. Si quieres información sobre FK, corresp_fkeys
. Si desea conocer los índices, ejecutesp_statistics
.¿Has probado sp_help?
fuente
Visite http://www.stormrage.com/SQLStuff/sp_GetDDL_Latest.txt .
Encontrará el código de
sp_getddl
procedimiento para SQL Server. El propósito del procedimiento es crear un script en cualquier tabla, tabla temporal u objeto.USO:
o
o
o
Lo probé en SQL Server 2012 y hace un trabajo excelente.
No soy el autor del procedimiento. Cualquier mejora que le haga, envíela a Lowell Izaguirre ([email protected]).
fuente
La forma más fácil y rápida en la que puedo pensar sería usar sp_help
sp_help 'TableName'
fuente
Utilice esta pequeña aplicación de línea de comandos de Windows que obtiene el
CREATE TABLE
script (con restricciones) para cualquier tabla. Lo he escrito en C #. Simplemente compílelo y llévelo en una tarjeta de memoria. Quizás alguien pueda portarlo a Powershell.fuente
fuente
Esto devolverá columnas, tipos de datos e índices definidos en la tabla:
Esto devolverá los disparadores definidos en la tabla:
fuente
Desde SQL 2012 puede ejecutar la siguiente declaración:
Si ingresa una declaración de selección compleja (uniones, subselecciones, etc.), le dará la definición del conjunto de resultados. Esto es muy útil si necesita crear una nueva tabla (o tabla temporal) y no desea verificar cada definición de campo de forma manual.
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-describe-first-result-set-transact-sql
fuente
Simplemente escriba el nombre de la tabla, selecciónelo y presione ATL + F1
Digamos que el nombre de su tabla es,
Customer
luego abra una nueva ventana de consulta , escriba y seleccione el nombre de la tabla y presione ALT + F1Mostrará la definición completa de tabla.
fuente
Una variación de la respuesta de @Anthony Faull para aquellos que usan LINQPad:
Deberá hacer referencia a 2 ensamblados:
Y agregue referencias de espacio de nombres como se menciona en el fragmento de Anthony.
fuente
Sé que es una vieja pregunta, pero exactamente lo que estaba buscando. Como quiero crear un script por lotes para algunas tablas, reescribí el código C # de Anthony Faull para PowerShell.
Este usa seguridad integrada:
Y aquí con nombre de usuario y contraseña:
fuente
Pruebe el procedimiento almacenado sp_help.
sp_help <>
fuente
Como complemento a la respuesta de Barry. El sp_help también se puede utilizar por sí mismo para iterar todos los objetos en una base de datos en particular. También tiene sp_helptext para su arsenal, que codifica elementos programáticos, como procedimientos almacenados.
fuente
Otra forma es ejecutar el procedimiento sp_columns .
fuente
fuente
"Tenga en cuenta que realmente quiero el DDL que define la tabla".
use pg_dump:
Le brinda la definición de la tabla (
-s
es solo esquema, sin datos) de una tabla determinada (nombre de la-t
tabla) en la base"dbname"
de datos en SQL simple. Además, obtendrá información de secuencia, clave principal y restricción. La salida que puede, tal vez después de verificar y editar según sus necesidades, volver a ingresar a la base de datos de Postgres (la misma u otra):Esto es para UNIX / Linux, pero estoy seguro de que también existe un pg_dump para Windows.
fuente