Está en la página 1de 48

Administracin de SQL Server 2008 R2

Visualizar usuarios conectados a base de datos



Hola a todos en esta ocasin quiero compartir algo que a veces puede ser til, sobre todo a la hora
de sacar backups de una base datos en sql server, bueno esto es, saber si hay usuarios conectados
a dicha base de datos; indicarles que la forma ms prctica es a travs del ACTIVITY MONITOR, en
seguida expongo los pasos para dicho fin:
1. Abrir nuestro administrador de SQL Server
2. Abrir la utilidad monitor de actividades o ACTIVITY MONITOR, haciendo click derecho
sobre la instancia de la base de datos, y luego elegir la opcin activity monitor como indica
la siguiente imagen



3. Ir a la seccin Overview, y ordenar por base de datos







4. Ubicar nuestra base de datos, identificar las conexiones de usuarios, y matar las
conexiones que creamos necesarias (a travs de la opcin Kill Process), como indica la
sgte. imagen



5. Luego podremos ver que no hay las conexiones que queramos matar, y eso sera todo,
podremos proseguir con el backup o lo que estbamos haciendo

****************************

Administracin de Microsoft SQL Server 2008 R2 Express

Una vez instalado SQL Server 2008 R2 Express, podremos acceder a la administracin desde el
botn "Iniciar" - "Todos los programas" - "Microsoft SQL Server 2008 R2" - "SQL Server
Management Studio":

En el primer inicio de SQL Server Management Studio nos mostrar esta ventana con el progreso
de la preparacin de esta herramienta:

Introduciremos los siguientes datos en la ventana de conexin al servidor de Microsoft SQL Server
2008 R2:
Server type: seleccionaremos "Database Engine".
Server name: introduremos el nombre de red del equipo (hosname) o IP, una barra
invertida y el nombre de la instancia de SQL Server, en nuestro caso "SQLExpress2008".
Authentication: elegiremos el tipo de autenticacin, bien la de Windows o bien la de SQL
Server (segn las opciones seleccionadas en la instalacin). En nuestro caso
seleccionaremos "Windows Authentication".

Si tenemos algn corta fuegos o firewall deberemos abrir los puertos necesarios correspondientes
(el 1433 por defecto):

Y accederemos a Microsoft SQL Server Management Studio, desde donde podremos administrar y
configurar Microsoft SQL Server 2008 R2 Express:

Crear una nueva base de datos para nuestras aplicaciones
de gestin (facturacin, contabilidad, rrhh)
Accederemos a Microsoft SQL Server Management Studio, sobre "Databases" pulsaremos con el
botn derecho del ratn y seleccionaremos "New Database":

Introduciremos en "Database name" el nombre de la base de datos, en nuestro caso "bdajpdsoft",
podremos personalizar los ficheros de datos (nombre, ubicacin y tamao, en "Database files"),
las opciones de seguridad (qu usuarios sern propietarios en "Owner"), etc:



El script para generar la base de datos (pulsando en el botn "Script") nos lo generar, podremos
usarlo para crear una base de datos en modo comando o para crear varias bases de datos de
forma rpida:
CREATE DATABASE [bdajpdsoft] ON PRIMARY
(NAME = N'bdajpdsoft', FILENAME = N'C:\Program Files\Microsoft SQL
Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\bdajpdsoft.mdf' , SIZE = 3072KB , FILEGROWTH =
1024KB)

