· 7 years ago · Nov 29, 2018, 01:50 AM
1Backups Jobs:
2
3BACKUP DATABASE [NombreBD]
4TO DISK = N'G:\DatabaseBackups\CE.bak'
5
6
7
8BACKUP DATABASE [CurrencyExchange]
9 TO DISK = N'G:\DatabaseBackups\CE.bak'
10 WITH DIFFERENTIAL;
11
12BACKUP LOG [CurrencyExchange]
13 TO DISK = N'F:\TLogBackups\CE.log';
14GO
15
16
17
181. ¿Cuáles son los tipos de Triggers en SQL Server? (1 punto)
19-Instead of, after of, clr
20
212. Mencione dos recomendaciones de uso de stored procedure (1 punto)
22- set not bound, para que no aparezca registro de salto de lÃnea
23- que tenga muchas capturas de errores try catch
24- que use transacción
25
263. ¿Qué tipo de funciones se pueden crear? (1 punto)
27
28
294. Mencione 2 recomendaciones o cosas a tomar en cuenta al realizar backups (1 punto)
30
31- No realizar backups en el disco local
32- Realizar backups de manera periódica
33- Verificar las fechas de generación de backups
34
355. ¿Un backup diferencial, que porción de datos contiene? (1 punto)
36
37
38De la fecha actual al último backup full
39
40----
41
422. Stored procedure (4 puntos)
43• Crear un stored procedure que servirá para actualizar o insertar nuevos productos.
44• Debe recibir toda la información completa de un producto que se va a actualizar o a insertar.
45• Según los valores recibidos debe decidir si el procedure debe ejecutar una actualización o un nuevo registro.
46• Luego de actualizar o registrar el producto, debe guardar en la tabla LogEventos el ID del producto actualizado o registrado, la acción (update o insert) y la fecha actual.
47• Usar un bloque try / catch, dentro del try debe ejecutar una transacción que incluye la modificación/registro en la tabla productos y el registro de la información en la tabla LogEventos, dentro del bloque catch debe revertir la transacción.
48• En el caso de ser una inserción devolver en el RETURN un valor de 0 (cero), y en el caso de actualización en el RETURN devolver un valor de 1 (uno).
49• Como parámetro de salida, devolver el ID del producto insertado o actualizado (considerar que el ID del producto es un identity).
50• Como parte de la solución debe entregar el llamado al stored procedure y la recepción de los valores devueltos.
51
52
53-- si es que no está creado
54CREATE TABLE logEventos(
55 id INT,
56 nombre varchar(50),
57 fecha datetime
58);
59
60-- cambiar a CREATE en la primera vez
61ALTER PROCEDURE dbo.InsertUpdateProduct
62 @id int = null,
63 @nombre varchar(50),
64 @descripcion varchar(1500),
65 @precio decimal(6, 2),
66 @categoria_id int,
67 @stock int,
68 @visitas int,
69 @nuevoid int OUTPUT
70AS
71 SET NOCOUNT ON
72 BEGIN TRANSACTION
73 BEGIN TRY
74 IF (@id IS NULL)
75 BEGIN
76 --agregar
77 INSERT INTO productos(nombre, descripcion, precio, categoria_id, stock, visitas)
78 VALUES (@nombre, @descripcion, @precio, @categoria_id, @stock, @visitas)
79
80 DECLARE @idnuevo INT
81 SET @idnuevo = IDENT_CURRENT('productos')
82
83 INSERT INTO logEventos(id, nombre, fecha)
84 VALUES (@idnuevo, 'insert', GETDATE())
85
86 SET @nuevoid = @idnuevo
87 COMMIT
88 RETURN 0
89 END
90 ELSE
91 BEGIN
92 --actualizar
93 UPDATE productos SET
94 nombre = @nombre,
95 descripcion = @descripcion,
96 precio = @precio,
97 categoria_id = @categoria_id,
98 stock = @stock,
99 visitas = @visitas
100 WHERE id = @id
101
102 INSERT INTO logEventos(id, nombre, fecha)
103 VALUES (@id, 'update', GETDATE())
104
105 SET @nuevoid = @id
106 COMMIT
107 RETURN 1
108 END
109 END TRY
110 BEGIN CATCH
111 ROLLBACK
112 END CATCH
113
114--update
115DECLARE @idinterno INT
116DECLARE @resultado INT
117exec @resultado = dbo.InsertUpdateProduct
118@id = 34,
119@nombre = 'Pruebaaa 22',
120@descripcion = 'Desc',
121@precio = 100,
122@categoria_id = 1,
123@stock = 20,
124@visitas = 100,
125@nuevoid = @idinterno OUTPUT
126SELECT @idinterno
127
128--insert
129DECLARE @idinterno INT
130DECLARE @resultado INT
131exec @resultado = dbo.InsertUpdateProduct
132@nombre = 'Pruebaaa 55',
133@descripcion = 'Desc5',
134@precio = 100,
135@categoria_id = 1,
136@stock = 20,
137@visitas = 100,
138@nuevoid = @idinterno OUTPUT
139SELECT @idinterno
140
141SELECT * FROM productos
142
143--------------------------------------------TRIGGERS
144
145--CREATE TABLE personas(
146-- id int identity,
147-- nombres varchar(75),
148-- apellidos varchar(75),
149-- correo varchar(75)
150--)
151
152--CREATE TABLE HistorialCambios(
153-- id int identity,
154-- accion varchar(7),
155-- id_eliminado int,
156-- id_insertado int,
157-- fecha datetime default(getdate())
158--)
159
160CREATE TRIGGER tr_HistorialCambios
161 ON personas
162 FOR DELETE, INSERT, UPDATE
163 AS
164 BEGIN
165 SET NOCOUNT ON
166 if exists (select * from inserted)
167 begin
168 if not exists (select *from deleted)
169 begin
170 --insert
171 declare @id_insertado int
172 set @id_insertado = (select id from inserted )
173 insert into HistorialCambios (accion , id_insertado , fecha )
174 values('insert',@id_insertado, GETDATE())
175 end
176 else
177 begin
178 --update
179 declare @id_insertadoAntigua int
180 declare @id_insertadoNueva int
181
182 set @id_insertadoAntigua = (select id from deleted )
183 set @id_insertadoNueva = (select id from inserted )
184
185 insert into HistorialCambios (accion,id_eliminado ,id_insertado ,fecha)
186 values ('update',@id_insertadoAntigua,@id_insertadoNueva , GETDATE())
187
188 end
189 end
190 else
191 begin
192 --deleted
193 declare @id_eliminado int
194 set @id_eliminado = (select id from deleted )
195 insert into HistorialCambios (accion , id_eliminado , fecha )
196 values('delete',@id_eliminado, GETDATE())
197 end
198
199 END
200
201insert into personas values('juan 1', 'perez 1', 'juan1@corre.com');
202select * from personas;
203select * from HistorialCambios;
204
205
206update personas set correo = 'juan1@correo.com' where id = 1;
207
208select * from personas;
209select * from HistorialCambios;
210delete from personas where id=1;
211
212select * from personas;
213select * from HistorialCambios;
214
215
216---------------------- VIEWS
217
218alter VIEW dbo.vw_Productos
219with encryption , schemabinding
220AS
221 Select nombre, precio , estado from dbo.productos where estado = 1
222
223with check option
224
225
226insert into vw_Productos (nombre , precio , estado) values('prueba1',100, 1)
227
228select * from vw_Productos
229sp_helptext vw_Productos
230
231update vw_Productos set estado = 2
232
233-----------------------------------------------