Está en la página 1de 33

Diseñando Bases de Datos

LABORATORIO No. 2.1

Creación de la primera base de datos con SSMS

1. Abra SSMS.
2. Abra el Explorador de objetos, si no está ya abierto.
3. Haga clic en la flecha que aparece junto a su servidor.
4. Haga clic en la carpeta Bases de datos.
5. En el menú contextual, seleccione Nueva base de datos.
6. Se abre el cuadro de diálogo Nueva base de datos. Asegúrese de que está seleccionado
general en Seleccionar una página a la izquierda.
7. En el cuadro de texto Nombre de base de datos, escriba BD12017SSMS.
8. En la sección de Archivos de base de datos (Database Files), busque la columna Ruta
(path). En la primera fila de acceso a la columna Ruta, haga clic en el botón de puntos
suspensivos. Vaya a C: \ SQLData.
9. En la misma fila, en la columna Nombre de archivo (file name), escriba BD12017SSMS.
10. En la segunda fila, en la columna Ruta de acceso (Path), haga clic en el botón de
puntos suspensivos. Vaya a C: \ SQLLog.
11. En la misma fila, en la columna Nombre de archivo, escriba BD12017SSMS_log.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

12. Haga clic en Aceptar.

Creación de la primera base de datos con T-SQL

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba el siguiente código T-SQL:

- Utilice este script para crear una base de datos mediante T-SQL

USE master;
CREATE DATABASE BD2017TSQL
ON PRIMARY
(NAME='BD2017TSQL', FILENAME = 'C:\SQLDATA\BD2017TSQL.mdf', SIZE=10MB, MAXSIZE=20,
FILEGROWTH=10%)
LOG ON
(NAME='BD2017TSQL_log', FILENAME = 'C:\SQLLog\BD2017TSQL_log.ldf', SIZE=10MB, MAXSIZE=200,
FILEGROWTH=20%);

LABORATORIO No. 2.2

Añadir archivos y grupos de archivos utilizando SSMS

1. Abra SSMS y conectarse a una instancia de servidor SQL.


2. Expanda la carpeta Bases de datos.
3. Haga clic derecho en la base de datos BD12017SSMS y seleccione Propiedades.
4. Seleccionar grupos de archivos (Filegroups) de la sección Seleccionar una página (Selec
a page) del cuadro de diálogo Propiedades de base de datos.
5. Haga clic en el botón Agregar en la sección Filas (Rows).
6. En la fila de nueva, en la columna Nombre, escriba BD2017SSMSGrp1.
7. En la segunda fila, en la columna Valor predeterminado (default), marque la casilla.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

8. En la sección Seleccionar una página, seleccione los archivos (files) y, a continuación,


maximice la ventana.
9. Haga clic en Agregar (Add).
10. En la fila de nueva creación, en la columna Nombre lógico (Logical Name), introduzca
BD2017SSMS1.
11. En la columna Grupo de archivos, seleccione BD2017SSMSGrp1.
12. En la columna de la ruta, haga clic en el botón de puntos suspensivos. Vaya a C: \
SQLData.
13. En la columna Nombre de archivo, escriba BD2017SSMS1.ndf.
14. Haga clic en Aceptar (OK).

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

Añadir archivos y grupos de archivos mediante T-SQL

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba el siguiente código T-SQL:

- Use este código para agregar un archivo y grupo de archivos a una base de datos.

USE master
ALTER DATABASE BD2017TSQL
ADD FILEGROUP BD2017TSQLGrp1;
ALTER DATABASE BD2017TSQL
ADD FILE
(
NAME='BD2017TSQL2',
FILENAME='C:\SQLData\BD2017TSQL2.ndf',
SIZE=10MB,
MAXSIZE=20,
FILEGROWTH=10%
)
TO FILEGROUP BD2017TSQLGrp1;

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

LABORATORIO No. 2.3

crear una base de datos con un grupo de archivos optimizado para la memoria y un contenedor