LOG ON
( NAME = N'bdajpdsoft_log', FILENAME = N'C:\Program Files\Microsoft SQL
Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\bdajpdsoft_log.ldf' , SIZE = 1024KB , FILEGROWTH
= 10%)
GO
ALTER DATABASE [bdajpdsoft] SET COMPATIBILITY_LEVEL = 100
GO
ALTER DATABASE [bdajpdsoft] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [bdajpdsoft] SET ANSI_NULLS OFF
GO
ALTER DATABASE [bdajpdsoft] SET ANSI_PADDING OFF
GO
ALTER DATABASE [bdajpdsoft] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [bdajpdsoft] SET ARITHABORT OFF
GO
ALTER DATABASE [bdajpdsoft] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [bdajpdsoft] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [bdajpdsoft] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [bdajpdsoft] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [bdajpdsoft] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [bdajpdsoft] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [bdajpdsoft] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [bdajpdsoft] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [bdajpdsoft] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [bdajpdsoft] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [bdajpdsoft] SET DISABLE_BROKER
GO
ALTER DATABASE [bdajpdsoft] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [bdajpdsoft] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [bdajpdsoft] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [bdajpdsoft] SET READ_WRITE
GO
ALTER DATABASE [bdajpdsoft] SET RECOVERY SIMPLE
GO
ALTER DATABASE [bdajpdsoft] SET MULTI_USER
GO
ALTER DATABASE [bdajpdsoft] SET PAGE_VERIFY CHECKSUM
GO
USE [bdajpdsoft]
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY')
ALTER DATABASE [bdajpdsoft] MODIFY FILEGROUP [PRIMARY] DEFAULT
GO
Crear una tabla en una base de datos SQL Server 2008 R2 desde Microsoft SQL Server
Management Studio
Desplegaremos la base de datos creada en "Databases", desplegaremos "bdajpdsoft" (es el
nombre que le hemos dado a la base de datos para nuestras aplicaciones de gestin (contabilidad,
facturacin, recursos humanos, etc.), en "Tables" pulsaremos con el botn derecho del ratn y
seleccionaremos "New Table":

Iremos aadiendo en la parte derecha todos los campos que deseemos para la tabla "clientes",
por ejemplo:
Crearemos un campo llamado "codigo" que ser clave primaria (primary key) y ser
autoincremento. Para ello en "Column Name" introduciremos "codigo", en "Data Type"
seleccioanremos "int", en "Column Properties", en "Identity Specification", en "(Is
Identity") seleccionaremos "Yes", en "Identity Increment" introduciremos "1" (ser el
factor de incremento) y en "Identity Seed" introduciremos "1", ser desde donde
empezar el autoincremento:

Para que el campo sea clave primaria (primary key), pulsaremos con el botn derecho del ratn y
seleccionaremos "Set Primary Key":

Crearemos un campo llamado "cif", de tipo "nvarchar(15)", este campo no podr ser nulo
por lo que desmarcaremos "Allow Nulls":

Adems, crearemos un ndice para este campo, de forma que sea nico (que no se puedan repetir
dos registros con el mismo valor), para ello pulsaremos con el botn derecho sobre la columna
"cif", seleccionaremos "Indexes/Keys":

En la ventana de "Indexes/Keys" aparecer ya creado el ndice para la clave primaria del campo
"codigo", pulsaremos "Add" para crear un nuevo ndice e introduciremos los siguientes datos:
En "General", en "Columns" seleccionaremos "cif".
En "General", en "Is Unique" seleccionaremos "Yes".
En "Identity", en "(Name)" introduciremos un nombre para el ndice, por ejemplo:
"ix_cliente_cif".
Pulsaremos "Close" para cerrar la ventana de Indexes/Keys y guardar el nuevo ndice creado:

Crearemos el resto de los campos de la misma forma que lo hemos hecho para el "codigo" y el
"cif", antes de guardar la tabla deberemos indicar un nombre para ella, en la parte derecha, en
"Properties", en "Identity", en "(Name)" introduciremos el nombre para la tabla, en nuestro caso
"cliente":

Pulsaremos el botn "Save" para crear la tabla con los campos y propiedades indicados:

