SQL Server - Crear base de datos con SP

   
Vista:

Crear base de datos con SP

Publicado por Fredy Ayala (20 intervenciones) el 02/06/2009 18:46:31
Buenas amigos expertos, necesito consultarles algo.

Estoy diseñando un sistema contable, multiempresa, para cada empresa quiero habilitar una nueva base de datos, pero la creacion de la base de datos quiero que sea dinamica, para lo cual necesito crear un store procedure que reciba como parametro el nombre de la base de datos y la ruta. Lo hice como sigue:

create procedure CreaBaseDatos
@vNombre varchar(60),
@vRuta varchar(60)
as
Create Database "@vNombre"
on primary(name = "@vNombre",
FileName = "@vRuta",
Size = 3 MB,
MaxSize = 3000 MB,
FileGrowth = 20%);
go

Me crea sin problema, pero al intentar ejecutar de la sgte manera:

execute CreaBaseDatos 'Comercial5', 'C:SistemaBaseDatosComercial5.mdf'

Me da error.

Alguien puede ayudarme con esto? Les agradecere infinitamente.

Atentamente,
Fredy Ayala
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

RE:Crear base de datos con SP

Publicado por Isaias (3181 intervenciones) el 02/06/2009 18:53:08
Si consultas tu ayuda en linea, te daras cuenta que debes utilizar una especie de query dinamico.

USE master;
GO
IF DB_ID (N'Sales') IS NOT NULL
DROP DATABASE Sales;
GO
-- Get the SQL Server data path
DECLARE @data_path nvarchar(256);
SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1 AND file_id = 1);

-- execute the CREATE DATABASE statement
EXECUTE ('CREATE DATABASE Sales
ON
( NAME = Sales_dat,
FILENAME = '''+ @data_path + 'saledat.mdf'',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
FILENAME = '''+ @data_path + 'salelog.ldf'',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB )'
);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar