Diseñar tablas - Parte 2

Creación de tablas


El lenguaje T-SQL está dividido en dos categorías distintas de comandos: lenguaje de definición de datos
(Data Definition Language -DDL) y Lenguaje de manipulación de datos (Data Manipulation Language - DML). Al crear, modificar y eliminar objetos dentro del motor de base de datos SQL Server, está utilizando comandos DDL.

Hay tres comandos básicos dentro DDL:
 
CREATE crea un objeto (por ejemplo, CREATE TABLE, CREATE INDEX, CREATE DATABASE )
ALTER modifica un objeto (por ejemplo, ALTER TABLE, ALTER INDEX, ALTER DATABASE )
DROP elimina un objeto (por ejemplo, DROP TABLE, DROP INDEX, DROP DATABASE )

Ejemplo: Crear una tabla(Creen cualquier base de datos y sigan el ejemplo)

En el siguiente ejercicio, comenzará con la creación de tablas para almacenar los clientes, pedidos, productos, y empleados.

CREATE TABLE Customer
(CustomerID INT IDENTITY(1,1),
CompanyName VARCHAR(50) NULL,
FirstName VARCHAR(50) NULL,
LastName VARCHAR(50) NULL,
ModifiedDate DATE NOT NULL)
GO

CREATE TABLE CustomerAddres
(AddressID INT IDENTITY(1,1),
AddressType VARCHAR(20) NOT NULL,
AddressLine1 VARCHAR(50) NOT NULL,
AddressLine2 VARCHAR(50) NULL,
AddressLine3 VARCHAR(50) NULL,
City VARCHAR(50) NOT NULL,
StateProvince VARCHAR(50) NULL,
Country VARCHAR(70) NULL)
GO

CREATE TABLE OrderHeader
(OrderID INT IDENTITY(1,1),
OderDate DATE NOT NULL,
SubTotal MONEY NOT NULL,
TaxAmount MONEY NOT NULL,
ShippingAmount MONEY NOT NULL,
FinalShipDate DATE NULL)
GO

CREATE TABLE OrderDetail
(OrderDetailID INT IDENTITY(1,1),
SKU CHAR(10) NOT NULL,
Quantity INT NOT NULL,
UnitPrice MONEY NOT NULL,
ShipDate DATE NULL)
GO

CREATE TABLE Product
(ProductID INT IDENTITY(1,1),
ProductName VARCHAR(50) NOT NULL,
ProductCost MONEY NOT NULL,
ListPrice MONEY NOT NULL,
ProductDescription XML NULL)
GO

CREATE TABLE Employee
(EmployeeID INT IDENTITY(1,1),
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
JobTitle VARCHAR(50) NOT NULL,
BirthDate DATE NOT NULL,
HireDate DATE NOT NULL)
GO

CREATE TABLE EmployeeAddress
(AddressID INT IDENTITY(1,1),
AddressType VARCHAR(20) NOT NULL,
AddressLine1 VARCHAR(50) NOT NULL,
AddressLine2 VARCHAR(50) NULL,
AddressLine3 VARCHAR(50) NULL,
City VARCHAR(50) NOT NULL,
StateProvince VARCHAR(50) NULL,
Country VARCHAR(70) NULL)
GO



Diseñar tablas - Parte 1

Diseñar tablas

El corazón de cualquier base de datos y el propósito de cualquier plataforma de base de datos es almacenar y gestionar datos.

Nombrar objetos

El nombre de un objeto es referido como un identificador. Con la excepción de algunas restricciones, cada objeto tiene un identificador que se asigna cuando se crea el objeto. Hay dos tipos de identificadores: los regulares y delimitados (regular and delimited).

Las reglas de los identificadores son como sigue:
*Máximo de 128 caracteres
*El primer carácter debe ser una letra
*No puede ser una palabra reservada de T-SQL
*No puede contener espacios ni caracteres especiales


