2011-11-16 21 views

Respuesta

16

1) Abra SQL Server Management Studio 2) Seleccionar la base de datos en el Explorador de objetos 3) Haga clic derecho> Tareas> generar secuencias de comandos

enter image description here

4) Seleccionar procedimientos sólo almacenados para ser escrito a cabo

enter image description here

5) Siguiendo el asistente través de los pasos; En la siguiente pantalla, la opción Single file per object escoger y definir un directorio donde poner esos archivos:

enter image description here

Con estas opciones, se obtiene un archivo por cada procedimiento almacenado, almacenado en el directorio de su elección.

+0

Oye, quiero 130 archivos separados para cada SP :(me está dando solo un archivo – Neo

+0

@ashuthinks: donde quiera que estén! Paso a través del asistente - le preguntará si desea un archivo para todos los procesos almacenados , o un archivo por proceso almacenado, y le preguntará dónde almacenar esos ... –

+1

@ashuthinks: vea mi tercera captura de pantalla: ¿eso es lo que está buscando? ** ** Un archivo por objeto ** ?? –

3

Puede hacer esto en el estudio de gestión: haga clic con el botón derecho en la base de datos que desee y seleccione tareas -> Generar scripts -> vaya a través del asistente. A continuación, puede especificar con exactitud los procedimientos almacenados etc.

También puede utilizar un script como el siguiente:

SET NOCOUNT ON 
DECLARE @Test TABLE (Id INT IDENTITY(1,1), Code VARCHAR(MAX)) 

INSERT INTO @Test (Code) 
SELECT 'IF object_ID(N''[' + schema_name(schema_id) + '].[' + Name + ']'') IS NOT NULL 
      DROP PROCEDURE ['+ schema_name(schema_id) +' ].[' + Name + ']' + CHAR(13) + CHAR(10) + 'GO' + CHAR(13) +CHAR(10) + 
      OBJECT_DEFINITION(OBJECT_ID) + CHAR(13) +CHAR(10) + 'GO' + CHAR(13) + CHAR(10) 
      FROM sys.procedures 
      WHERE is_ms_shipped = 0 

DECLARE @lnCurrent INT, @lnMax INT 
DECLARE @LongName VARCHAR(MAX) 

SELECT @lnMax = MAX(Id) FROM @Test 
SET @lnCurrent = 1 
WHILE @lnCurrent <= @lnMax 
     BEGIN 
      SELECT @LongName = Code FROM @Test WHERE Id = @lnCurrent 
      WHILE @LongName <> '' 
       BEGIN 
        PRINT LEFT(@LongName,8000) 
        SET @LongName = SUBSTRING(@LongName, 8001, LEN(@LongName)) 
       END 
      SET @lnCurrent = @lnCurrent + 1 
     END 

También puede Shift + clic para seleccionar todos los procedimientos almacenados y se puede entonces hacer clic derecho y escritura ellos a un archivo.

-2

Puede usar DB pro (herramientas de Visual Studio para la base de datos) para hacer esto también. Para obtener más información, consulte esto - https://www.mssqltips.com/sqlservertip/2971/creating-a-visual-studio-database-project-for-an-existing-sql-server-database/

Editar: Se ha actualizado el enlace obsoleto.

+0

Lamentablemente, el enlace está ahora muerto. Solo se desalientan las respuestas de enlace por exactamente esa razón. Si la respuesta se editó para incluir algún contenido, se podría guardar. –

Cuestiones relacionadas