use master
CREATE DATABASE imoltp
GO

ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATA


ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='C:\SQLData\imoltp_mod1')
TO FILEGROUP imoltp_mod
ALTER DATABASE imoltp SET MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT=ON
GO

crear una tabla optimizada para memoria duradera (los datos serán persistentes)
dos de las columnas están indexadas

USE imoltp
GO
CREATE TABLE dbo.ShoppingCart (
ShoppingCartId INT IDENTITY(1,1) PRIMARY KEY NONCLUSTERED,
UserId INT NOT NULL INDEX ix_UserId NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000),
CreatedDate DATETIME2 NOT NULL,
TotalPrice MONEY
) WITH (MEMORY_OPTIMIZED=ON)
GO

crea una tabla no duradera.


Los datos no se conservarán, la pérdida de datos si el servidor se apaga inesperadamente

CREATE TABLE dbo.UserSession (


SessionId INT IDENTITY(1,1) PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT=400000),
UserId int NOT NULL,
CreatedDate DATETIME2 NOT NULL,
ShoppingCartId INT,
INDEX ix_UserId NONCLUSTERED HASH (UserId) WITH (BUCKET_COUNT=400000)
)
WITH (MEMORY_OPTIMIZED=ON, DURABILITY=SCHEMA_ONLY)
GO

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

insertar datos en las tablas

INSERT dbo.UserSession VALUES (342, SYSDATETIME(), 4)


INSERT dbo.UserSession VALUES (65, SYSDATETIME(), NULL)
INSERT dbo.UserSession VALUES (8798, SYSDATETIME(), 1)
INSERT dbo.UserSession VALUES (80, SYSDATETIME(), NULL)
INSERT dbo.UserSession VALUES (4321, SYSDATETIME(), NULL)
INSERT dbo.UserSession VALUES (8578, SYSDATETIME(), NULL)

INSERT dbo.ShoppingCart VALUES (8798, SYSDATETIME(), NULL)


INSERT dbo.ShoppingCart VALUES (23, SYSDATETIME(), 45.4)
INSERT dbo.ShoppingCart VALUES (80, SYSDATETIME(), NULL)
INSERT dbo.ShoppingCart VALUES (342, SYSDATETIME(), 65.4)
GO

verificar el contenido de la tabla

SELECT * FROM dbo.UserSession


SELECT * FROM dbo.ShoppingCart
GO

actualizar estadísticas en tablas optimizadas para memoria

UPDATE STATISTICS dbo.UserSession WITH FULLSCAN, NORECOMPUTE


UPDATE STATISTICS dbo.ShoppingCart WITH FULLSCAN, NORECOMPUTE
GO

En una transacción explícita, asigne un cart a una sesión y actualice el precio total.
SELECT/UPDATE/DELETE declaraciones en transacciones explícitas

BEGIN TRAN
UPDATE dbo.UserSession SET ShoppingCartId=3 WHERE SessionId=4
UPDATE dbo.ShoppingCart SET TotalPrice=65.84 WHERE ShoppingCartId=3
COMMIT
GO

verificar el contenido de la table


SELECT *
FROM dbo.UserSession u JOIN dbo.ShoppingCart s on u.ShoppingCartId=s.ShoppingCartId
WHERE u.SessionId=4
GO

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

Procedimiento almacenado originalmente compilado para asignar un carrito de compras a una


sesión

CREATE PROCEDURE dbo.usp_AssignCart @SessionId int


WITH NATIVE_COMPILATION, SCHEMABINDING
AS
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')

DECLARE @UserId INT,


@ShoppingCartId INT

SELECT @UserId=UserId, @ShoppingCartId=ShoppingCartId


FROM dbo.UserSession WHERE SessionId=@SessionId

IF @UserId IS NULL
THROW 51000, N'The session or shopping cart does not exist.', 1

UPDATE dbo.UserSession SET ShoppingCartId=@ShoppingCartId WHERE SessionId=@SessionId


