none
Creacion de una nueva base de datos RRS feed

  • Pregunta

  • Hola amigos otra ves con una preguntica.

     

    Tengo la siguiente situación una base de datos con una tabla y dos procedimientos almacenados

    Cuando esa base de datos se llene yo debo de crear otra base de datos con la misma tabla y los mismos procedimiento almacenado. Mi pregunta es si existe alguna sentencia o algún procedimiento almacenado que me deje crear la nueva base de datos igual que la anterior sin datos.

     

    Muchas gracias.

    lunes, 9 de julio de 2007 17:04

Respuestas

  • Pues deberias pasarle un parametro de tipo SYSNAME, ejemplo:

     

    Si creo el script de mi MASTER, quedaria asi:

     

    IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'master')
     DROP DATABASE [master]
    GO

    CREATE DATABASE [master]  ON (NAME = N'master', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\master.mdf' , SIZE = 17, FILEGROWTH = 10%) LOG ON (NAME = N'mastlog', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\mastlog.ldf' , SIZE = 2, FILEGROWTH = 10%)
     COLLATE Traditional_Spanish_CI_AS
    GO

     

    Lo debo cambiar, para que reciba un parametro

     

    DECLARE @Mybase sysname, @SQLString NVARCHAR(1000)

     

    SET @Mybase = 'PATITO'

     

    IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = @Mybase)

       BEGIN

         SET @SQLString = N''DROP DATABASE ['+@Mybase+']'
           EXECUTE sp_executesql @SQLString

       END

     

    SET @SQLString = N'CREATE DATABASE '+@Mybase+'  ON (NAME = N''+@Mybase+'', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\'+@Mybase+'.mdf' , SIZE = 17, FILEGROWTH = 10%) LOG ON (NAME = N''+@Mybase+'log'', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\'+@Mybase+'log.ldf' , SIZE = 2, FILEGROWTH = 10%)
     COLLATE Traditional_Spanish_CI_AS'

    -- Antes de ejecutar la siguiente linea, verifica que la estructura sea la correcta

    SELECT @SQLString
    -- EXECUTE sp_executesql @SQLString
    GO

     

     

    lunes, 9 de julio de 2007 19:22

Todas las respuestas

  • Si, desde tu consola de administracion, crea tu SCRIPT de creacion de base de datos y lo ejecutas cuantas veces quieras.

     

    Solo una cosa, NO SE PUEDE LLAMAR IGUAL y con los mismos archivos MDF y LDF, a menos que primero la eliminaras (cuidado, pierdes tus datos que actualmente tienes).

     

    Saludos

    lunes, 9 de julio de 2007 18:46
  • Hola isaias y muchas gracias por la ayuda, pero cuando yo creo el scipt el meguarda el nombre de la base de datos. mi pregunta es la siguiente como hago para cambiarle el nombre o cuando lo debo de hacer. si me puedes dar un ejemplo te lo agradeceria mucho.

     

    gracias.

    lunes, 9 de julio de 2007 19:06
  • Pues deberias pasarle un parametro de tipo SYSNAME, ejemplo:

     

    Si creo el script de mi MASTER, quedaria asi:

     

    IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'master')
     DROP DATABASE [master]
    GO

    CREATE DATABASE [master]  ON (NAME = N'master', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\master.mdf' , SIZE = 17, FILEGROWTH = 10%) LOG ON (NAME = N'mastlog', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\mastlog.ldf' , SIZE = 2, FILEGROWTH = 10%)
     COLLATE Traditional_Spanish_CI_AS
    GO

     

    Lo debo cambiar, para que reciba un parametro

     

    DECLARE @Mybase sysname, @SQLString NVARCHAR(1000)

     

    SET @Mybase = 'PATITO'

     

    IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = @Mybase)

       BEGIN

         SET @SQLString = N''DROP DATABASE ['+@Mybase+']'
           EXECUTE sp_executesql @SQLString

       END

     

    SET @SQLString = N'CREATE DATABASE '+@Mybase+'  ON (NAME = N''+@Mybase+'', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\'+@Mybase+'.mdf' , SIZE = 17, FILEGROWTH = 10%) LOG ON (NAME = N''+@Mybase+'log'', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\'+@Mybase+'log.ldf' , SIZE = 2, FILEGROWTH = 10%)
     COLLATE Traditional_Spanish_CI_AS'

    -- Antes de ejecutar la siguiente linea, verifica que la estructura sea la correcta

    SELECT @SQLString
    -- EXECUTE sp_executesql @SQLString
    GO

     

     

    lunes, 9 de julio de 2007 19:22