Los nombres de objetos que no cumplan con las reglas para los identificadores, deben estar delimitados con
comillas dobles ", o bien con corchetes, []

Esquemas

Todos los objetos de una base de datos se crean dentro de un esquema. A la vez que un esquema
proporciona un medio para agrupar objetos, también proporciona un límite o marco de seguridad.

Sintaxis genérica para crear un esquema es la siguiente:

CREATE SCHEMA schema_name AUTHORIZATION owner_name

Tipos de datos

Una hoja de cálculos y una base de datos son muy similares a un nivel muy básico. Tanto las hojas de cálculo como las bases de datos tienen filas y columnas donde se almacenan los datos. Tanto las hojas de cálculo como las bases de datos permiten localizar, recuperar y manipular datos en una variedad de maneras. Una de las diferencias fundamentales entre una base de datos y una hoja de cálculo es que una base de datos proporciona e impone una estructura sobre los datos que se almacenan. Aunque es posible mezclar caracteres, datos numéricos, y fechas en una sola columna de una hoja de cálculo, la base de datos impide este tipo de estructura indefinida mediante el uso de tipos de datos asignados a una columna. Incluso aunque un tipo de datos no se conozca generalmente como una constraint, un tipo de datos es el mayor y
fundamental elemento de restricción de una base de datos, en la que se restringe el rango de los posibles
valores que están autorizados para ser almacenado dentro de una columna.

Los datos numericos

Uno de los tipos de datos más comunes que se encuentran dentro de SQL Server son los tipos de datos
numéricos. Hay nueve tipos de datos numéricos que se incluyen con SQL Server 2008. Cuatro tipos de datos están diseñados para almacenar valores enteros de varios tamaños. Dos tipos de datos están diseñados para almacenar los datos monetarios. Cuatro tipos de datos están diseñados para almacenar números decimales con distintas precisiones.

Tipo de dato                                 Rango de valores                                 Espacio de Almacenamiento
tinyint                                               0 hasta 255                                                               1 byte
------------------------------------------------------------------------------------------------------------
smallint                                           -32,768 Y 32,767                                                      2 bytes
------------------------------------------------------------------------------------------------------------
int                                                   -2^31 A 2^31 -1                                                       4 bytes
------------------------------------------------------------------------------------------------------------
bigint                                               -2^63 A 2^63 -1                                                       8 bytes
------------------------------------------------------------------------------------------------------------
decimal(p,s)                                    -10^38 1 -10^38 -1                                                  5 a 17 bytes
numeric(p,s)
------------------------------------------------------------------------------------------------------------
smallmoney                                    -214,748,3648 A 214,748,3647                                  8 bytes
------------------------------------------------------------------------------------------------------------
money                                           -922,337,203,685,477,5808 A                                     8 bytes
                                                      9,22,337,203,685,477,5807
------------------------------------------------------------------------------------------------------------
real                                            -3,4^38 A -1,18^38,0, y 1,18^38 a 3,4^38                      4 bytes
------------------------------------------------------------------------------------------------------------
FLOAT(n)                        -1,79^308 A -2,23^308, 0, y 2,23^308 a 1,79^308               4 bytes u 8 bytes

Los tipos de datos money y smallmoney están específicamente diseñados para almacenar valores monetarios
con un máximo de cuatro decimales. Es interesante observar que mientras money y smallmoney fueron
diseñados para almacenar valores monetarios, las instituciones financieras utilizan el tipo de datos decimal
debido a la capacidad de almacenar un mayor número de decimales que son críticos para cálculos de tasa de interés y rendimiento.

Los tipo de datos float tienen un parámetro opcional del número de dígitos almacenados después del decimal llamado mantisa. Si la mantisa está definida entre 1 y 24, entonces el float consumirá 4 bytes de
almacenamiento. Si la mantisa está definida entre 25 y 53, el float consumirá 8 bytes de almacenamiento.

Propiedades de columna