END
GO

EXEC usp_AssignCart 1
GO

LABORATORIO No. 2.4

Separar una base de datos SQL Server utilizando SSMS.

1. Abra SSMS.
2. Abra el Explorador de objetos, si no está ya abierto.
3. Expanda el nodo de servidor.
4. Expanda la carpeta Bases de datos.
5. Haga clic derecho en la base de datos BD12014SSMS.
6. Seleccione Tareas | Separar (Task|Detach).

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

7. En el cuadro de diálogo Separar base de datos, seleccione las casillas en eliminar


conexiones (Drop Connections) y la columna de Actualizar Estadisticas (Update Statistics).

8. Haga clic en Aceptar (Ok).

Ahora que la base de datos se separa, puede copiar los archivos a la nueva ubicación de
almacenamiento y adjuntar la base de datos a una nueva instancia de SQL Server.

Separar una base de datos de SQL Server mediante T-SQL

1. Abra SSMS y, a continuación, abra una nueva ventana de consulta.


Escuela Tecnológica Instituto Técnico Central
http://www.itc.edu.co
Diseñando Bases de Datos

2. Ingrese y ejecute el siguiente script:


USE Master;
USE Master;
EXEC sp_detach_db @dbname = 'BD2017TSQL';

Adjuntar una base de datos SQL Server utilizando SSMS

1. Abra SSMS.
2. Abra el Explorador de objetos, si no está ya abierto.
3. Expanda el nodo de servidor.
4. Haga clic en la carpeta Bases de datos.
5. Haga clic en Adjuntar.

6. Haga clic en el botón Agregar.


7. En el cuadro de diálogo Buscar archivos de base de datos, expanda la carpeta con la
etiqueta C.
8. Busque y expanda la carpeta SQLData y, a continuación, seleccione el archivo
BD12017SSMS.mdf.
9. Haga clic en Aceptar.
10. Haga clic en Aceptar.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

Adjuntar una base de datos de SQL Server mediante T-SQL

1. Abra SSMS y, a continuación, abra una nueva ventana de consulta.


2. Ingrese y ejecute el siguiente script:

USE master;
CREATE DATABASE BD2017TSQL ON
(FILENAME = 'C:\SQLData\BD2017TSQL.mdf'),
(FILENAME = 'C:\SQLData\BD2017TSQL2.ndf'),
(FILENAME = 'C:\SQLLog\BD2017TSQL_log.ldf')
FOR ATTACH;

LABORATORIO 2.5.

Crear un esquema de base de datos utilizando SSMS.

1. Abra SSMS y conectarse a una instancia de SQL Server.


2. Expanda la carpeta Bases de datos.
3. Ampliar la base de datos BD12017SSMS.
4. Expanda la carpeta Seguridad (Security).
5. Haga clic en la carpeta de esquemas y seleccione Nuevo esquema en el menú
contextual.
6. Cuadro de diálogo Nuevo del esquema, escriba Ventas en el cuadro de texto Nombre de
esquema (Schema Name) y en el cuadro de texto de esquema propietario. (Shema Owner)
escriba dbo.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

7. Haga clic en Aceptar (OK).

Crear un esquema de base de datos mediante T-SQL

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código T-SQL:

USE BD2017TSQL;
GO
CREATE SCHEMA CSJ;
GO
CREATE SCHEMA BEXTSA;
GO

Una última cosa a mencionar acerca de los esquemas es que se puede conceder a los
usuarios permisos para esquemas.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

LABORATORIO No.2.6.

Crear una tabla utilizando SSMS

1. Con SSMS abierto, expanda la carpeta Bases de datos.


