29 diciembre, 2009
Rendimiento de XML en SQL Server 2005
Este es el artículo original publicado en el sitio de Microsoft
Esta es una copia de respaldo en Google Docs
Este es el archivo en formato PDF
26 diciembre, 2009
Windows PowerShell 2.0 Software Development Kit (SDK)
Descargar el SDK del sitio de Microsoft.
10 diciembre, 2009
Windows 7 USB/DVD Download Tool
Descargar en: http://wudt.codeplex.com
09 diciembre, 2009
Microsoft SharedView
Recomiendo esta utilidad para asistir a un usuario que requiere soporte técnico a distancia.
Descargar Microsoft SharedView del sitio de descargas de Microsoft
02 diciembre, 2009
Las virtudes y maldades del SQL dinámico, de Erland Sommarskog
Link 1 a formato PDF
Link 2 a formato PDF
El artículo original en inglés está en este otro link: The Curse and Blessings of Dynamic SQL
01 diciembre, 2009
SQL Server 2008 R2 CTP Noviembre
PARA DESCARGAR:
Community Technology Preview (CTP) de noviembre para SQL Server 2008 R2
http://www.microsoft.com/downloads/details.aspx?FamilyId=fe0c6a31-5ad6-4eea-a865-73bbe2608bd1&displaylang=es
SQL Server 2008 R2 de Community Technology Preview (CTP) de noviembre - Express Edition
http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=c772467d-e45b-43e1-9208-2c7b663d7ad1
24 noviembre, 2009
17 noviembre, 2009
Cómo detectar y matar procesos huérfanos
¿Cuánto tiempo tarda o cuándo es que SQL Server limpia una sesión huérfana? No lo hace. SQL Server termina una conxión cuando la aplicación cliente o el sistema operativo lo solicita. A nivel de sistema operativo, las conexiones que usan named pipes sobre NETBEUI suelen tener un timeout bastante rápido. Las conexiones basadas en named pipes sobre IP tienen un timeout un poco mayor. Pero las sesiones basadas en sockets TCP/IP por omisión no tienen timeout. Por lo tanto el administrador de SQL Server debe identificar las sesiones huérfanas y matarlas usando el comando KILL.
Una forma posible de identificar una sesión huérfana se logra filtrando en SysProcesses por las columnas Status y Last_Batch. Si el Status indica que la sesión está a la espera de un comando y la diferencia entre GetDate() y Last_Batch es grande, todo indica la presencia de una sesión huérfana a la que se podría aplicar el KILL.
Por ejemplo:
--
-- SQL Server 2005/2008
-- Matar sesiones inactivas de mas de X minutos
--
-- Ejemplo: 8 hrs (480 minutos)
DECLARE @mm INT
SET @mm = 480
DECLARE @SPIDS TABLE(SPID INT)
DECLARE @SPID INT
DECLARE @KILLCMD VARCHAR(200)
INSERT @SPIDS (SPID)
SELECT SPID
FROM sysprocesses
WHERE SPID <> @@SPID
AND status = 'sleeping'
AND DATEDIFF(MINUTE, last_batch, getdate()) > @mm
SELECT @SPID = MIN(SPID) FROM @SPIDS
WHILE @SPID IS NOT NULL
BEGIN
SELECT @KILLCMD = 'KILL ' + CONVERT(VARCHAR(100),@SPID)
EXEC(@KILLCMD)
SELECT @SPID = MIN(SPID) FROM @SPIDS WHERE SPID > @SPID
END
La ejecución del ejemplo no elimina procesos del sistema. Cuando KILL intenta hacerlo, se verá el mensaje de error:
Msg 6107, Level 14, State 1, Line 1
Only user processes can be killed.
sys.sysprocesses contiene información sobre los procesos que se ejecutan en una instancia de SQL Server. Estos procesos pueden ser procesos del cliente o procesos del sistema.
Esta tabla del sistema se incluye como vista para la compatibilidad con versiones anteriores a 2005/2008. En su lugar, se recomienda el uso de las vistas del sistema de SQL Server actual. Esta característica se quitará en una versión futura de Microsoft SQL Server.
12 noviembre, 2009
Entendiendo y usando el soporte de PowerShell en SQL Server 2008
Understanding and Using PowerShell Support in SQL Server 2008
http://msdn.microsoft.com/en-us/library/dd938892.aspx
Mi versión traducida está disponible públicamente: Entendiendo y Usando el Soporte de PowerShell en SQL Server 2008. También puede obtenerse en este otro link.
Espero que sea de utilidad a la comunidad hispanoparlante. Todos los comentarios son siempre bienvenidos.
02 noviembre, 2009
Instalar AdventureWorks2008 es más que una aventura
Primero veamos cómo es la forma oficial de hacer la instalación de AdventureWorks2008, cómo la forma oficial tiene fallas y finalmente cómo instalar exitosamente las bases de ejemplo con un método alternativo.
1. La manera oficial de instalar AdventureWorks
Primero que nada hay que instalar los pre-requisitos necesarios:
Microsoft .NET Framework 3.5 Service Pack 1
http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe
Windows Installer 4.5 Redistributable
http://www.microsoft.com/downloads/details.aspx?FamilyId=5A58B56F-60B6-4412-95B9-54D056D6F9F4&displaylang=en
Para Windows Server 2008 elegir uno de los siguientes instaladores acorde a la plataforma:
x86: Windows6.0-KB942288-v2-x86.msu
x64: Windows6.0-KB942288-v2-x64.msu
IA64: Windows6.0-KB942288-v2-ia64.msu
Windows Powershell
En Windows Server 2008, Windows Powershell viene incluído pero no se instala por omisión. Para instalarlo ejecutar el Server Manager:
%SystemRoot%\system32\CompMgmtLauncher.exe
Seleccionar: Features. Luego clic en "Add Features" y marcar "Windows Powershell".
Luego de instalados los pre-requisitos, podremos instalar SQL Server 2008. Si se ha optado por la edición Express, hay que instalar SQL Server 2008 Express with Advanced Services debido a que las bases de ejemplo AdventureWorks requieren el servicio Full-Text Search incluido en dicha edición de Express. Entonces es recomendable instalar lo siguiente:
Microsoft SQL Server 2008 Express with Advanced Services
http://download.microsoft.com/download/e/9/b/e9bcf5d7-2421-464f-94dc-0c694ba1b5a4/SQLEXPRADV_x86_ENU.exe
Microsoft SQL Server 2008 Express with Tools
http://download.microsoft.com/download/7/9/4/794bfafa-aea7-45d4-a6ea-4e92f09918e3/SQLEXPRWT_x86_ENU.exe
Lo anterior es para instalar el Management Studio Express 2008. Observar que si previamente en la máquina existe el Management Studio Express 2005, hay que desinstalarlo desde Start / Control Panel.
Antes de instalar AdventureWorks usando los paquetes de instalación .msi, asegurarse que el SQL Server 2008 ya tiene todo lo siguiente: Full-Text Search instalado, el servicio SQL Full-text Filter Daemon Launcher iniciado y FILESTREAM habilitado. Veamos cada uno:
Cómo instalar el servicio Full-Text Search
Si el servicio Full-Text Search ya está instalado, pero el servicio SQL Full-text Filter Daemon Launcher no está iniciado, la instalación va a fallar indicando que falta dicho servicio.
Para instalar Full-Text Search, ejecutar el instalador de SQL Server (si es la edición Express, hay que usar el instalador de SQL Server 2008 Express With Advanced Services). En el instalador, elegir la opción "New SQL Server stand-alone installation or add features to an existing installation".
En la ventana "Installation Type" seleccionar "Add features to an existing instance of SQL Server 2008", seleccionar la instancia de la lista desplegable y pulsar "Next". Al llegar a la ventana "Feature Selection" bajo el nodo "Instance Features/Database Engine Services", marcar "Full-Text Search", puslar "Next" y completar el asistente de instalación.
Cómo habilitar el servicio SQL Full-text Filter Daemon Launcher
En el menú de inciio de Windows: Start / All Programs / Microsoft SQL Server 2008 / Configuration Tools / SQL Server Configuration Manager. En el panel izquierdo pulsar "SQL Server Services". En la lista de servicios, clic-derecho en "SQL Full-text Filter Daemon Launcher" para la instancia que se está configurando y clic en "Properties". Luego clic en la pestaña "Service", junto a "Start Mode" clic en "Disabled" y en "Automatic". Luego hacer clic-derecho en "SQL Full-text Filter Daemon Launcher" y pulsar "Start".
Cómo habilitar FILESTREAM
http://msdn.microsoft.com/es-es/library/cc645923.aspx
Las bases de datos AdventureWorks se descargan de: Sample Databases (http://msftdbprodsamples.codeplex.com/ ). El instalador es el siguiente:
SQL2008.AdventureWorks_All_Databases.x86.msi
http://msftdbprodsamples.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34032#DownloadId=86538
Este instalador a mucha gente, incluido yo, le ha fallado. Cuando aparece la ventana "Database setup", aparece una lista desplegable donde hay que seleccionar la instancia de SQL Server en la que se va a instalar AdventureWorks. Pero sorpresivamente el botón "Next" no se habilita. Para hacer peor las cosas, si se pulsa el botón "Back" y se vuelve a pulsar "Next", volvemos a la ventana y ahora sí está activo el botón "Next". Lo pulsamos y sopresa! La instalación termina indicando que hubo una falla. Trsitemente, no se indica cuál es la falla exactamente.
2. La manera alternativa de instalar AdventureWorks que funciona
2.1. No usar los programas de instalación .msi y descargar las bases de ejemplo en el formato zipeado, que están en:
SQL2008.AdventureWorks_All_Databases.zip
http://msftdbprodsamples.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34032#DownloadId=86540
/* UPDATE 2010-02-28:
El link fue movido, ahora está en http://msftdbprodsamples.codeplex.com/releases/view/37109#DownloadId=106391
*/
2.2. Expandir el zip en una carpeta, por ejemplo D:\SQL2008.AdventureWorks_All_Databases. Dentro de esa carpeta hay una subcarpeta para cada base de datos. Así, la base AdventureWorksLT2008 está en la subcarpeta:
D:\SQL2008.AdventureWorks_All_Databases\Tools\Samples\AdventureWorks 2008 LT
2.3. Luego abrir una ventana de query en el Management Studio y abrir el archivo del script de creación de la base AdventureWorksLT2008:
D:\SQL2008.AdventureWorks_All_Databases\Tools\Samples\AdventureWorks 2008 LT\instawltdb.sql
2.4. Cuando el script fué cargado en la ventana de comandos, poner a la ventana en "modo SQLCMD" (en el menú del Management Studio: Query / SQLCMD mode).
2.5. Modificar las variables SqlSamplesDatabasePath y SqlSamplesSourceDataPath que aparecen en las líneas 34 y 35 para que contengan los valores adecuados, y descomentar. Las líneas quedarán así (prestar atenció que las rutas terminan en retrobarras \ ) como s ve a continuación:
:setvar SqlSamplesDatabasePath "D:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS2008\MSSQL\DATA\"
:setvar SqlSamplesSourceDataPath "D:\SQL2008.AdventureWorks_All_Databases\Tools\Samples\"
2.6. Ejecutar el script y la base de datos AdventureWorksLT2008 se creará exitosamente.
Finalmente hacer los mismos pasos para la base AdventureWorks 2008 OLTP.
28 octubre, 2009
Libro: Mastering Powershell
Es una guía muy detallada y completa de 20 capítulos (más de 500 páginas).
Script: Cómo saber qué instancias hay de SQL Server
strKeyPath = "SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
objReg.EnumValues &H80000002, strKeyPath, arrEntryNames, arrValueTypes
For count=0 To UBound(arrEntryNames)
objReg.GetStringValue &H80000002, strKeyPath, arrEntryNames(count), strInstance
objReg.GetStringValue &H80000002, "SOFTWARE\Microsoft\Microsoft SQL Server\" & strInstance & "\Setup", "Version", strVersion
Wscript.Echo arrEntryNames(count) & " - " & strVersion
Next
Para probarlo, hacer lo siguiente:
1. Copiar el script en un editor de texto y grabarlo en un archivo con extensión .vbs, por ejemplo: VerInstancias.vbs
2. Abrir una ventana de línea de comandos Windows.
3. Ejecutar en la línea de comandos: cscript VerInstancias.vbs
20 octubre, 2009
Cómo habilitar xp_cmdshell en SQL Server 2008
USE master
GO
EXECUTE sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO
EXECUTE sp_configure 'xp_cmdshell', '1'
RECONFIGURE WITH OVERRIDE
GO
EXECUTE sp_configure 'show advanced options', 0
RECONFIGURE WITH OVERRIDE
GO
18 octubre, 2009
Los permisos para BACKUP y RESTORE
- Permisos para poder ejecutar el comando BACKUP.
- Permisos para escribir en los archivos físicos.
Para poder ejecutar el comando BACKUP, de forma predeterminada, los permisos para ejecutar los comandos BACKUP DATABASE y BACKUP LOG corresponden a los usuarios miembros del rol de servidor SysAdmin y de roles de base de datos Db_Owner y Db_BackupOperator.
Para poder escribir en los archivos físicos, los privilegios corresponden al servicio SQL que es quién hace la tarea. El servicio SQL Server debe poder leer y escribir en el dispositivo y la cuenta en la que se ejecuta el servicio SQL Server debe tener permisos de escritura. Observar que los privilegios del usuario que ejecutó el comando BACKUP no interesan: Una vez que el BACKUP pudo ejecutarse, los privilegios de escritura los tiene el servicio SQL.
Ejemplo:
-- Respaldo completo de una base de datos
BACKUP DATABASE MiBase
TO DISK = 'Z:\Respaldos\Sql\MiRespaldoDeBase1.bak'
GO
Para que este comando sea exitoso, los permisos deben ser así:
1. El usuario que ejecuta el BACKUP debe pertenecer al rol SysAdmin o Db_Owner o Db_BackupOperator.
2. La cuenta de inicio de SQL Server debe tener permiso de Lectura y Escritura sobre la carpeta Z:\Respaldos\Sql
Para hacer un RESTORE, las consideraciones son:
Si la base de datos que se va a restaurar no existe, el usuario debe tener permisos CREATE DATABASE para poder ejecutar RESTORE. Si la base de datos existe, los permisos RESTORE corresponden de forma predeterminada a los miembros de las funciones fijas de servidor sysadmin y dbcreator, y al propietario (dbo) de la base de datos (para la opción FROM DATABASE_SNAPSHOT, la base de datos siempre existe).
Los permisos RESTORE se conceden a funciones en las que la información acerca de los miembros está siempre disponible para el servidor. Debido a que los miembros de una función fija de base de datos sólo se pueden comprobar cuando la base de datos es accesible y no está dañada, lo que no siempre ocurre cuando se ejecuta RESTORE, los miembros de la función fija de base de datos db_owner no tienen permisos RESTORE.
Ejemplo:
RESTORE DATABASE MiBaseNueva
FROM DISK = 'Z:\Respaldos\Sql\MiRespaldoDeBase1.bak'
La cuenta de inicio de SQL Server debe tener permisos de lectura sobre los archivos físicos involucrados en el comando RESTORE (en el ejemplo: 'Z:\Respaldos\Sql\MiRespaldoDeBase1.bak').
16 octubre, 2009
SQL Powershell básico: 1. Ejecutar la consola y ver instancias
SQL Server 2008 instala Windows PowerShell y un conjunto de complementos de SQL Server que exponen la funcionalidad de SQL Server en Windows PowerShell. La utilidad de línea de comandos SQLPS se emplea para ejecutar sesiones de Windows PowerShell que incluyen los complementos de SQL Server.
Para iniciar SQL Powershell, abrir una línea de comandos y ejecutar:
sqlps
Poweshell inicia y nos muestra un prompt PS SQLSERVER:\> que queda listo para recibir los comandos que ingresemos. El proveedor de SQL Server Windows PowerShell expone la jerarquía de objetos de SQL Server en rutas de acceso similares a las rutas de acceso al sistema de archivos.
La jerarquía se puede explorar con comandos usuales de DOS o UNIX, como: dir, cd, ls.
En la figura vemos cómo recorrer la jerarquía hasta llegar a una instancia de SQL Server 2008 Express que se llama GLARRIERA3W7\SQLEXPRESS2008. Observar cómo con 'ls' listamos los objetos disponibles en cada "carpeta".
Sitio Microsoft de Windows Powershell (en inglés)
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
Información general de PowerShell de SQL Server
http://msdn.microsoft.com/es-es/library/cc281954.aspx
How to Download Windows PowerShell 1.0
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx
15 octubre, 2009
Diagnóstico de problemas de conexión a SQL Server 2005/2008
Este artículo está basado en el artículo:
SQL Server 2005 Remote Connectivity Issue TroubleShoot
http://blogs.msdn.com/sql_protocols/archive/2006/09/30/SQL-Server-2005-Remote-Connectivity-Issue-TroubleShooting.aspx
publicado en el blog del equipo de SQL Protocols, firmado por Ming Lu
*/
A diferencia de lo que sucedía con SQL Server 2000, conectarse a SQL Server 2005/2008 cuando está instalado en un XP, Windows 2003/2008, Vista o Windows 7 atrás de un firewall, suele presentar ciertas dificultades en el diagnóstico del problema. Los principales motivos son que, desde SQL Server 2005, se aplicaron dos cambios importantes respecto a la versión 2000: Apagado de protocolos de red y el servicio SQL Browser.
Para hacer más seguro al producto, la conectividad fué reducida por omisión. Durante la instalación de una edición Express o Developer, el servicio SQL solamente escucha via Shared Memory (SM) y Named-pipe (NP) local (TCP, NP remoto y VIA están desactivados). Si se está instalando una edición Enterprise, Standard o Workgroup, SM, NP local y TCP están habilitados.
Entonces, para hacer una conexión remota primero hay que asegurarse que NP o TCP están habilitados en la instancia remota de SQL Server.
El servicio SQL Browser es un servicio Windows que inicia y solicita el puerto UDP 1434. Cuando una aplicación cliente quiere conectarse, envía un mensaje UDP al servidor por el puerto 1434. El SQL Browser responde al mensaje indicando cuál es el puerto TCP/IP o el NP en el que la instancia solicitada está atendiendo.
Ahora es necesario que el SQL Browser esté iniciado para cuando un cliente intenta conectarse a una instancia de SQL Server. Si la instancia remota es una instancia sin nombre, no es requerido tener iniciado al SQL Browser ya que los clientes van a intentar usar el puerto TCP 1433 y el NP "\\
La lista de problemas que puede aparecer se relacionan entonces con:
1. Falla de conexión sobre TCP/IP o NP, si el protocolo usado no está habilitado.
2. Falla de conexión sobre TCP/IP o NP si hay un firewall intermedio y están bloqueados los puertos necesarios o no se ha agregado a la lista de excepciones del firewall a "File and Printer Sharing".
3. Falla de conexión a la instancia SQL remota si el SQL Browser no está iniciado o si el puerto TCP 1434 (donde escucha el SQL Browser) no está abierto en el firewall.
Veamos ahora cómo hacer el tratar un problema de conectividad a una instancia remota. Asumiremos que la instancia de SQL server está iniciada en un servidor remoto y que el cliente ha especificado correctamente el nombre de la instancia remota.
EN EL SERVIDOR SQL:
1. Habilitar TCP y/o NP remoto:
SS2005: Usar SQL Server Surface Area Configuration / Configuration for Services and Connections / Remote Connections.
SS2008: Usar Management Studio / Object Explorer / Seleccionar instancia, clic-derecho, propiedades, Connections y marcar "Allow connections to this server".
2. Verificar el log de errores del servidor SQL, determinar en qué puerto TCP y/o NP está escuchando.
3. Cuando se usa TCP, usar el comando de línea NETSTAT para ver si el servidor está escuchando en el puerto correcto.
netstat -noa findstr NumeroPuerto
4. Verificar el servicio SQL Browser:
Ejecutar en línea de comandos SERVICES.MSC, buscar el servicio "SQL Server Browser", habilitarlo y reiniciarlo. También ir a la utilidad SQL Server Configuration Manager, revisar las propiedades del SQL Browser, en la sección "Advanced" y confirmar que está activo.
5. Habilitar "File and Printer Sharing" en la lista de excepciones del firewall.
6. Agregar el puerto TCP y/o SQLSERVR.EXE (..\Binn\sqlservr.exe) a la lista de excepciones del firewall.
7. Agregar SQLBROWSER.EXE (..\Shared\sqlbrowser.exe) a la lista de excepciones del firewall o agregar el puerto UDP 1434.
8. Confirmar si la instancia remota SQL es la instancia por omisión (sin nombre)
En este caso debe escuchar en el puerto TCP 1433 y en el NP "\\pipe\sql\query"
EN LA ESTACION CLIENTE:
1. Probar PING:
ping IPservidorSql
2. Probar TELNET:
telnet IPservidorSql\NombreInstancia NumeroPuerto
Si la consola de comandos queda totalmente negra sin mensajes, el TELNET ha sido exitoso. Falla cuando aparece un mensaje de error indicando que no pudo conectarse al servidor.
3. Probar \\IpServidorSql
4. Verificar los protocolos del cliente:
Usar SQL Server Configuration Manager / SQL Native Client Configuration / Client Protocols. Confirmar que NP o TCP están habilitados; clic en las propiedades de los protocolos cliente, ver que NP o TCP están habilitados. Se recomienda poner a TCP al comienzo de la lista de protocolos.
5. Configurar MDAC:
Si se usa MDAC (Driver={SQL Server} o SQLOLEDB.x) en la aplicación cliente, en línea de comandos ejecutar CLICONFG.EXE, habilitar NP y TCP (poner TCP primero en la lista).
6. Probar conexión con OSQL.EXE o SQLCMD.EXE:
osql /S servidor\instancia
osql /S servidor\instancia
7. Revisar string de conexión
Revisar la sintaxis y los valores del string de conexión de la aplicación cliente, es frecuente cometer errores en el string de conexión.
8. Revisar alias
Si la aplicación cliente se conecta al servidor remoto usando un alias: Si se usa MDAC ejecutar CLICONFG.EXE, ver la solapa "Alias". Si se usa el SQL Native Client, ejecutar SQL Server Configuration Manager y revisar "Aliases".
Si todo lo anterior está revisado y correcto, ver en los siguientes links información de diagnóstico acorde a los distintos mensajes de error recibidos:
Diagnóstico de problemas de conexión a SQL Server 2005/2008, Parte 2
http://ascii164.blogspot.com/2010/02/diagnostico-de-problemas-de-conexion.html
Troubleshoot Connectivity Issue in SQL Server 2005 - Part II
http://blogs.msdn.com/sql_protocols/archive/2005/10/29/486861.aspx
Troubleshoot Connectivity Issue in SQL Server 2005 - Part III
http://blogs.msdn.com/sql_protocols/archive/2005/12/22/506607.aspx
Troubleshoot Connectivity Issue with SQL Server Express 2005
http://blogs.msdn.com/sql_protocols/archive/2006/03/23/558651.aspx
14 octubre, 2009
SqlMonitoring: Monitoreo de SQL Server
Para descargar SqlMonitoring:
http://www.codeplex.com/sqlmonitoring
Importar y exportar datos en SQL Server Express 2008

Para importar/exportar de una base de datos de SQL Server 2008 Express, el Management Studio tiene los asistentes de importación y exportación. En la imágen adjunta se puede ver cómo acceder a los asistentes. Recordar que en SQL Server Express, no existe la opción para guardar el paquete creado por el asistente, cosa que sí es posible en las ediciones no-Express.
Por ejemplo, en el siguiente video se muestra cómo exportar datos a una planilla Excel.
Otras alternativas posibles:
- Usar la herramienta BCP.EXE
- Usar consultas con OPENROWSET
- Usar BULK INSERT
Importar o exportar datos con el Asistente para importación y exportación de SQL Server
http://msdn.microsoft.com/es-es/library/ms141209.aspx
Cómo ejecutar el Asistente para importación y exportación de SQL Server
http://msdn.microsoft.com/es-es/library/ms140052.aspx
Acerca de las operaciones de importación y exportación masivas
http://msdn.microsoft.com/es-es/library/ms187042.aspx
08 octubre, 2009
Datos espaciales
Se proporcionan dos tipos de datos espaciales, GEOGRAPHY y GEOMETRY, que permiten almacenar datos espaciales directamente sin necesidad de transformarlos en otros formatos de almacenamiento estándares.
Ejemplo:
-- SQL Server 2008 Express
USE Master;
GO
CREATE DATABASE DemoEspacial;
GO
USE DemoEspacial;
GO
CREATE TABLE Demo_TablaEspacial(
EspacialID int IDENTITY (1,1),
EspacialInputCol geography,
EspacialOutputCol AS EspacialInputCol.STAsText()
)
GO
INSERT INTO Demo_TablaEspacial (EspacialInputCol)
VALUES (geography::STGeomFromText('LINESTRING(47.656 -22.360, 47.656 -22.343)', 4326));
GO
SELECT * FROM Demo_TablaEspacial
En los Books Online hay información detallada:
Trabajar con datos espaciales (motor de base de datos)
http://msdn.microsoft.com/es-es/library/bb933876.aspx
En este artículo hay una comparación de las funcionalidades espaciales de SQL Server 2008, MySQL 5.1/6 y PostgreSQL 8.3/PostGIS 1.3/1.4.
Cómo configurar accesos remotos en SQL Server 2008 Express
06 octubre, 2009
Planes de mantenimiento para el DBA pobre
Se incluyen los siguientes scripts:
- SQLBackupAll – Performs Full database backup for non-excluded databases by SQL native or Litespeed backup commands. The job has parameters to specify the desired backup location and compress (SQL Litespeed backup) or nocompress (SQL native backup) , whether to backup or not to backup read only database etc.
- SQLBackupDiffAll - Performs Differential database backup for non-excluded databases by SQL native or Litespeed backup commands. This job is disabled by default. This can be enabled based on the customer’s needs for the recovery requirements.
- SQLBackupTranAll – Performs Transaction Log backup for non-excluded databases by SQL native or Litespeed backup commands. The job has parameters to specify the desired backup location and compress (SQL Litespeed backup) or nocompress (SQL native backup)
- SQLBackupChecker – Checks for backups that have not occurred in more than the specified number of hours in the job. There is a parameter to specify the desired number of hours to specify for the alert.
- SQLDBCCAll - Performs database consistency checks on all system and user databases.
- SQLIndexDefragAll – Performs Index defrag maintenance for non-excluded SQL 2000 databases. This job is disabled by default. It can be enabled based on the customer’s needs. This job helps to run the index defrag for all the databases in the SQL instance or any particular database or any particular table in a database.
- SQLUpdateStatistics - Runs Update Statistics maintenance for non-excluded databases.This job is disabled by default. This job is disabled by default. It can be enabled based on the customer’s needs. This job helps to run the update statistics for all the databases in the SQL instance or any particular database or any particular table in a database.
- SQLCleanupMsdbBackupHistory – Cleans up the backup history information from msdb database.
- SQLCycleErrorLog - Cycle the SQL Error log periodically so the size is manageable for viewing through SQL tools.
En el paquete se incluye un documento Word con las instrucciones y detalles. Brevemente:
1. Expandir el paquete en una carpeta C:\AITSCRIPTS
2. En dicha carpeta ejecutar el script de línea de comandos: jobsinstall servidor\instancia
EJEMPLO:
C:\AITScripts>jobsinstall (LOCAL)\SQLEXPRESS2008
C:\AITScripts>C:\AITScripts\CMDS\JOBSinstall.cmd (LOCAL)\SQLEXPRESS2008
C:\AITScripts>REM **********************************
C:\AITScripts>REM Pass the server name as a parameter, this proc will install procedures and jobs on a sql server
C:\AITScripts>REM then execute each job for the first run.
C:\AITScripts>REM **********************************
C:\AITScripts>REM ****** INSTALL PROCEDURES and OBJECTS **************
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLDBExclusions.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLDBDBCCExclusions.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLDBTranExclusions.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLSpecifyDBExclusions.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLSpecifyDBTranExclusions.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLSpecifyDBDBCCExclusions.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLSpecifyDBIndexDefragExclusions.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLSpecifyDBUpdateStatsExclusions.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLDBUpdateStatsExclusions.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLMostRecentBackup.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLBackupChecker.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLBackupAll01.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLBackupAll02.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLBackupAll03.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLBackupDiffAll01.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLBackupDiffAll02.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLRenameTlogBackupFile.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLBackupTranAll01.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLBackupTranAll02.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLDbccAll.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLIndexDefragAll_SQL2000.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLIndexDefragAll_SQL2005.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLIndexDefragAll.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLUpdateStatsAll.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLRODBStatus.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLMostRecentBackup_RODB.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLfncsvtodatabase.sql"
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\PROCS\SQLfncsvtotable.sql"
C:\AITScripts>REM ****** INSTALL JOBS **************
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\JOBS\JOB_SQLBackupAll.sql"SQLServerAgent is not currently running so it cannot be notified of thisaction.
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\JOBS\JOB_SQLBackupDiffAll.sql"SQLServerAgent is not currently running so it cannot be notified of thisaction.
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\JOBS\JOB_SQLBackupTranAll.sql"SQLServerAgent is not currently running so it cannot be notified of thisaction.
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\JOBS\JOB_SQLDBCCAll.sql"SQLServerAgent is not currently running so it cannot be notified of thisaction.
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\JOBS\JOB_SQLIndexDefragAll.sql"SQLServerAgent is not currently running so it cannot be notified of thisaction.
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\JOBS\JOB_SQLUpdateStatsAll.sql"SQLServerAgent is not currently running so it cannot be notified of thisaction.
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\JOBS\JOB_SQLBackupChecker.sql"SQLServerAgent is not currently running so it cannot be notified of thisaction.
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\JOBS\JOB_SQLCleanupMsdbBackupHistory.sql"SQLServerAgent is not currently running so it cannot be notified of thisaction.
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\JOBS\JOB_SQLCycleErrorLog.sql"SQLServerAgent is not currently running so it cannot be notified of thisaction.
C:\AITScripts>osql -S(LOCAL)\SQLEXPRESS2008 -E -dmaster -n -i"C:\Aitscripts\JOBS\JOB_SQLBackupSingleDBwithCompression.sql"SQLServerAgent is not currently running so it cannot be notified of thisaction.C:\AITScripts>
Finalizada la instalación, los procedimientos fueron creados en la base de sistema MsDb.
NOTA: Observar los errores al tratar de configurar al SQLServerAgent en un Express 2008.
Cómo hacer un respaldo automatizado en SQL Server Express
Por ejemplo, si deseo hacer un respaldo agendado de una base de datos, los pasos a seguir serán:
1. Escribir el comando BACKUP adecuado:
osql.exe -S MiServidorsql -U MiUsuario -P MiContraseña -Q " BACKUP DATABASE MiBase TO DISK = 'C:\bkp\MiBase.bak' "
2. Agendar dicho comando usando el Windows Task Scheduler. En Windows 7, para iniciar el Task Scheduler se debe ejecutar:
%windir%\system32\taskschd.msc /s
La utilidad osql permite especificar archivos de scripts, procedimientos de sistema e instrucciones Transact-SQL. Esta herramienta utiliza ODBC para comunicarse con el servidor y puede usarse stand-alone.
La utilidad sqlcmd también permite escribir instrucciones Transact-SQL, procedimientos del sistema y archivos de script en el símbolo del sistema. Esta utilidad utiliza OLE DB para ejecutar lotes de Transact-SQL.
osql (utilidad)
http://msdn.microsoft.com/es-es/library/ms162806.aspx
sqlcmd (utilidad)
http://msdn.microsoft.com/es-es/library/ms162773.aspx
Tutorial: utilidad sqlcmd
En este tutorial se proporciona una breve introducción a la utilidad sqlcmd para los usuarios sin experiencia en la utilización de una utilidad de línea de comandos.
http://msdn.microsoft.com/es-es/library/ms170207.aspx
Bases de datos de ejemplo para SQL Server 2008
Recomiendo tener a mano la base Pubs pues ocupa poco lugar, es simple de entender y además mucha documentación de SQL Server (incluyendo libros y artículos famosos) ejemplifica usando dicha base.
Instalación y Configuración de SQL Server Express 2005
Este documento cubre el proceso de instalación y configuración de SQL Server Express, y la comunicación entre SQL Server Express y sus aplicaciones. Este documento está dirigido a aficionados y otros profesionales que no sean desarrolladores, asi también como a desarrolladores, administradores y otros especialistas.
UPDATE 1:
El artículo original fue publicado en MTJ.NET de MSDN pero el link original fue movido, ahora está en este link. Una copia del artículo en formato PDF la he salvado en este link del portal de Solid Quality. Otra copia (por eso de tener respaldos redundantes J) la puse en este otro link.
http://msdn.microsoft.com/es-ar/library/bb972190.aspx