Puede aplicar varias propiedades a las columnas que afectan la forma en que se almacenan los datos o la
forma en que la columna se comporta. Tres de las propiedades más comunes que se aplican a las columnas
son: collation (intercalación), identidad y aceptación de valores NULL.

Se puede definir la propiedad IDENTIDAD (identity) sobre las columnas que tienen un tipo de datos numérico. Cuando se define la propiedad IDENTIDAD, conocida como una columna de identidad, SQL Server administra los valores de esta columna por usted. La definición de una identidad tiene dos parámetros, SEED e INCREMENT. El parámetro SEED (semilla), define el primer número que será asignado cuando se inserten datos en la tabla. El parametro INCREMENT (incremento), define el número que se añadirá al valor anterior para cada fila subsiguiente que se inserta en la tabla. Por ejemplo, una IDENTIDAD (1,2) iniciará en 1 y el incremento será de a 2 por cada nueva fila se inserta en la tabla, produciendo un conjunto de incremento de números impares.

Nulabilidad es la propiedad más común asignada a una columna. Cuando una columna se define como NOT
NULL, se requiere un valor para asignar a la columna. Cuando una columna se define como NULL, usted no tiene que asignar un valor a la columna.

Creación de base de datos - Parte 2

Estructura de una base de datos SQL Server

Los objetos que se crean dentro de una base de datos se denominan colectivamente como esquema de la base de datos. Los elementos que definen una base de datos, los componentes de almacenamiento, se conocen como la estructura de la base de datos. Una base de datos de SQL Server se define mediante un elemento físico, archivos en el sistema operativo y un elemento lógico utilizado para agrupar los archivos dentro de una base de datos.

Los archivos de la base de datos

Los archivos más comunes que soporta una base de datos SQL Server son archivos de datos y archivos de registro de transacciones. Las extensiones de archivos por defecto para los archivos de datos son los siguientes:

*Mdf
*Ndf
*Ldf

Creación de una base de datos

La creación de una base de datos es relativamente un proceso sencillo. La sintaxis genérica para la creación de una base de datos es la siguiente:

CREATE DATABASE database_name
[ON
[PRIMARY] [<filespec>[,...n]
[, <filegroup>[,....n]]
[LOG ON {<filespec>[,....n]}]]
[COLLATE collation_name]                         ]
[WITH <external_access_option>]]
[;]

Mover base de datos

A veces, puede que tenga que mover de lugar bases de datos dentro de su entorno para aprovechar espacio de almacenamiento adicional o maquinas con capacidad de procesamiento superior. Dado que SQL Server iniciara cada base de datos de una instancia y abrirá cada archivo asociado para operaciones de lectura/escritura, usted necesitará realizar varios pasos poder mover una base datos.

El primer paso del proceso, "separar" (detach), elimina la entrada en la base de datos de la instancia, cierra todos los archivos asociados con la base de datos, y libera todos los bloqueos del sistema operativo. EL paso final en el proceso, "adjuntar" (attach), crea una nueva entrada de base datos dentro de la instancia y abre todos los archivos asociados a la base de datos.

Una base de datos no se puede separar si se cumple alguna de las siguientes condiciones:
*La base de datos esta participando en una replicacion
*La base de datos esta participando en mirroring de base de datos
*Se ha creado una instantánea de base de datos
*La base de datos esta en modo sospechoso.
*La base de datos es una base de datos del sistema

Separar base de datos (detach)
1.- Inicie SQL Server y conéctese a su instancia de SQL Server 2008 en el explorador de objetos
2.- Haga clic derecho en la base de datos que ha creado, seleccione separar (detach).
3.- En cuadro de dialogo separar base de datos deje los valores predeterminados y de clic en acepar.
4.- La base de datos ya no deberá aparecer en el explorador de objetos.

