copia base datos

08/01/2007 - 13:14 por meri | Informe spam
Hola a todos,

A ver si podeis ayudarme, tengo el siguiente problema,

Creo una copia de la estructura de una bbdd para luego crear una bbdd
igual a la anterior en otro servidor (solo quiero la estructura, no los
datos), y lo hago con el asistente del Enterprise Manager, generando un
script sql con todos los objetos de la base de datos. El script queda
algo parecido a lo siguiente:

CREATE DATABASE [Pruebas] ON (NAME = N'Pruebas_dat', FILENAME N'F:\Datos Sql\Pruebas.mdf' , SIZE = 790, FILEGROWTH = 10%) LOG ON
(NAME = N'Prueba_log', FILENAME = N'G:\Logs Sql\Prueba_log.ldf' , SIZE
= 2, FILEGROWTH = 10%)
COLLATE Traditional_Spanish_CI_AI
GO

exec sp_dboption N'GesLife', N'autoclose', N'false'
GO

exec sp_dboption N'GesLife', N'bulkcopy', N'true'
GO


use [Pruebas]
GO

if not exists (select * from master.dbo.syslogins where loginname N'usuario_pruebas')
BEGIN
declare @logindb nvarchar(132), @loginlang nvarchar(132) select
@logindb = N'Pruebas', @loginlang = N'Español'
if @logindb is null or not exists (select * from
master.dbo.sysdatabases where name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from
master.dbo.syslanguages where name = @loginlang) and @loginlang <>
N'us_english')
select @loginlang = @@language
exec sp_addlogin N'usuario_pruebas', null, @logindb, @loginlang
END
GO


CREATE TABLE [dbo].[Usuarios] (
[Id_Usuario] [int] IDENTITY (1, 1) NOT NULL ,
[Nombre] [varchar] (20) NOT NULL ,
[Apellido] [varchar] (20) NOT NULL ,
[Fec_Anulacion] [datetime] NULL
) ON [PRIMARY]
GO

etc. etc.

El caso es que después de hacer esto varias veces para trabajar con
copias de la bbdd, me he dado cuenta de que me ha creado también en la
base de datos 'Master' todas las tablas de esa base de datos que estoy
copiando. Y no entiendo por qué ha ocurrido esto, ya que en el script
pone 'use [Pruebas]' que sería la base de datos que estoy creando.
Alguien sabe por qué puede estar ocurriendo esto?

Muchas gracias
 

Leer las respuestas

#1 Maxi
08/01/2007 - 13:21 | Informe spam
Hola, si lo creo en la master es porque quizas en alguna ocacion no hayas
puesto el use, yo te recomiendo hacerlo en 2 pasos, primero ejecutar hasta
la creacion de la bdd, luego asegurar el USER y por ultimo la creacion de
los objetos


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"meri" escribió en el mensaje
news:
Hola a todos,

A ver si podeis ayudarme, tengo el siguiente problema,

Creo una copia de la estructura de una bbdd para luego crear una bbdd
igual a la anterior en otro servidor (solo quiero la estructura, no los
datos), y lo hago con el asistente del Enterprise Manager, generando un
script sql con todos los objetos de la base de datos. El script queda
algo parecido a lo siguiente:

CREATE DATABASE [Pruebas] ON (NAME = N'Pruebas_dat', FILENAME N'F:\Datos Sql\Pruebas.mdf' , SIZE = 790, FILEGROWTH = 10%) LOG ON
(NAME = N'Prueba_log', FILENAME = N'G:\Logs Sql\Prueba_log.ldf' , SIZE
= 2, FILEGROWTH = 10%)
COLLATE Traditional_Spanish_CI_AI
GO

exec sp_dboption N'GesLife', N'autoclose', N'false'
GO

exec sp_dboption N'GesLife', N'bulkcopy', N'true'
GO


use [Pruebas]
GO

if not exists (select * from master.dbo.syslogins where loginname N'usuario_pruebas')
BEGIN
declare @logindb nvarchar(132), @loginlang nvarchar(132) select
@logindb = N'Pruebas', @loginlang = N'Español'
if @logindb is null or not exists (select * from
master.dbo.sysdatabases where name = @logindb)
select @logindb = N'master'
if @loginlang is null or (not exists (select * from
master.dbo.syslanguages where name = @loginlang) and @loginlang <>
N'us_english')
select @loginlang = @@language
exec sp_addlogin N'usuario_pruebas', null, @logindb, @loginlang
END
GO


CREATE TABLE [dbo].[Usuarios] (
[Id_Usuario] [int] IDENTITY (1, 1) NOT NULL ,
[Nombre] [varchar] (20) NOT NULL ,
[Apellido] [varchar] (20) NOT NULL ,
[Fec_Anulacion] [datetime] NULL
) ON [PRIMARY]
GO

etc. etc.

El caso es que después de hacer esto varias veces para trabajar con
copias de la bbdd, me he dado cuenta de que me ha creado también en la
base de datos 'Master' todas las tablas de esa base de datos que estoy
copiando. Y no entiendo por qué ha ocurrido esto, ya que en el script
pone 'use [Pruebas]' que sería la base de datos que estoy creando.
Alguien sabe por qué puede estar ocurriendo esto?

Muchas gracias

Preguntas similares