Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
- 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%);
- 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;
crear una base de datos con un grupo de archivos optimizado para la memoria y un contenedor
use master
CREATE DATABASE imoltp
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
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
IF @UserId IS NULL
THROW 51000, N'The session or shopping cart does not exist.', 1
EXEC usp_AssignCart 1
GO
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).
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.
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.
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.
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.
LABORATORIO No.2.6.
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.
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];
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;
USE[BD2017TSQL];
ALTER TABLE CSJ.Employee ADD Gender char(1) NOT NULL;
USE BD2017TSQL;
ALTER TABLE CSJ.Employee ADD FullName AS LastName+', '+FirstName;
USE [BD2017TSQL];
ALTER TABLE csj.Employee
ADD Active bit NOT NULL;
USE BD12017SSMS;
ALTER TABLE CSJ.Employee
ADD Active bit NOT NULL;
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.
USE BD2017TSQL;
ALTER TABLE CSJ.Employee
ADD CONSTRAINT PK_CSJ_EmployeeID
PRIMARY KEY (EmployeeID);
USE BD12017SSMS
ALTER TABLE [CSJ].[Adress]
ADD CONSTRAINT PK_CSJ_AddressID
PRIMARY KEY (AddressID);
USE BD2017TSQL;
ALTER TABLE csj.Address
ADD CONSTRAINT FK_Employee_To_Address_On_EmployeeID
FOREIGN KEY (EmployeeID)
REFERENCES csj.Employee(EmployeeID);
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.
Employee (CSJ)
EmployeeID
FirstName
MiddleName
LastName
FullName
Active
SocialSecurityNumber
Address (CSJ)
AddressID
StreetAddress
StreetAddress2
City
State
EmployeeID
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.
USE [BD12017SSMS]
ALTER TABLE [CSJ].[Adress] DROP CONSTRAINT [FK_Employee_To_Address_On_EmployeeID]
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
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.
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)
Í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.
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
Í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.
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.
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.