2. Ampliar la base de datos BD12017SSMS.
3. Haga clic derecho en la carpeta Tablas. Se abre el diseñador de tablas.
4. Seleccione Nueva tabla en el menú.
5. En la columna Nombre de columna, escriba AddressID.
6. Haga clic en la columna Tipo de datos y seleccione int de la lista desplegable.
7. En la ficha Propiedades de columna que se encuentra en la parte inferior de la ventana
del diseñador de tablas, desplácese hacia abajo para ampliar y Especificación de
identidad(Identity).
8. Establezca la propiedad es la identidad (is identity) en Yes.
9. En la siguiente fila de la lista de columnas, escriba StreetAddress en la columna
Nombre de columna.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

10. Haga clic en la columna Tipo de datos y seleccione varchar de la lista desplegable, el
cambio de la longitud de la cadena de caracteres a 125.
11. Desmarque la casilla bajo la columna Permitir valores nulos.
12. Repita los pasos 9 a 11 para cada columna adicional, estableciendo la propiedad de
acuerdo con las especificaciones.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

13. Seleccione Ver | Propiedades (view Properties). Se abrirá la ventana Propiedades.


14. Busque y haga clic en la propiedad de esquema. Seleccione CSJ de la lista desplegable.
15. Busque y expanda el Regular propiedad Data Especificación Espacio (Regular Data
Space Specification). En el grupo de archivos o partición Nombre de esquema de
propiedad, asegúrese de que está seleccionado BD2017SSMSGrp1.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

16. Haga clic en el botón Guardar (Save).


17. Escriba Adress en el cuadro de texto en la ventana Elegir nombre.
18. Haga clic en Aceptar.

Crear una tabla mediante T-SQL

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código T-SQL:

USE [BD2017TSQL];
CREATE TABLE CSJ.Address
(
AddressID int NOT NULL IDENTITY(1,1),
StreetAddress varchar(125) NOT NULL,
StreetAddress2 varchar(75) NULL,
City varchar(100) NOT NULL,
State char(2) NOT NULL,
EmployeeID int NOT NULL
) ON [BD2017TSQLGrp1];

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

LABORATORIO. No. 2.7

Ejecute este scrip antes de iniciar el laboratorio

USE BD2017TSQL;
CREATE TABLE CSJ.Employee
(
EmployeeID int NOT NULL IDENTITY(1,1),
FirstName varchar(50) NOT NULL,
MiddleName varchar(50) NULL,
LastName varchar(50) NOT NULL
) ON BD2017TSQLGrp1;

USE BD12017SSMS;
CREATE TABLE CSJ.Employee
(
EmployeeID int NOT NULL IDENTITY(1,1),
FirstName varchar(50) NOT NULL,
MiddleName varchar(50) NULL,
LastName varchar(50) NOT NULL
) ON BD2017SSMSGrp1;

Agregar una columna a una tabla existente utilizando SSMS.

1. Asegúrese de que SSMS es abierta y está conectado a su servidor.


2. Expanda la carpeta Bases de datos.
3. Ampliar la base de datos BD12017SSMS
4. Expanda la carpeta Tablas.
5. Haga clic en la tabla CSJ.Employee y seleccione Diseño (Design).
6. En la primera columna vacía de la columna Name escriba Gender.
7. En la columna Tipo de datos (Data Type), el tipo char (1).
8. En la columna Permitir valores nulos (Alow Nulls), desactive la casilla.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

9. Haga clic en Guardar.

Agregar una columna a una tabla existente utilizando T-SQL.

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código T-SQL:

USE[BD2017TSQL];
ALTER TABLE CSJ.Employee ADD Gender char(1) NOT NULL;

LABORATORIO. No. 2.8

Agregar una columna calculada utilizando SSMS

1. Asegúrese de que SSMS es abierta y está conectado a su servidor.