El script que generara esta tabla:
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.cliente
(
codigo int NOT NULL IDENTITY (1, 1),
cif nvarchar(15) NOT NULL,
nombre nvarchar(150) NOT NULL,
fechaalta date NULL,
email nchar(100) NULL,
web nchar(100) NULL,
direccion nchar(200) NULL,
observacion ntext NULL
) ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE dbo.cliente ADD CONSTRAINT
pk_cliente_codigo PRIMARY KEY CLUSTERED
(
codigo
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE UNIQUE NONCLUSTERED INDEX ix_cliente_cif ON dbo.cliente
(
cif
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE dbo.cliente SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
Ya tendremos preparado Microsoft SQL Server para ser usado por cualquier aplicacin y guardar
datos en la tabla "cliente" de la base de datos "bdajpdsoft".

Configurar Microsoft SQL Server para permitir conexiones remotas o acceso externo
Si queremos que desde otros equipos de la red o incluso desde otros equipos de Internet haya
acceso a este servidor con SQL Server deberemos seguir los pasos que a continuacin detallamos
para activar las conexiones remotas o acceso externo a SQL Server.
Accederemos al botn "Iniciar", en programas accederemos a "Microsoft SQL Server 2008 R2" -
"Configuration Tools" - "SQL Server Configuration Manager" y seleccionaremos en la parte
izquierda "SQL Server Services". En la parte derecha nos mostrar los tres servicios de SQL Server
2008 R2 Express:
SQL Server (SQLEXPRESS).
SQL Server Agent (SQKEXORESS).
SQL Server Browser.
De los tres servicios deben estar iniciados SQL Server y SQL Server Browser, si no lo estn
pulsaremos con el botn derecho del ratn y seleccionaremos "Start". Adems, deben estar con el
tipo de inicio automtico, para que se inicien de forma automtica cada vez que reiniciemos o
arranquemos el equipo. Para configurar el tipo de inicio pulsaremos con el botn derecho del
ratn sobre el servicio, seleccioanremos "Propiedades":

En la pestaa "Service", en "Start Mode", seleccionaremos "Automatic":

A continuacin activaremos el mtodo de conexin TCP/IP, para ello accederemos (en la parte
izquierda) a "SQL Server Network Configuration", seleccionaremos "Protocols for SQLEXPRESS",
pulsaremos en la parte derecha con el botn derecho del ratn sobre "TCP/IP" y seleccionaremos
"Enable":

Nos mostrar un mensaje indicando que el cambio se aplicar una vez reiniciado el servicio de SQL
Server, podremos reiniciarlo desde "SQL Server Services", pulsando con el botn derecho del ratn
sobre "SQL Server" y seleccionando "Restart":

Ahora, abriremos Microsoft SQL Server Management Studio, nos conectaremos al servidor,
pulsaremos con el botn derecho del ratn sobre el nombre de la instancia de SQL Server a
configurar (la de defecto ser "nombre_equipo/sqlexpress", en el men emergente
seleccionaremos "Propiedades":

En la parte izquierda seleccionaremos la pgina "Connections", en la parte derecha nos
aseguraremos de que est marcado "Allow remote connections to this server" y que en
"Maximum number of concurrent connections tengamos 0 (ilimitadas) o mayor que uno (para
permitir las que queramos):

En la pgina "Security", es recomendable (aunque depender de las aplicaciones de gestin y
dems de nuestra organizacin que usen SQL Server) marcar "SQL Server and Windows
Authentication mode". Este modo es casi necesario en situaciones donde queremos permitir el
acceso a aplicaciones externas a nuestra organizacin a travs de Internet. Pues si dejamos
nicamente el modo "Windows Authentication mode", obligaremos a que el acceso slo se
permitir a usuarios que pertenezcan al mismo dominio Windows que donde tengamos instalado
SQL Server, en este caso slo se permitiran acceso a equipos que pertenezcan al dominio. Por
ello, para el caso de acceso externo a nuestro servidor SQL Server es recomendable marcar "SQL
Server and Windows Authentication mode", as, las aplicaciones externas a nuestra red (o las de
nuestra propia red) podrn acceder a SQL Serve con un usuario de ste, sin necesidad de
pertenecer a nuestro dominio Windows.
Por supuesto, en ambos casos, deberemos tener usuarios con contraseas seguras (nmeros,
letras maysculas y minsculas y algn carcter especial), para evitar posibles "robos" de
contraseas mediante fuerza bruta u otros mtodos. Adems, es recomendable seguir una poltica
de caducidad y complejidad de contraseas adecuada:

Y por ltimo, si tenemos algn cortafuegos o firewall en el equipo servidor o en la red, deberemos
abrir el puerto 1433 (de defecto) para SQL Server. Y si queremos que los equipos de Internet
accedan a nuestro servidor de SQL Server, si tenemos un router o cortafuegos, deberemos
redireccionar o mapear el puerto 1433 a la IP del equipo con SQL Server.
Configurar y programar copias de seguridad de Microsoft SQL Server 2008 R2
Crear dispositivo para copias de seguridad SQL Server
En primer lugar daremos un nuevo dispositivo de alta, para ello accederemos a Microsoft SQL
Server Management Studio, desplegaremos la rama "Server Objects", seleccionaremos "Backup
Devices", pulsaremos con el botn derecho del ratn y seleccionaremos "New Backup Device":

En "Device name" introduciremos el nombre que definir el dispositivo, por ejemplo "Disco_D", si
disponemos de una unidad de cinta podremos seleccionarla en "Tape", sino podremos hacer copia
de seguridad a disco, para ello seleccionaremos "File" e introduciremos una unidad y carpeta de
destino, o pulsaremos el botn "..." para seleccionarla:

Seleccionaremos la carpeta y fichero de destino de la copia de seguridad de la base de datos
Microsoft SQL Server 2008 R2 Express, en "File name" introduciremos el nombre del fichero de
copia de seguridad, por ejemplo "backup_sql_server":

Tras seleccionar el destino en "Destination" y el nombre del dispositivo en "Device name"
pulsaremos en "OK":

A partir de ahora podremos usar este dispositivo, diferencindolo con el nombre que le hemos
asignado. El script para crear el dispositivo desde la lnea de comandos:
USE [master]
GO
EXEC master.dbo.sp_addumpdevice @devtype = N'disk', @logicalname = N'Disco_D',
@physicalname = N'D:/backup_sql_server'
GO
Realizar copia de seguridad (backup) de una base de datos SQL Server desde Management
Studio
Para hacer una copia de seguridad de una base de datos de Microsoft SQL Server pulsaremos con
el botn derecho del ratn sobre el dispositivo creado y seleccionaremos "Back Up a Database":

Seleccionaremos los siguientes datos de la pestaa "General":
Database: seleccionaremos la base de datos de la que haremos copia de seguridad, en
nuestro caso "bdajpdsoft".
Backup type: seleccionaremos "Full" (copia completa) o "Differencial" (copia slo de los
datos modificados o nuevos).
Name: indicaremos un nombre para la copia de seguridad.
Backup set will expire: si queremos que la copia de seguridad caduque y pueda ser
reemplazada, indicaremos aqu los das de validez.
Destination: seleccionaremos el destino de la copia (Disk Tape), nos aparecer el
dispositivo creado en el paso anterior.

En la pestaa "Options" seleccionaremos:
Overwrite media: seleccionaremos el mtodo de reemplazo de copias existentes:
o Back up to the existing media set: realizar la copia en un medio existente, con las
siguientes posibilidades:
Append to the existing backup set: utilizar un fichero o medio existente,
si marcamos la opcin "Check media set name and backup set expiration"
comprobar si el contenido del fichero ha expirado para reemplazar la
parte expirada por los nuevos datos.
Overwrite all existing backup sets: reemplazar los ficheros o medios
existentes con los nuevos.
o Back up to a new media set, and erase all existing backup sets: realizar la copia
de seguridad en un nuevo fichero o medio y eliminar los existentes.
Reliability:
o Verify backup when finished: comprobar el fichero o medio tras finalizar la copia
de seguridad.
o Perform checksum before writing to media: realizar una comprobacin de
checksum antes de realizar la copia de seguridad.
o Continue on error: continuar con la copia de seguridad aunque se produzca
algn error.
Compression: seleccionaremos el mtodo de compresin, ha de permitirlo el dispositivo
(por hardware) o el servidor por software, de lo contrario, si seleccionaremos "Compress
backup" y no es posible dar un error como este.
Una vez seleccionadas las opciones de configuracin para la copia de seguridad, pulsaremos "OK"
para iniciar el proceso de copia de seguridad:

Tras la finalizacin de la copia de seguridad, nos mostrar un mensaje como el siguiente:

Con el texto:
Microsoft SQL Server Management Studio
The backup of database "bdajpdsoft" completed successfully
Nos habr creado un fichero en la unidad indicada con la copia de seguridad de la base de datos
elegida:

El script para ejecutar la copia de seguridad de la base de datos desde la lnea de comandos:
BACKUP DATABASE [bdajpdsoft] TO [Disco_D] WITH DESCRIPTION = N'Backup bdajpdsoft -
Completa', NOFORMAT, INIT, NAME = N'Backup bdajpdsoft - Completa', SKIP, NOREWIND,
NOUNLOAD, STATS = 10
GO
Programar copias de seguridad automticas de SQL Server 2008 R2
Es probable que necesitemos activar la conexin remota a Microsoft SQL Server 2008 R2, sobre
todo si la copia de seguridad la vamos a realizar desde un equipo de la red diferente del servidor
de SQL Server.
En primer lugar crearemos un fichero de proceso por lotes .bat con el siguiente contenido (se
puede usar cualquier editor de texto plano como el Notepad):
osql -S "PCALONSO\SQLEXPRESS" -U sa -P xxx -Q "BACKUP DATABASE [bdajpdsoft] TO [Disco_D]
WITH DESCRIPTION = N'Backup bdajpdsoft - Completa', NOFORMAT, INIT, NAME = N'Backup
bdajpdsoft - Completa', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
Donde:
PCALONSO\SQLEXPRESS: "PCALONSO" es el nombre del equipo en la red
(hostname) o la direccin IP y "SQLEXPRESS" es el nombre de la instancia de SQL
Server por defecto, en nuestro caso, en la instalacin, pusimos el nombre
"SQLExpress2008".
"sa" y "xxx": "sa" nombre del usuario de SQL Server con permisos suficientes para
hacer copia en la base de datos elegida, "xxx" es la contrasea de este usuario.
Nota importante: para que el parmetro "-U" funcione, deben estar activo el tipo
de autenticacin mixto (Autenticacin de Windows y autenticacin de SQL Server).
Aqu explicamos cmo cambiarlo. Si queremos dejar el mtodo de autenticacin
de Windows nicamente, deberemos usar el parmetro -E, que usar el usuario
del sistema operativo que ha iniciado sesin.
"bdajpdsoft": nombre de la base de datos de la que se har copia de seguridad.
"Disco_D": nombre del dispositivo (previamente creado) que ser el destino de la
copia de seguridad. Aqu explicamos cmo crear un dispositivo.
Nota: podremos aadir al final del script ">> resultado.log" para guardar en un fichero el resultado
de la ejecucin del comando y as poder consultarlo posteriormente para verificar que el comando
se ejecuta correctamente.
Una vez creado el fichero backup_sql_server.bat (o el nombre que queramos darle), abriremos el
programador de tareas de Microsoft Windows 7, desde el botn "Iniciar" - "Panel de control" -
"Herramients administrativas" - "Programador de tareas". En la parte derecha, en "Acciones",
pulsaremos en "Crear tarea bsica":

Introduciremos un nombre para la tarea, por ejemplo "Backup SQL Server" y una descripcin, por
ejemplo "Copia de seguridad de bdajpdsoft de Microsoft SQL Server 2008 R2 Express":

Seleccionaremos la periodicidad de la tarea, en nuestro caso "Semanalmente":

Indicaremos los das de la semana y la hora de inicio de la tarea de copia de seguridad de SQL
Server:

En la accin a realizar por la tarea marcaremos "Iniciar un programa":

Pulsaremos en "Examinar" en "Programa o script":

Accederemos a la unidad y carpeta donde hayamos guardado el fichero .bat con el script para la
copia, lo seleccionaremos, en nuestro caso "backup_sql_server.bat" y pulsaremos "Abrir":

Pulsaremos "Siguiente" una vez elegido el fichero a ejecutar:

Marcaremos "Abrir el dilogo Propiedades para esta tarea al hacer clic en Finalizar" (necesario
para establecer las opciones de seguridad) y pulsaremos "Finalizar":

En la pestaa "General", marcaremos "Ejecutar tanto si el usuario inici sesin como si no" (para
que la copia de seguridad se inicie aunque el usuario no haya iniciado sesin) y marcaremos
"Ejecutar con los privilegios ms altos". Pulsaremos "Aceptar":

Nos pedir usuario y contrasea, es fundamental introducir aqu un usuario y contrasea del
equipo con permisos para escritura en la carpeta de destino de la copia. En nuestro caso, puesto
que hemos elegido el mtodo de validacin con usuario de SQL Server (en el script hemos utilizado
el parmetro -U "sa"), el usuario del sistema operativo no tiene por qu ser administrador:

Una vez creada la tarea de copia de seguridad automtica de Microsoft SQL Server 2008 R2,
podremos ejecutarla para realizar un test seleccionndola y pulsando el botn derecho del ratn,
haciendo clic en "Ejecutar":

Si todo es correcto, la tarea habr creado los ficheros, en la carpeta o dispositivo de destino:
backup_sql_server: fichero binario con el contenido de la copia de seguridad de SQL
Server.
resultado.log: fichero con el resultado de la ejecucin del comando, por ejemplo:
12 percent processed.
21 percent processed.
30 percent processed.
43 percent processed.
51 percent processed.
60 percent processed.
73 percent processed.
82 percent processed.
90 percent processed.
Processed 184 pages for database 'bdajpdsoft', file 'bdajpdsoft' on file 1.
100 percent processed.
Processed 1 pages for database 'bdajpdsoft', file 'bdajpdsoft_log' on file 1.
BACKUP DATABASE successfully processed 185 pages in 0.293 seconds (4.932 MB/sec).
Tambin podremos ver el resultado de la tarea en el visor de eventos o sucesos de Windows 7:

Con el texto: Database backed up. Database: bdajpdsoft, creation date(time):
2010/07/25(21:38:45), pages dumped: 194, first LSN: 21:395:37, last LSN: 21:411:1, number of
dump devices: 1, device information: (FILE=1, TYPE=DISK: {'Disco_D'}). This is an informational
message only. No user action is required.
A partir de ahora se ejecutar la copia de lunes a viernes a las 22:00 horas (o la periodicidad que
hayamos indicado).
Lgicamente, en nuestro caso hacemos copia al mismo equipo donde est SQL Server y es MUY
recomendable copiar en un dispositivo de cinta o en otro equipo, por lo que deberamos copiar el
fichero resultante a otro equipo o a una unidad de cinta.
Crear origen de datos ODBC de SQL Server 2008
En primer lugar, puesto que vamos a realizar una aplicacin Delphi que acceda a Microsoft SQL
Server 2008 R2 mediante ODBC, buscaremos y descargaremos de la web oficial de Microsoft el
complemento "Microsoft SQL Server 2008 Native Client", normalmente un fichero con el nombre
"sqlncli.msi".
Una vez instalado el ODBC de SQL Server: "Microsoft SQL Server 2008 Native Client", accederemos
al botn "Iniciar" - "Panel de control" - "Herramientas administrativas" - "Orgenes de datos
ODBC". Si queremos que el origen de datos ODBC est disponible slo para el usuario actual
pulsaremos en la pestaa "DSN de usuario", si queremos que est disponible para todos los
usuarios del equipo pulsaremos en la pestaa "DSN de sistema". En esta pestaa pulsaremos
"Agregar":

Seleccionaremos el controlador para el origen de datos, en nuestro caso "SQL Server Native Client
10.0":

Introduciremos los siguientes datos:
Name: el nombre del origen de datos, por ejemplo "bdsqlajpdsoft", este nombre ser el
que utilicemos en la aplicacin que desarrollemos.
Descripcion: introduciremos la descripcin para identificar el origen de datos, por ejemplo
"Conexin BD SQL Server con Delphi".
Server: deberemos indicar la IP o nombre de red (hostname) del equipo servidor de SQL
Server y el nombre de la instancia a la que nos conectaremos, por ejemplo:
PCALONSO\SQLEXPRESS, siendo "PCALONSO" el nombre de red del equipo con SQL Server
y "SQLEXPRESS" el nombre de la instancia.

A continuacin indicaremos el tipo de conexin que realizaremos (autenticacin):
"With Integrated Windows authentication": autenticacin de Windows, el usuario y
contrasea del sistema operativo ser el usado para la validacin con SQL Server.
"With SQL Server authentication using a login ID and password entered by the user":
validacin con un usuario y contrasea de SQL Server. Esta ser la opcin que elijamos
nosotros, en "Login" introduciremos el nombre del usuario de SQL Server con permisos
suficientes para las tareas que queramos realizar y en "Password" la contrasea de este
usuario.
Marcaremos la opcin "Connect to SQL Server to obtain default settings for the additional
configuration options" y pulsaremos "Siguiente":

Marcaremos "Change the default database to" y seleccionaremos la base de datos a la que nos
conectaremos, "bdajpdsoft":

Pulsaremos "Finalizar" para crear definitivamente el origen de datos ODBC para SQL Server:

Tras la creacin nos mostrar una ventana con los datos seleccionados:

Con el texto:
Microsoft SQL Server Native Client Version 10.50.1600
Data Source Name: bdsqlajpdsoft
Data Source Description: Conexin BD SQL Server con Delphi
Server: PCALONSO\SQLEXPRESS
Use Integrated Security: No
Database: bdajpdsoft
Language: Spanish
Data Encryption: No
Trust Server Certificate: No
Multiple Active Result Sets(MARS): No
Mirror Server:
Translate Character Data: Yes
Log Long Running Queries: No
Log Driver Statistics: No
Use Regional Settings: No
Use ANSI Quoted Identifiers: Yes
Use ANSI Null, Paddings and Warnings: Yes
En la ventana anterior podremos realizar un test de conexin pulsando en "Test Data Source", si
todo es correcto mostrar algo as:

Con el texto:
Microsoft SQL Server Native Client Version 10.50.1600
Running connectivity tests...
Attempting connection
Connection established
Verifying option settings
Disconnecting from server
TESTS COMPLETED SUCCESSFULLY!
Acceso a base de datos Microsoft SQL Server 2008 R2 Express mediante Microsoft Access y
ODBC
Una vez instalado y configurado el origen de datos ODBC de SQL Server 2008 R2 Express,
abriremos Microsoft Access 2007, seleccionaremos "Base de datos en blanco", en la parte
derecha, introduciremos el nombre del archivo .accdb de Access 2007, por ejemplo: "AjpdSoft
Acceso SQL Server.accdb" y pulsaremos "Crear":

En la pestaa "Datos externos", pulsaremos el botn "Ms", seleccionaremos "Bases de datos
ODBC":

Marcaremos la opcin "Vincular al origen de datos creando una tabla vinculada" (Access crear
una tabla que mantendr un vnculo a los datos de origen. Los cambios realizados en los datos en
Access se reflejarn en el origen y viceversa):

Como podemos observar, en el caso de Microsoft Windows 7 y Microsoft Access 2007, no permite
mostrar los orgenes de datos de la pestaa DSN de sistema, por lo que si hemos creado el origen
de datos en esta pestaa no nos aparecer para seleccionarlo. Incluso abriendo Microsoft Access
como administrador tampoco dejar seleccionar un origen de datos de DSN de sistema. As pues,
tendremos dos opciones:
1. Crear un origen de datos desde la ventana que muestra Microsoft Access pulsando en
"Nuevo" y siguiendo los pasos explicados aqu.
2. Pulsando en la pestaa "Origen de datos de archivo" y seleccionando o creando un archivo
.dsn con un contenido como el siguiente:
[ODBC]
DRIVER=SQL Server Native Client 10.0
UID=sa
DATABASE=bdajpdsoft
WSID=PCALONSO
APP=2007 Microsoft Office system
SERVER=PCALONSO\SQLEXPRESS
Description=Acceso ODBC SQL Server
Donde:
"sa" ser un usuario de SQL Server con permisos suficientes para acceso a la base
de datos seleccionada.
"bdajpdsoft" ser el nombre de la base de datos de SQL Server a la que se
acceder.
"PCALONSO\SQLEXPRESS" ser el nombre del servidor (hostname o IP) y el
nombre de la instancia de SQL Server a la que nos conectaremos.
El fichero .dsn se puede crear con un asistente, desde la pestaa "Origen de datos de archivo" de
la ventana siguiente:

Una vez seleccionado el origen de datos de SQL Server, nos pedir la contrasea y el usuario
(segn el tipo de autenticacin que hayamos elegido):

A continuacin nos mostrar todas las tablas de la base de datos SQL Server elegida,
seleccionaremos las tablas que queramos vincular con Access, en nuestro caso "dbo.cliente". Si
queremos que no nos vuelva a pedir contrasea en futuros accesos marcar en "Guardar
contrasea":

Nos avisar de que la contrasea no se encriptar y ser guardada en el fichero del origen de
datos sin encriptar:

De esta forma ya tendremos acceso a las tablas seleccionadas de SQL Server, desde Access
podremos realizar cualquier accin sobre ellas: hacer informes, aadir registros, modificar
registros, etc. Cualquier cambio realizado en Access quedar guardado en SQL Server.

Algunos errores y su posible solucin
Error si se selecciona mtodo de compresin en backup de SQL Server y el servidor no lo
permite:
TITLE: Microsoft SQL Server Management Studio
------------------------------
Backup failed for Server 'pcalonso/sqlexpress'. (Microsoft.SqlServer.SmoExtended)
For help, click:
http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600.1+((KJ_R
TM).100402-
1539+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExcep
tionText&EvtID=Backup+Server&LinkId=20476
------------------------------
ADDITIONAL INFORMATION:
System.Data.SqlClient.SqlError: BACKUP DATABASE WITH COMPRESSION is not supported on
Express Edition with Advanced Services (64-bit). (Microsoft.SqlServer.Smo)
For help, click:
http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600.1+((KJ_R
TM).100402-1539+)&LinkId=20476
------------------------------
BUTTONS:
OK
------------------------------
Artculos relacionados
Instalar y administrar Microsoft SQL Server 2008 Express SP1.
Instalacin de Microsoft SQL Server 2005 en Windows XP.
Instalar y administrar MSDE Microsoft SQL Server Desktop Engine.
Tipos de datos del motor de base de datos Microsoft SQL Server.
Acceso a una base de datos Microsoft Access desde Microsoft Word.
Los ndices en Oracle, creacin, eliminacin, reconstruccin.
Instalacin y configuracin de Windows XP Service Pack 3.
Instalacin de Windows Server 2003 Enterprise Edition SP2.
Instalar Oracle Enterprise Linux virtualizado con VMware Server en Windows 7.
Artculos del Proyecto AjpdSoft sobre Windows.
Artculos del Proyecto AjpdSoft sobre MySQL Server.
Artculos del Proyecto AjpdSoft sobre Oracle Database.
Artculos del Proyecto AjpdSoft sobre IBM DB2.
Artculos del Proyecto AjpdSoft sobre Microsoft Access.
Artculos del Proyecto AjpdSoft sobre SQLite.
Artculos del Proyecto AjpdSoft sobre Bases de Datos.
Instalar Oracle Database 10g Express Edition XE en Linux Ubuntu 6.06.
Instalar Oracle Dabase XE (Express Edition) en GNU Linux Fedora 10.
Instalar y realizar aplicacin web con Oracle Application Express.
Foro del Proyecto AjpdSoft sobre Microsoft SQL Server con trucos y dudas resueltas.
AjpdSoft Esquema XML Tree.
AjpdSoft Copia Seguridad MySQL.
AjpdSoft Gestin Comercial.

Cmo hacer Jobs en SQL Server Express

Al tratar con bases de datos, hay veces que quieres que un proceso se
ejecute de vez en cuando. En Windows esto tiene un nombre: tareas
programadas. En las tareas programadas (en Windows Vista, Windows 7 y
Windows 8 se llama Programador de Tareas - Task Scheduler), el usuario
puede seleccionar un programa .exe (o un archivo .bat) y hacer que este se
ejecute a una hora determinada y a un da determinado, adems de poder
decidir cada cuando se tienen que ejecutar
Esto que acabo de describir se puede trasladar a SQL Server en forma de
Jobs. Los Jobs es parecido a las Tareas programadas: tu puedes escribir
una sentencia SQL (ya sea un Insert, un Update, un Delete, etc) y hacer
que esta sentencia se ejecute cada X tiempo y, si quieres, de forma
repetitiva. Esto va fenomenal si tienes que ejecutar alguna sentencia
bastante a menudo
Problema
Esto que suena tan bien tiene una problemtica: esto funciona con el SQL
Server Agent y, lamentablemente, el SQL Server Agent no est en las
versiones SQL Server Express (Wikipedia). Entonces, Qu se hace en
estos casos? Si algo tenemos los informticos es que somos cabezones, y
para solucionar un problema hacemos lo que sea con todas las
herramientas que tenemos disponibles, aunque tengamos que reducirnos a
lenguajes de bajo nivel (como es el caso)
Detalle interesante
Buscando la solucin me he topado con un hilo bastante interesante de
Stack Overflow. Y de aqu he podido sacar lo siguiente:
You can create jobs manually by creating batch files and SQL script files,
and running them via Windows Task Scheduler
(Usted puede crear puestos de trabajo "manual" mediante la creacin de archivos por
lotes y archivos de comandos SQL y ejecutarlos a travs de tareas de Windows)
Vayamos atrs un momento. Si habis estado atentos, he hablado de las
tareas programadas de Windows. Y si habis ledo bien, habris ledo que
puede ejecutar archivos .bat. Los archivos .bat son archivos sin formato (se
pueden crear desde el bloc de notas salvando el archivo como .bat) que
contienen comandos de MS-DOS, y estos comandos (copiar, pegar, leer
archivo), a pesar de ser limitados, tienen mucho poder si se saben
combinar entre si.
Que hay que hacer?
1.- Vamos a crear un archivo .bat que tenga un comando de lectura de un
archivo SQL.
2.- Crearemos un archivo .SQL que tendr la sentencia que queramos
ejecutar
3.- Realizaremos la tarea programada que se encargar de ejecutar el
archivo .bat
1.- Configurando el archivo .bat
Abramos un bloc de notas (o el notepad++) y escribamos la siguiente rutina:
SQLCMD -S <instanciaSQL> -i nombrearchivo.sql

Ejemplo: SQLCMD -S sgs_oficina1\SQLEXPRESS -i jueves1.sql
Qu hace cada cosa?
SQLCMD: llama a la consola de comandos de SQL Server
-S: este comando indica que queremos definir una instancia de SQL Server
(una instancia es el nombre del servidor de datos del SQL Server)
: aqu ponemos el nombre de la instancia
-I: este comando indica que queremos abrir un fichero
nombrearchivo.sql: aqu ponemos la ruta donde est el fichero .sql
Una vez hecho, guardamos el fichero con extensin .bat (archivo >
Guardar como > Seleccionamos Todos los archivos > ponemos el
nombre con extensin .bat).
Una parte ya la tenamos hecha, falta hacer la segunda parte: la creacin
del archivo .sql
2.- Creando el archivo .sql
Como antes, abrimos el bloc de notas (o el Notepad++) y escribimos la
sentencia SQL que queramos. Una vez hecho, guardamos el fichero con
extensin .sql (archivo > Guardar como > Seleccionamos Todos los
archivos > ponemos el nombre con extensin .sql).
3.- Programando la tarea
Nos vamos a las tareas programadas (estn en el panel de control) y nos
aparecer el asistente. Cuando nos pregunte cual es el fichero que
queremos abrir, seleccionamos el archivo .bat. Entonces, seleccionamos la
hora y el periodo de repeticin y ya estar todo configurado.
4.- Final
Una vez hecho esto ya tendremos una forma automatizada de ejecutar
sentencias SQL en caso que tengamos SQL Server Express

También podría gustarte