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 Server2.
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%)GOALTER DATABASE [bdajpdsoft] SET
COMPATIBILITY_LEVEL = 100GOALTER DATABASE [bdajpdsoft] SET
ANSI_NULL_DEFAULT OFF GOALTER DATABASE [bdajpdsoft] SET ANSI_NULLS
OFF GOALTER DATABASE [bdajpdsoft] SET ANSI_PADDING OFF GOALTER
DATABASE [bdajpdsoft] SET ANSI_WARNINGS OFF GOALTER DATABASE
[bdajpdsoft] SET ARITHABORT OFF GOALTER DATABASE [bdajpdsoft] SET
AUTO_CLOSE OFF GOALTER DATABASE [bdajpdsoft] SET
AUTO_CREATE_STATISTICS ON GOALTER DATABASE [bdajpdsoft] SET
AUTO_SHRINK OFF GOALTER DATABASE [bdajpdsoft] SET
AUTO_UPDATE_STATISTICS ON GOALTER DATABASE [bdajpdsoft] SET
CURSOR_CLOSE_ON_COMMIT OFF GOALTER DATABASE [bdajpdsoft] SET
CURSOR_DEFAULT GLOBAL GOALTER DATABASE [bdajpdsoft] SET
CONCAT_NULL_YIELDS_NULL OFF GOALTER DATABASE [bdajpdsoft] SET
NUMERIC_ROUNDABORT OFF GOALTER DATABASE [bdajpdsoft] SET
QUOTED_IDENTIFIER OFF GOALTER DATABASE [bdajpdsoft] SET
RECURSIVE_TRIGGERS OFF GOALTER DATABASE [bdajpdsoft] SET
DISABLE_BROKER GOALTER DATABASE [bdajpdsoft] SET
AUTO_UPDATE_STATISTICS_ASYNC OFF GOALTER DATABASE [bdajpdsoft] SET
DATE_CORRELATION_OPTIMIZATION OFF GOALTER DATABASE [bdajpdsoft] SET
PARAMETERIZATION SIMPLE GOALTER DATABASE [bdajpdsoft] SET
READ_WRITE GOALTER DATABASE [bdajpdsoft] SET RECOVERY SIMPLE
GOALTER DATABASE [bdajpdsoft] SET MULTI_USER GOALTER DATABASE
[bdajpdsoft] SET PAGE_VERIFY CHECKSUM GOUSE [bdajpdsoft]GOIF NOT
EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name
= N'PRIMARY') ALTER DATABASE [bdajpdsoft] MODIFY FILEGROUP
[PRIMARY] DEFAULTGOCrear una tabla en una base de datos SQL Server
2008 R2 desde Microsoft SQL Server Management StudioDesplegaremos
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 TRANSACTIONSET
QUOTED_IDENTIFIER ONSET ARITHABORT ONSET NUMERIC_ROUNDABORT OFFSET
CONCAT_NULL_YIELDS_NULL ONSET ANSI_NULLS ONSET ANSI_PADDING ONSET
ANSI_WARNINGS ONCOMMITBEGIN TRANSACTIONGOCREATE 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]GOALTER TABLE dbo.cliente ADD CONSTRAINTpk_cliente_codigo
PRIMARY KEY CLUSTERED (codigo) WITH( STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]GOCREATE 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]GOALTER TABLE dbo.cliente SET (LOCK_ESCALATION =
TABLE)GOCOMMITYa 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 externoSi 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 R2Crear dispositivo para
copias de seguridad SQL ServerEn 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]GOEXEC
master.dbo.sp_addumpdevice @devtype = N'disk', @logicalname =
N'Disco_D', @physicalname = N'D:/backup_sql_server'GORealizar copia
de seguridad (backup) de una base de datos SQL Server desde
Management StudioPara 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: 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. 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: Verify backup when finished: comprobar el
fichero o medio tras finalizar la copia de seguridad. Perform
checksum before writing to media: realizar una comprobacin de
checksum antes de realizar la copia de seguridad. 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 StudioThe backup
of database "bdajpdsoft" completed successfullyNos 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 = 10GOProgramar copias de seguridad
automticas de SQL Server 2008 R2Es 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 2008En
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.1600Data Source Name: bdsqlajpdsoftData Source Description:
Conexin BD SQL Server con DelphiServer: PCALONSO\SQLEXPRESSUse
Integrated Security: NoDatabase: bdajpdsoftLanguage: SpanishData
Encryption: NoTrust Server Certificate: NoMultiple Active Result
Sets(MARS): NoMirror Server: Translate Character Data: YesLog Long
Running Queries: NoLog Driver Statistics: NoUse Regional Settings:
NoUse ANSI Quoted Identifiers: YesUse ANSI Null, Paddings and
Warnings: YesEn 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.1600Running connectivity tests...Attempting
connectionConnection establishedVerifying option
settingsDisconnecting from serverTESTS COMPLETED
SUCCESSFULLY!Acceso a base de datos Microsoft SQL Server 2008 R2
Express mediante Microsoft Access y ODBCUna 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.0UID=saDATABASE=bdajpdsoftWSID=PCALONSOAPP=2007 Microsoft Office
systemSERVER=PCALONSO\SQLEXPRESSDescription=Acceso ODBC SQL
ServerDonde: "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_RTM).100402-1539+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&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_RTM).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 ejecutarEsto 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
menudoProblemaEsto 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 interesanteBuscando 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 .bat1.- Configurando el archivo .batAbramos un
bloc de notas (o el notepad++) y escribamos la siguiente rutina:
SQLCMD -S -i nombrearchivo.sql
Ejemplo: SQLCMD -S sgs_oficina1\SQLEXPRESS -i jueves1.sqlQu 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 .sqlUna 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 .sql2.- Creando el archivo
.sqlComo 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 tareaNos 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.-
FinalUna vez hecho esto ya tendremos una forma automatizada de
ejecutar sentencias SQL en caso que tengamos SQL Server Express