2. Expanda la carpeta Bases de datos.
3. Ampliar la base de datos BD12017SSMS.
4. Expanda la carpeta Tablas.
5. Haga clic en la tabla CSJ.Employee y seleccione Diseño.
6. Debajo de Género, en la siguiente fila, escriba FullName y pulse la tecla Tab.
7. En la sección de propiedades de la columna en la parte inferior de la pantalla
diseñador de tablas, busque y expanda la propiedad Especificación de columna
calculada (Computed Column Specification).
8. En la propiedad de fórmulas, escriba LastName + "," + FirstName.
Escuela Tecnológica Instituto Técnico Central
http://www.itc.edu.co
Diseñando Bases de Datos

9. Haga clic en Guardar.

Agregar una columna calculada utilizando T-SQL

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código T-SQL:

USE BD2017TSQL;
ALTER TABLE CSJ.Employee ADD FullName AS LastName+', '+FirstName;

LABORATORIO. No. 2.9

Agregar restricciones utilizando SSMS

Ejecute la siguiente consulta antes de seguir los pasos de este ejercicio:

USE [BD2017TSQL];
ALTER TABLE csj.Employee
ADD Active bit NOT NULL;

ALTER TABLE CSJ.Employee


Escuela Tecnológica Instituto Técnico Central
http://www.itc.edu.co
Diseñando Bases de Datos

ADD SocialSecurityNumber varchar(10) NOT NULL;

USE BD12017SSMS;
ALTER TABLE CSJ.Employee
ADD Active bit NOT NULL;

ALTER TABLE CSJ.Employee


ADD SocialSecurityNumber varchar(10) NOT NULL;

1. Asegúrese de que SSMS es abierta y está conectado a su servidor.


2. Expanda la carpeta Bases de datos.
3. Ampliar la base de datos BD12017SSMS.
4. Expanda la carpeta Tablas.
5. Haga clic en la tabla CSJ.Employee, a continuación, seleccione Diseño.
6. Haga clic derecho en la columna EmployeeID y, a continuación, seleccione Establecer
clave principal en el menú contextual.

7. Seleccione la columna Active.


8. En la ventana Propiedades, busque Valor predeterminado o propiedad Binding
(Default Value or Binding).
9. Escriba 1 como el valor de la propiedad.
10. En la barra de menú, haga clic en los Índices de Gestión y teclas icono.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

11. Haga clic en el botón Agregar en la ventana Índices / Claves (Indexes/Key Windows)
12. Busque la propiedad Name y escriba UQ_Employee_SSN como el valor de la
propiedad.
13. Busque la propiedad es única (Is Unique) y establezca el valor en sí (Yes).
14. Busque la propiedad Tipo (Type) y establezca el valor de clave única (Unique Key).
15. Haga clic en Cerrar.

16. En el Explorador de objetos, expanda la tabla CSJ.Employee si no está ya expandida.