Adjuntar base de datos (attach)
Existen restricciones al adjuntar una base de datos:
*La instancia tiene que estar en el mismo service pack / nivel de revisión (hotfix) o mas alto que el de la instancia de base de datos donde fue separada la base de dato.
*Todos los archivos de datos deben de estar disponibles.
*Debe copiar y poner todos archivos y directorios asociados a un tipo de datos FILESTREAM  en exactamente la misma estructura de directorios como la instancia donde se separó la base de datos.

1.- En el explorador de objetos, haga clic en el nodo base de datos y seleccione adjuntar (attach) desde el menú contextual
2.- Haga clic en agregar sobre la ventana de dialogo "Attach Database", en la sección "Database to attach", vaya a la ubicación del archivo .mdf de la base de datos, seleccione el archivo de la base de datos .mdf y haga clic en aceptar.
3.- Compruebe que el archivo de la base de datos existe en el explorador de objetos.


Creación de base de datos - Parte 1

Las bases de datos son los objetos primarios de SQL Server, tanto para el motor relacional como para SQL Server 2008 Analisys Services (SSAS). 

Bases de datos del sistema SQL Server

SQL Server incluye un conjunto de bases de datos de sistemas utilizadas para administrar los diversos aspectos del motor de base de datos:

master: La base de datos master esta en el corazón de cada instancia de SQL Server. Sin la base de datos master, SQL Server no se puede ejecutar. La base de datos master contiene información sobre el núcleo de objetos dentro de una instancia, tales como: 

*Bases de datos
*Logins
*Operaciones de configuración
*Endpoints
*Disparadores DDL a nivel de servidor
*Servidores vinculados (Linked)

model: La base de datos model es una platilla que utiliza SQL Server, cuando se crea una nueva base de datos. Cuando se realiza un comando CREATE DATABASE, SQL Server toma definición de la base de datos model y la aplica a la nueva base de datos que esta creando. El propósito de la base de datos model es permitir que los administradores creen objetos que se agregaran después automáticamente a las nuevas bases de datos que sean creadas.

msdb: La base de datos msdb es utilizada por el servicio de Agente de SQL Server  junto con SQL Server 2008 Integration Services (SSIS). El papel central de la base de datos msdb es almacenas los Jobs (trabajos) y schedules (programaciones) que son ejecutados por el agente SQL Server. Dentro de la base de datos msdb, puede encontrar la siguiente información:

*Reportes DTA (Database Engine Tuning Advisor)
*El historial de cualquier copia de seguridad/restauración ejecutada contra cualquiera de las bases de datos.
*La información de seguimiento para el envío de logs (registros)
*Jobs, pasos de Jobs y programaciones (schedules)
*Alertas
*Cuentas de proxy
*Planes de mantenimiento
*Paquetes SSIS
*Registro de correo de base de datos

tempdb: La base de datos tempdb es un área "borrador" dentro de SQL Server. El motor de SQL Server utiliza tempdb como un área de almacenamiento temporal cuando se hacen operaciones de ordenamiento y agregación. Todo lo creado por tempdb, es por su propia naturaleza, es temporal. Cuando se reinicia una instancia de SQL Server, tempdb es eliminada y vuelta a crear.

distribution: La base de datos distribution se crea en el "distribuidor" cuando se habilita la replicación.

Modos de autenticación

Autenticación

Una de las opciones de configuración de instancia que deberá establecer durante la instalación es el modo de autenticación que SQL Server utilizará para controlar los tipos de conexiones permitidas. El modo de autenticación de SQL Server se puede configurar como:

Sólo para Windows (seguridad integrada)
Windows y SQL Server (modo mixto)

Cuando SQL Server está configurado con autenticación de Windows, sólo podrá utilizar las cuentas de
Windows para acceder a la instancia de SQL Server. Cuando SQL Server se configura en modo mixto, puede utilizar cualquiera de las cuentas de Windows o cuentas de SQL Server creadas para ingresar a la instancia de SQL Server.

Secuencias de intercalación (Collation)

Collation

