En Oracle, la sintaxis para borrar una tabla admite el modificador
"CASCADE CONSTRAINTS". Estas dos palabritas mágicas borran primero todas
las Foreing Keys que referencian a la tabla y luego, recién después se
borra la tabla.
En SQL Server esto no existe. Es decir, si uno
quiere borrar una tabla que es referenciada por otras tablas, primero
tiene que borrar "a mano" las FKs y luego recién podrá borrar la tabla.
En caso contrario, se encontrará con un simpático mensaje:
Msg 3726, Level 16, State 1, Line 1
Could not drop object 'ent_campana' because it is referenced by a FOREIGN KEY constraint.
Acá
dejo un muy modesto store procedure en Transact SQL que hace esto. Es
un burdo ejemplo de lo mal que uno puede programar cerca de la
medianoche, pero al menos funciona :)
-- USO:
-- droptable_cascade 'mytable'
create procedure droptable_cascade (@table_name varchar(500))
as
declare @fk_table_name varchar(500);
declare @const_name varchar(500);
declare vcursor cursor for
select const.name as const_name, fk_table.name fk_table_name
from sysobjects const
, sysobjects fk_table
, sysreferences sr
where const.id = sr.constid
and fk_table.id = sr.fkeyid
and sr.rkeyid = (select id from sysobjects where name = @table_name)
open vcursor
fetch next from vcursor
into @const_name, @fk_table_name
while @@fetch_status = 0
begin
exec ('alter table ' + @fk_table_name + ' drop constraint ' + @const_name);
-- Avanzamos otro registro
fetch next from vcursor
into @const_name, @table_name
end
close vcursor
deallocate vcursor
exec ('drop table ' + @table_name);
Fuente: http://laboticadellanga.blogspot.com/2009/01/drop-table-cascade-constraints-sql.html
http://stackoverflow.com/questions/6196878/equivalent-for-drop-table-table-name-cascade-constraints-in-sql-server
Mostrando entradas con la etiqueta base de datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta base de datos. Mostrar todas las entradas
miércoles, 27 de noviembre de 2013
viernes, 7 de junio de 2013
Backup automáticos de bases de datos SQL Server 2008
Hace mucho tiempo que he tenido la necesidad de generar copias de
seguridad (Backup) de las bases de datos que estoy utilizando, en muchos
lugares han publicado opciones que son funcionales pero que no utilizan
las herramientas que SQL Server tiene, gracias a todos los lugares que
visite se me vino una idea a la mente!!! se las detallo a continuación:
Primero les comentare un poco acerca de lo que utilice para tener en el servidor la programado para la generación de copias de seguridad automáticas lo que se necesita es lo siguiente;
1.Script para la generación de los BACKUP.
2. Agente de SQL Server.
El primer paso es crear el script que genera el respaldo de la base de datos, les dejo el script para que ustedes remplacen las variables necesarias de manera que les sirva en su objetivo:
USE nombre_de_su_base;
GO
declare @fecha varchar(MAX)
declare @archivo varchar(MAX)
set @fecha = CONVERT(Varchar(max), GETDATE(),102)+'_'+SUBSTRING(CONVERT(varchar(10), getdate(),108),1,2)+SUBSTRING(CONVERT(varchar(10), getdate(),108),4,2)+'horas'
set @archivo ='C:\nombredelacarpetaBACKUP\nombre_de_su_base'+@fecha+'.bak'
BACKUP DATABASE nombre_de_su_base
TO DISK = @archivo
WITH FORMAT,
MEDIANAME = 'D_SQLServerBackups',
NAME = 'Full Backup of nombre_de_su_base';
GO
Explico un poco el código:
Se han creado dos variables @fecha y @archivo, @fecha es la fecha en la que sea creado el respaldo, es una buena practica ponerle la fecha para identificar la antigüedad del respaldo. La otra variable es @archivo la cual contiene la ruta en la que se guardara el respaldo, si lo hacen directamente en la raíz de la unidad "C" es posible que tengan problemas de permiso de escrituras, por eso les recomiendo que coloquen el respaldo en una carpeta. Donde dice "nombre_de_su_base" deben cambiarlo por nombre de la base a la cual se le generara un respaldo de seguridad.
El resto del código es Transact-SQL, les dejo la siguiente URL para enriquezcan mas los conocimiento del mismo: http://msdn.microsoft.com/es-es/library/ms189826(v=SQL.90).aspx
Como segundo paso debemos configurar el Agente de SQL Server para programar una tarea que será que encargada de ejecutar el Script que sea especificado en el paso uno, para ello haremos lo siguiente:
1. Iniciar sesión en el SQL Server Management para poder tener acceso a la configuración del Agente de SQL Server.
2. Al entrar al SQL Server Management observaremos en el explorar de objetos que el agente de SQL Server que encuentra al final del arbol del explorar
Al dar click en icono del + se desplegara un submenu y en el esta la opción de Trabajos que es lo que nos interesa.
3. Al desplegar el SubMenu del Agente de SQL Server se debe crear un nuevo trabajo, para ello debemos dar click derecho para que se desplique lo siguiente:
En la ventana llamada "Nuevo trabajo" se especificara el nombre
que tendrá la tarea que ejecutara el script para generar los respaldos
de la base, adicional al nombre es recomendable que se escriba una breve
descripción de la funcionalidad.
5. Al haber especificado en nombre de la tarea, damos click en la opción "Pasos" que se encuentra ubicada en la parte superior izquierda de la ventana "Nuevo trabajo", para configurar esa opción se hace lo siguiente:
Primero les comentare un poco acerca de lo que utilice para tener en el servidor la programado para la generación de copias de seguridad automáticas lo que se necesita es lo siguiente;
1.Script para la generación de los BACKUP.
2. Agente de SQL Server.
El primer paso es crear el script que genera el respaldo de la base de datos, les dejo el script para que ustedes remplacen las variables necesarias de manera que les sirva en su objetivo:
USE nombre_de_su_base;
GO
declare @fecha varchar(MAX)
declare @archivo varchar(MAX)
set @fecha = CONVERT(Varchar(max), GETDATE(),102)+'_'+SUBSTRING(CONVERT(varchar(10), getdate(),108),1,2)+SUBSTRING(CONVERT(varchar(10), getdate(),108),4,2)+'horas'
set @archivo ='C:\nombredelacarpetaBACKUP\nombre_de_su_base'+@fecha+'.bak'
BACKUP DATABASE nombre_de_su_base
TO DISK = @archivo
WITH FORMAT,
MEDIANAME = 'D_SQLServerBackups',
NAME = 'Full Backup of nombre_de_su_base';
GO
Explico un poco el código:
Se han creado dos variables @fecha y @archivo, @fecha es la fecha en la que sea creado el respaldo, es una buena practica ponerle la fecha para identificar la antigüedad del respaldo. La otra variable es @archivo la cual contiene la ruta en la que se guardara el respaldo, si lo hacen directamente en la raíz de la unidad "C" es posible que tengan problemas de permiso de escrituras, por eso les recomiendo que coloquen el respaldo en una carpeta. Donde dice "nombre_de_su_base" deben cambiarlo por nombre de la base a la cual se le generara un respaldo de seguridad.
El resto del código es Transact-SQL, les dejo la siguiente URL para enriquezcan mas los conocimiento del mismo: http://msdn.microsoft.com/es-es/library/ms189826(v=SQL.90).aspx
Como segundo paso debemos configurar el Agente de SQL Server para programar una tarea que será que encargada de ejecutar el Script que sea especificado en el paso uno, para ello haremos lo siguiente:
1. Iniciar sesión en el SQL Server Management para poder tener acceso a la configuración del Agente de SQL Server.
2. Al entrar al SQL Server Management observaremos en el explorar de objetos que el agente de SQL Server que encuentra al final del arbol del explorar
3. Al desplegar el SubMenu del Agente de SQL Server se debe crear un nuevo trabajo, para ello debemos dar click derecho para que se desplique lo siguiente:
Como
pueden observar tenemos la opción de Nuevo trabajo, demos click ahí
para dar inicio la configuración del nuevo trabajo o tarea.
4. Cuando damos click en Nuevo trabajo aparecerá la siguiente ventana:
5. Al haber especificado en nombre de la tarea, damos click en la opción "Pasos" que se encuentra ubicada en la parte superior izquierda de la ventana "Nuevo trabajo", para configurar esa opción se hace lo siguiente:
En
la ventana "nuevo paso" especificamos el nombre, la base de datos a la
cual se le hará el respaldo y en la parte donde dice "Comando" hay que
copiar el Script ya modificado a su conveniencia y damos un click en
el botón Aceptar.
6.
Ahora es el momento de programar la frecuencia con la que se generar los
respaldo de seguridad, para ello damos click en la opción
"Programaciones", para configurar una programación hacemos lo
siguiente:
En
la ventana "Nueva Programación de trabajo" especificamos un nombre para
poder identificar la programación, en la sección "Frecuencia"
especificamos con que frecuencia queremos que se ejecute la tarea, para
los respaldos de la base es recomendable que se haga diario o según la
necesidad, si seleccionan con una frecuencia diaria en la sección
"Frecuencia Diaria" pueden especificar la hora de inicio y fin y otros
datos más que que puede ser de utilidad. una ves sea hecho todas las
especificaciones de la programación damos aceptar y luego aceptar para
terminar con la configuración del Agente de SQL Server.
Bueno
es todo lo que hay que hacer para tener la generación de copias de
seguridad de las bases de datos... Espero le ayude....
Exitos y que Dios les bendiga...
FUENTE:http://programadoressv.blogspot.com/2011/02/backup-automaticos-de-bases-de-datos.html
Suscribirse a:
Entradas (Atom)