17. Haga clic derecho en la columna Restricciones (Constraints) y, a continuación,
seleccione Nuevo restricción en el menú contextual.
18. En el cuadro de diálogo de restricción de comprobación, cambie el valor de la
propiedad Name a CK_Employee_Gender_MF.
19. Haga clic en los puntos suspensivos de la propiedad Expression, aparece un cuadro de
expresiones.
20. En el cuadro Expresión, escriba ([Gender = 'Mujer' OR [Gender] = 'Hombre').

21. Haga clic en Cerrar.


Escuela Tecnológica Instituto Técnico Central
http://www.itc.edu.co
Diseñando Bases de Datos

22. Haga clic en Guardar.

Agregar una columna calculada utilizando T-SQL

1. Abra el Editor de consultas de SSMS.


2. En el editor de consultas, escriba y ejecute el siguiente código T-SQL:

USE BD2017TSQL;
ALTER TABLE CSJ.Employee
ADD CONSTRAINT PK_CSJ_EmployeeID
PRIMARY KEY (EmployeeID);

ALTER TABLE CSJ.Address


ADD CONSTRAINT PK_CSJ_AddressID
PRIMARY KEY (AddressID);

ALTER TABLE CSJ.Employee


ADD CONSTRAINT DF_CSJ_Active_True
DEFAULT(1) FOR Active;

ALTER TABLE CSJ.Employee


ADD CONSTRAINT UQ_CSJ_SocialSecurityNumber
UNIQUE (SocialSecurityNumber);

LABORATORIO No. 2.10

Crear restricciones de clave externa utilizando SSMS

Antes de seguir los pasos de este ejercicio, ejecutar este script:

USE BD12017SSMS
ALTER TABLE [CSJ].[Adress]
ADD CONSTRAINT PK_CSJ_AddressID
PRIMARY KEY (AddressID);

1. Asegúrese de que SSMS es abierta y está conectado a su servidor.


2. Expanda la carpeta Bases de datos.
3. Ampliar la base de datos BD12017SSMS.
4. Expanda la carpeta Tablas.
5. Expanda la tabla CSJ.Address.
6. Haga clic en la carpeta Claves (Keys) y seleccione Nueva clave externa (New foreign
key).
Escuela Tecnológica Instituto Técnico Central
http://www.itc.edu.co
Diseñando Bases de Datos

7. En el cuadro de diálogo Relaciones de clave externa, busque la propiedad Name y


escriba FK_Employee_To_Address_On_EmployeeID como valor.

8. Haga clic la propiedad especificación de tablas y propiedades (Tables and Columns


Specification)
9. Haga clic en el botón de puntos suspensivos que aparece.
10. En el cuadro de diálogo de Especificación Tablas y columnas, seleccione Empleado
(CSJ) en la lista desplegable de la tabla primaria Key.
11. Seleccione EmployeeID en la lista desplegable directamente debajo de la lista
desplegable Tabla Primaria Key (Primary Key Table).
12. En la lista desplegable a la derecha, seleccione EmployeeID.
13. Haga clic en Aceptar.
14. Haga clic en Cerrar.
15. Haga clic en Guardar.
16. Si aparece una ventana de advertencia, haga clic en Sí.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

Crear restricciones de clave externa utilizando T-SQL

17. Abra el Editor de consultas de SSMS.


18. En el editor de consultas, escriba y ejecute el siguiente código T-SQL:

USE BD2017TSQL;
ALTER TABLE csj.Address
ADD CONSTRAINT FK_Employee_To_Address_On_EmployeeID
FOREIGN KEY (EmployeeID)
REFERENCES csj.Employee(EmployeeID);

LABORATORIO. No. 2.11

Crear un diagrama de base de datos utilizando SSMS

1. Para crear un diagrama de base de datos, expanda la base de datos


AdventureWorks2017.
2. Expanda la carpeta diagrama de base.
3. Se le pedirá para crear objetos de soporte para diagramar si esta es la primera vez que
ha creado un diagrama en esta base de datos. Haga clic en Sí.
4. Haga clic en la carpeta Diagramas de base de datos y seleccione Nuevo diagrama de
base de datos. Seleccione las tablas que se muestran en la siguiente imagen,
mantenga pulsada la tecla Mayús mientras hace clic en las tablas.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

5. Haga clic en Agregar

Usted verá un diagrama de base de datos que incluyen una lista completa de las columnas
para cada tabla y, lo más importante, las relaciones de clave externa entre las tablas.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

Employee (CSJ)
EmployeeID
FirstName
MiddleName
LastName
FullName
Active
SocialSecurityNumber

Address (CSJ)
AddressID
StreetAddress
StreetAddress2
City
State
EmployeeID

LABORATORIO. No. 2.12

Migración de Tablas a Memoria

1. Asegúrese de que SSMS es abierta y está conectado a su servidor.


2. Expanda la carpeta Bases de datos.
3. Ampliar la base de datos BD12017SSMS.
4. Expanda la carpeta Tablas.
5. Haga clic derecho sobre la tabla candidata (Employee)
6. Seleccione la opción Memory Optimization Advisor
7. Se abre el tutor “optimizador de memoria”, dar clic a Next.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

8. El Asistente encontró que algunas relaciones de foreign y Primary Key están definidas
con esta tabla, se recomienda removerlas y reconstruirlas cuando la tabla este
migrada.

Nota: Remover permanentemente Foreign y Primary Key de la tabla.

USE [BD12017SSMS]
ALTER TABLE [CSJ].[Adress] DROP CONSTRAINT [FK_Employee_To_Address_On_EmployeeID]

ALTER TABLE [CSJ].[Employee]


DROP CONSTRAINT [PK_CSJ_EmployeeID];

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

9. Correr de nuevo el asistente dar clic en Next

Nota: Memory Optimization Advisor revisa una lista de verificación para ver si la tabla
cumple con todos los requisitos necesarios para migrarla a la memoria. Si todas las
verificaciones pasan, hacer clic en Next. De lo contrario, haga clic en el mensaje de error
para identificar el problema. Solucionar el problema antes de continuar con la migración.

10. Tener en cuenta que en la pantalla siguiente no se genere ningú n Warning para
continuar

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

--Script to get the list of referenced objects with their definitions,

--before renaming the column

DECLARE @ColumnName NVARCHAR(256) = 'EmployeeID'


;With Depends
AS
(
SELECT
SCHEMA_NAME(AB.Schema_id)+'.'+SED.referenced_entity_name TableName,
Si ColumnName,
C.name hubiera generado algú n warning se debe determinar si la columna en este caso la
SCHEMA_Name(AOB.schema_id)+'.'+AOB.name PackageName,
primary Key tiene alguna dependencia con algú n otro objeto dentro de la base de
AOB.type_desc PackageType ,
datos se ejecuta
SED.referencing_id PackageID ,el siguiente Query para determinar las dependencias:
SM.definition PackageDefinition
FROM sys.columns C
JOIN sys.all_objects AB
ON C.Object_id = AB.Object_id
JOIN sys.sql_expression_dependencies SED
ON SED.referenced_id = AB.Object_id
JOIN sys.all_objects AOB
ON AOB.object_id = SED.referencing_id
LEFT JOIN sys.sql_modules SM
ON SM.object_id = SED.referencing_id
WHERE C.name = @ColumnName
)
SELECT * INTO #temp FROM Depends
UNION ALL
SELECT SCHEMA_NAME(T.Schema_id)+'.'+Object_name(AOB.parent_object_id),
C.name,
SCHEMA_NAME(AOB.Schema_id)+'.'+tr.name,
AOB.type_desc PackageType ,
AOB.object_id,
SM.definition
FROM sys.triggers Tr
JOIN sys.all_objects AOB
ON AOB.Object_id = Tr.Object_id
JOIN sys.columns C
ON C.object_id = AOB.parent_object_id
JOIN sys.tables T
ON T.Object_id = C.Object_id
JOIN sys.sql_modules SM Escuela Tecnológica Instituto Técnico Central
ON SM.object_id = Tr.Object_id http://www.itc.edu.co
WHERE C.name = @ColumnName

SELECT * FROM #temp


Diseñando Bases de Datos

 Después de ejecutar el Query, se evidencia la dependencia con una vista


 Se procede a Eliminar la vista y después de que se halla migrado la tabla se crea
nuevamente.
 Correr nuevamente el Asistente hasta llegar al paso en el cual se generó el warning
11. Ingresar el nombre del grupo de archivos y el nombre del archivo lógico si no se llena
automáticamente
12. Ingresar la ruta del archivo en C: \ ‘Escriba_ruta ’ alternativamente, hacer clic en el
botón puntos suspensivos (...) para buscar la ubicación para almacenar el archivo
lógico y busque C: \ ‘Escriba_ruta ’
13. En Renombrar la tabla original como:, proporcionar el nombre que se le asignará a la
tabla existente (usar nombre_tabla_old).

14. Marcar casilla de verificación Also copy table data to the new memory optimized
table y haga clic en Next.

NOTA: No marcar la última casilla de verificación en esta página, ya que borrará los datos
de la tabla después de reiniciar el servidor.

15. Seleccionar la Llave Primaria de la tabla marcando en una o más columnas


enumeradas e incluir bucket count 1024 . Y dar Next
Escuela Tecnológica Instituto Técnico Central
http://www.itc.edu.co
Diseñando Bases de Datos

16. Migración de Índices, seleccionar índices nonclustered a migrar.

17. Verificar el resumen y clic en Migrar

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

18. Hacer clic en ok para salir del asistente cuando se pasen todos los resultados
(tener en cuenta que los comentarios no son un problema)

LABORATORIO. No. 2.13

Índice ColumnStore
Un columnstore index es una tecnología de almacenamiento, recuperació n y
administració n de datos que emplea un formato de datos en columnas denominado
almacén de columnas.
Escuela Tecnológica Instituto Técnico Central
http://www.itc.edu.co
Diseñando Bases de Datos

Un almacén de columnas son datos organizados ló gicamente como una tabla con filas
y columnas, y almacenados físicamente en un formato de columnas.

Un índice de almacén almacena físicamente la mayoría de los datos en formato de


almacén de columnas. Con este formato, los datos se comprimen y descomprimen como
columnas.

Crear un índice clúster de almacén de datos

use [BD12017SSMS]
CREATE TABLE SimpleTable(
ProductKey [int] NOT NULL,
OrderDateKey [int] NOT NULL,
DueDateKey [int] NOT NULL,
ShipDateKey [int] NOT NULL);
GO
CREATE CLUSTERED COLUMNSTORE INDEX cci_Simple ON SimpleTable;
GO

Convertir un índice clúster en un índice clúster de columnStore

CREATE TABLE SimpleTable1 (


ProductKey [int] NOT NULL,
OrderDateKey [int] NOT NULL,
DueDateKey [int] NOT NULL,
ShipDateKey [int] NOT NULL);
GO
CREATE CLUSTERED INDEX cl_simple ON SimpleTable1 (ProductKey);
GO
CREATE CLUSTERED COLUMNSTORE INDEX cl_simple ON SimpleTable1
WITH (DROP_EXISTING = ON);
GO

Índice hash
Todas las tablas optimizadas para memoria deben tener como mínimo un índice porque
son los índices los que conectan las filas. En una tabla optimizada para memoria, todos los
índices también son optimizados para memoria. Los índices de hash son uno de los tipos
de índice posibles en una tabla optimizada para memoria.

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co
Diseñando Bases de Datos

Los índices de hash constan de una matriz de punteros, y cada elemento de la matriz se
llama "cubo de hash".

 Cada depósito tiene 8 bytes, que se usan para almacenar la dirección de memoria de
una lista de vínculos de entradas de índice.
 Cada entrada es un valor correspondiente a una clave de índice, además de la
dirección de su fila correspondiente en la tabla subyacente optimizada para memoria.
 Cada entrada apunta a la siguiente entrada en una lista de vínculos de entradas, todas
ellas encadenadas al depósito actual.

El número de cubos debe especificarse en el momento de definir los índices:

 Cuanto menor sea la proporción de depósitos con respecto a las filas de la tabla o
valores distintos, más larga será la lista de vínculos de depósito promedio.
 Las listas de vínculos cortas se ejecutan más rápidamente que las listas de vínculos
largas.
 El número máximo de cubos en los índices de hash es de 1 073 741 824.

La función hash se aplica a las columnas de clave de índice, y el resultado de la función


determina a qué contenedor pertenece dicha clave. Los cubos tienen un puntero a las filas
cuyos valores de clave con hash se asignan a estos cubos.

ALTER TABLE MyTable_memop


ADD INDEX ix_hash_Column2 UNIQUE
HASH (Column2) WITH (BUCKET_COUNT = 64);

Escuela Tecnológica Instituto Técnico Central


http://www.itc.edu.co

También podría gustarte