Las secuencias de intercalación controlan la forma en que SQL Server tarat los datos para el almacenamiento, la recuperación, la clasificación y las operaciones de comparación. SQL Server 2008 te permite especificar una secuencia de intercalación para soportar cualquier idioma utilizado actualmente en todo el mundo.

Las secuencias de intercalación se pueden especificar a nivel instancia, base de datos, tabla y columna. La única secuencia de intercalación obligatoria se define a nivel instancia, que por defecto aplica a todos los demás niveles a menos que sea específicamente desbloqueada.

Una secuencia de intercalación define el conjunto de caracteres que soportan junto con mayúsculas y minúsculas, distinción de acentos y la sensibilidad Kana (silabarios japoneses). Por ejemplo, si utiliza la secuencia de intercalación de SQL_Latin1_General_CP1_CI_AI, obtendrá soporte para conjunto de caracteres de Europa occidental que es insensible a mayúsculas y minúsculas y acento. SQL_Latin1_General_CP1_CI_AI trata los caracteres e, E, è, é, ê, y ë, como el mismo carácter para la clasificación y operaciones de comparación mientras que en una secuencia de intercalación francesa con "sensibilidad a mayúsculas" (case-sesitive) (CS) y acentos sensibles (AS), tratará a cada uno como carácter diferente.

Iniciación en SQL Server 2008

Motor de base de datos

El motor de base de datos es el servicio principal  que proporciona el servidor SQL, el cual permite almacenar, recuperar, procesar y proteger los datos. Los servicios del motor de base le permiten crear aplicaciones de alto rendimiento de base de datos para el procesamiento de transacciones en linea (OLTP: es un tipo de procesamiento que facilita y administra aplicaciones transaccionales, usualmente para entrada de datos, recuperación y procesamiento de transacciones.) y el soporte en linea de procesamiento analitico (OLAP: Es una solución utilizada en el campo de la llamada inteligencia empresarial cuyo objetivo es agilizar la consulta de grandes cantidades de datos.).

Motor de alamcenamiento

Se encuentra en el corazón de SQL Server, controlando cómo se almacenan los datos en el disco y estando a disposición de las aplicaciones. A pesar que el motor de almacenamiento es un componente interno con el que usted no interactúa directamente, contiene componentes vitales para el almacenamiento y gestión de sus datos.

Subsistema de seguridad

SQL Server 2008 incluye una infraestructura de seguridad muy potente y flexible que asegura que sus datos e instancias estén protegidos de intrusión.
SQL Server puede controlar la manera que a los clientes se les permite autenticar, mediante la aplicación de las credenciales de Windows o permitir inicios de sesión de SQL Server internos.

Interfaces de progrmación

A través de Transact-SQL (T-SQL), usted tiene acceso a una programación rica, simple y potente. Si el lenguaje T-SQL no sastisface las necesidades, podemos ampliar las características del servidor mediante el aprovechamiento de las capacidades de los lenguajes de programación dentro del "common languaje runtime" (CLR) tales como Microsoft Visual Basic o Microsoft Visual C#.

Service Broker (Servicio "agente o intermediario")

Se introdujo en SQL Server 2005 para proporcionar un sistema de cola de mensajes integrado en la plataforma de datos SQL Server. Basado en los mensajes definidos por el usuario y las acciones de procesamiento, se puede aprovechar service broker para proporcionar capacidades de procesamiento de datos asíncronos (Que no tiene un intervalo de tiempo constante en cada evento. Característica de cualquier sistema de comunicación en el que el transmisor puede enviar datos sin previo aviso.).

Agente de SQL Server

Es el motor de programación y alertas. Uno de los componentes básicos del agente SQL Server es la capacidad de crear "Jobs" flexibles que pueden tener varios pasos y dependencias entre los pasos del Job que se puede ejecutar en vatios "schedules" (Programaciones). 

Replicación

SQL Server es capaz de distribuir copias de datos, así como mantener todas las copias sincronizadas con el conjunto de datos maestros.

