¿Cómo generar un script en SQL SERVER 2008 R2 sin usar la interfaz de usuario? [cerrado]
Frecuentes
Visto 10,530 veces
0
Hola, estoy usando SQL SERVER 2008 R2, ¿alguien puede ayudarme a generar un script como crear, modificar sin usar la interfaz de usuario?
4 Respuestas
5
Los procedimientos almacenados, las vistas, las funciones, etc. se pueden programar desde sys.sql_modules
mientras no estén encriptados:
SELECT definition
FROM sys.sql_modules
WHERE [object_id] = OBJECT_ID(N'dbo.object_name');
O si desea escribir varios scripts:
SELECT definition + CHAR(13) + CHAR(10) + 'GO'
FROM sys.sql_modules
WHERE OBJECT_NAME([object_id]) IN (N'name1', N'name2', ...);
O todos:
SELECT '--' + QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
+ '.' + QUOTENAME(OBJECT_NAME([object_id]))
+ CHAR(13) + CHAR(10) + definition
+ CHAR(13) + CHAR(10) + 'GO' + CHAR(13) + CHAR(10)
FROM sys.sql_modules
WHERE definition IS NOT NULL;
(Por supuesto, todos estos están condenados si los ejecuta en Management Studio y cualquiera excede la longitud máxima de una cadena de salida allí, ~ 8K en resultados a texto. Pero parece que desea consumirlos en otro lugar).
Tenga en cuenta que esto no generará una secuencia de comandos de la configuración SET que estaba vigente en el momento en que se creó el objeto, pero podría ampliar esta consulta para incluir configuraciones como ANSI_NULLS
y QUOTED_IDENTIFIER
- que puedes obtener desde la misma vista.
Las tablas son un poco más complicadas. Si genera la secuencia de comandos en SSMS mientras se ejecuta Profiler, verá que lo hace a través de una gran cantidad de consultas y construye la secuencia de comandos de creación de tabla dentro del código (en otras palabras, no puede olfatearla). Puede ser bastante complejo dependiendo de las opciones que esté usando para su tabla, si necesita secuencias de comandos de todas las claves foráneas y objetos dependientes, etc. Para esto, preferiría el método SMO resaltado en la respuesta de podiluska.
Si ya está usando SSMS, entonces no entiendo el propósito de NO usar los elementos del menú generar scripts. Puede hacerlo para varios objetos utilizando Detalles del Explorador de objetos en lugar de Explorador de objetos, si el problema es el enfoque único:
contestado el 23 de mayo de 17 a las 12:05
3
Puede utilizar el Scripter
class en SQL Management Objects (SMO) para hacer esto.
Respondido 28 ago 12, 13:08
Scripter Class msdn
msdn.microsoft.com/en-us/library/ms162153.aspx - Vishwanath Dalvi
me gusta crear el script en SSMS. - Vikrant Más
@VikrantMore No entiendo: ¿quiere crear el script en SSMS, pero no quiere usar la GUI? - Aarón Bertrand
@AaronBertrand Tú y yo - Podiluska
1
Prueba esto:
Cree un sproc con los siguientes pasos.
1. Primero obtenga todos los nombres de las tablas para las que necesita crear un script de tabla.
2. Recorra cada tabla y obtenga la siguiente información:
select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
3. Ahora, en el bucle mismo, intente completar dinámicamente el script de creación de tabla.
Respondido 28 ago 12, 13:08
No hay mucho más a una tabla que la lista de columnas. - Aarón Bertrand
sí, puede unirse a otras historias del sistema para obtener información como restricciones, claves, etc. AnandPhadke
0
Escribí una utilidad de línea de comando de código abierto llamada SchemaZen que hace esto. Es mucho más rápido que las secuencias de comandos de Management Studio y su salida es más fácil de controlar. Admite la creación de scripts tanto de esquema como de datos.
Para generar scripts, ejecute:
script schemazen.exe --server localhost --database db --scriptDir c: \ somedir
Luego, para recrear la base de datos a partir de scripts, ejecute:
schemazen.exe crear --server localhost --database db --scriptDir c: \ somedir
Respondido 16 Jul 15, 15:07
Esta es una buena herramienta --- muy rápida, limpia y simple --- pero aún tiene limitaciones para su uso en producción. Sería genial con algunas correcciones y mejoras por parte de usted u otros colaboradores. - Martín_W
@Martin_ATS Envíe solicitudes de funciones aquí github.com/sethreno/schemazen/issues/nuevo - seth reno
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas sql-server-2008 sql-server-2008-r2 or haz tu propia pregunta.
¿Qué objetos en el servidor sql necesita para generar un script? - AnandPhadke