¿Cómo generar un script en SQL SERVER 2008 R2 sin usar la interfaz de usuario? [cerrado]

Hola, estoy usando SQL SERVER 2008 R2, ¿alguien puede ayudarme a generar un script como crear, modificar sin usar la interfaz de usuario?

preguntado el 28 de agosto de 12 a las 13:08

¿Qué objetos en el servidor sql necesita para generar un script? -

4 Respuestas

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:

enter image description here

contestado el 23 de mayo de 17 a las 12:05

Puede utilizar el Scripter class en SQL Management Objects (SMO) para hacer esto.

p.ej: http://www.mssqltips.com/sqlservertip/1833/generate-scripts-for-database-objects-with-smo-for-sql-server/

Respondido 28 ago 12, 13:08

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

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

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 or haz tu propia pregunta.