El espejado (Mirroring) de base datos se basa en los procesos en los procesos internos de gestión de registros (logs) en el motor de almacenamiento, para mantener una segunda copia de base de datos con una latencia extremadamente baja. La base de datos espejada se puede ejecutar en modo sincrónico, lo que garantiza que las transacciones no se pierdan nunca si ocurre un fallo en la base de datos primaria.

En una instancia, se puede aplicar el espejado de base, el traspaso de registros (logs), y la réplica para proporcionar copias redundantes de base de datos completas o subconjuntos de base de datos, que pueden ser utilizadas en el caso de una falla en la plataforma de base de datos primaria.

Servicios de integracion

SSIS. Incluye todas las capacidades de clase empresarial que se pueden encontrar en aplicaciones de extracción, transformación y carga (ETL), al tiempo que permite a las organizaciones construir aplicaciones que puedan gestionar bases de datos, recursos del sistema, responder a eventos de la base de datos y del sistema e incluso interactuar con los usuarios. 

Reporting Services

Llena el vacío en la entrega de datos al proporcionar una plataforma flexible para el diseño de informes, así como la distribución de los datos en toda la organización. Es responsable de alojar todos los informes y aplicación de seguridad. Cuando los datos se solicitan, el servidor de informes se encarga de conectar a las fuentes de datos subyacentes, recopilar los datos y representar el informe de salida final.

Analisys Services

SQL Server Analisys Services (SSAS) fue creado para llenar la brecha entre las necesidades de información de los usuarios de negocio y la capacidad de TI para proporcionar datos. SSAS engloba dos componentes OLAP y Data mining.

 


Creación de un inicio personalizado en una base de datos

Un inicio personalizado permite personalizar el formulario que aparece en lugar de la ventana de Base de datos cuando el usuario abre un archivo de base de datos Access. Crear un inicio personalizado normalmente lleva consigo tres elementos.

*El primer elemento es una macro "Autoexec", que se lanza automáticamente cuando el usuario abre el archivo de base de datos.
*El segundo elemento de un inicio propio requiere una función para configurar las propiedades de CurrentDB apropiadas.
*El tercer elemento es un inicio personalizado, es un formulario que sirve como el interface de usuarios (IU) de la aplicación.

La macro Autoexe debería contener sólo una acción de macro: la acción RunCode, que ejecuta solo una función, en este caso: "HideDBWindow"

Function HideDBWindow()
On Error GoTo DAOStartup_Trap
Dim db As DAO.Database
Dim prp1 As DAO.Property
Dim str1 As String
'referencia a la bd actual
Set db = CurrentDb
'Oculta la ventana de bd, la siguiente vez que se abre
str1 = "StartupShowDBWindow"
db.Properties(str1) = False
str1 = "AllowBypassKey"
db.Properties(str1) = False
str1 = "AllowSpecialKeys"
db.Properties(str1) = False
str1 = "StartupForm"
db.Properties(str1) = "frmNotDBWindow"

DAOStartup_Exit:
Exit Function
DAOStartup_Trap:

If Err.Number = 3270 And str1 = "StartupShowDBWindow" Then
Set prp1 = db.CreateProperty("StartupShowDBWindow", dbBoolean, False)
db.Properties.Append prp1
ElseIf Err.Number = 3270 And str1 = "AllowBypassKey" Then
Set prp1 = db.CreateProperty("AllowBypassKey", dbBoolean, False)
db.Properties.Append prp1
ElseIf Err.Number = 3270 And str1 = "AllowSpecialKeys" Then
Set prp1 = db.CreateProperty("AllowSpecial", dbBoolean, False)
db.Properties.Append prp1
ElseIf Err.Number = 3270 And str1 = "StartupForm" Then
Set prp1 = db.CreateProperty("StartupForm", dbText, "frmNotDBWindow")
db.Properties.Append prp1
Else
Debug.Print Err.Number, Err.Description
Exit Function
End If
Resume Next
End Function




El formulario de inicio de esta demostración contiene un único botón de comando para abrir la ventana de base de datos.

Private Sub cmdOpenDBWindow_Click()
'Abre la ventana de Base de datos
DoCmd.SelectObject acForm, "frmNotDBWindow", True
DoCmd.Close acForm, Me.Name, acSaveNo
End Sub

Private Sub Form_Load()
'configurar las propiedades de un formulario no vinculado a datos
Me.RecordSelectors = False
Me.DividingLines = False
Me.NavigationButtons = False
End Sub


Impresión de las propiedades de CurrentDB

Muchas de las propiedades de CurrentDB indican los elementos que se pueden utilizar para controlar cómo arranca una aplicación Access. Por ejemplo, estas propiedades permiten controlar si la ventana de Base de datos aparece al inicio y el formulario que la remplaza. Incluso se puede utilizar una propiedad especial (AllowBypassKey) para quitar la posibilidad al usuario de saltarse la configuración de inicio mantenimiento la tecla Mayúsculas/Shift mientras que el usuario abre el archivo. Esta propiedad solo esta disponible a través de la interfaz programable VBA. Cuando se utiliza la propiedad CurrentDB, encontrará adecuado listar los miembros de la colección properties. Como el ejemplo asociado a los objetos DocumentProperty, este procedimiento se salta las sentencias de error resultantes de intentar imprimir las propiedades no disponibles en la sesión Access actual.

Sub EnumCurrentDBProperties()
Dim db As DAO.Database
Dim prop1 As DAO.Property

'referencia a la base de datos actual
Set db = CurrentDb
Debug.Print CurrentDb.Properties.Count

'imprime el nombre y valor de las propiedades de todos los objetos
'de propiedad CurrentDB

For Each prop1 In CurrentDb.Properties
On Error Resume Next
Debug.Print prop1.Name, prop1.Value
Next prop1
End Sub

Objetos DocumentProperty, CurrentDB y CurrentProject

Impresión de la información del objeto DocumentProperty de Access.

Access tiene prácticamente la misma información en tres objetos Documents: UserDefined, SummaryInfo y MSysDB.
Estos objetos únicamente están disponibles a través del contenedor de base de datos DAO (DAO Database container). No se pueden utilizar estos tres objetos con Microsoft Activex Data Objects (ADO). El objeto UserDefined contiene todas las propiedades de la ficha personalizar del cuadro de diálogo propiedades de la base de datos. El objeto SummaryInfo contiene todas las propiedades de la ficha resumen de ese cuadro de diálogo. El objeto MSysDB contiene todas las propiedades definidas bajo el menú herramientas, Inicio de una base de datos.

El siguiente ejemplo recupera las colecciones de propiedades de cada objeto contenedor de base de datos DAO: (Librería Microsoft DAO x(version) Object Library)

Sub enumDBProps()
Dim db As DAO.Database
Dim p As DAO.Property

'Referencia a la BD actual
Set db = CurrentDb
'imprime resultado encabezado
Debug.Print "Propiedades definidas por el usuario"
Debug.Print "===================================="

'recorre las pripiedades UserDened de la bd
For Each p In db.Containers!Databases.Documents!UserDefined.Properties
Debug.Print p.Name, p.Value
Next

'imprime un encabezado para los resultados
Debug.Print
Debug.Print "Propiedades resumen"
Debug.Print "==================="

'recorre las propiedades SummaryInfo de la base de datos
For Each p In db.Containers!Databases.Documents!SummaryInfo.Properties
Debug.Print p.Name, p.Value
Next

'imprime encabezado para los resultados
Debug.Print
Debug.Print "Propiedades MSysDB"
Debug.Print "=================="

'recorre las propiedades MSysDB de la BD
For Each p In db.Containers!Databases.Documents!MSysDB.Properties
Debug.Print p.Name, p.Value
Next
End Sub