Algunos Stored Procedures no documentados (undocumented) de suma utilidad.

sp_MScheck_uid_owns_anything
Devuelve los objetos cuyo owner es el id de owner indicado.
Por ejemplo:

USE pubs
GO
EXEC sp_MScheck_uid_owns_anything 1
GO

sp_MSforeachdb
Realiza una misma tarea para todas las bases de datos de un servidor.
Por ejemplo, el script siguiente realiza un checkdb por cada base de datos del servidor.

EXEC sp_MSforeachdb @command1="print '?' DBCC CHECKDB ('?')"

sp_MSforeachtable
Realiza una misma tarea para cada tabla de la base de datos actual.
Por ejemplo, el siguiente script realiza un dbreindex para cada tabla:
EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?')"




Hugo Bernachea - (Microsoft Certified Trainer - MCSD)
http://www.linkedin.com/in/bernachea
Read More...

SQL Server Skills - Paul Randall

Descubrí esta página de casualidad: http://www.sqlskills.com/blogs/paul/
El nivel de los artículos de Paul Randall es sencillamente magistral !

Recomendado para todos aquellos que quieren profundizar mas allá de la cáscara, conociendo los "internals" de SQL Server .


Hugo Bernachea - (Microsoft Certified Trainer - MCSD)
http://www.linkedin.com/in/bernachea
Read More...

Msg 468 Level 16 State 9 Cannot resolve the collation conflict

Este error se produce cuando en determinados selects hay campos con diferentes collations (colaciones u ordenamientos) y provocan una incompatibilidad al momento de resolver la consulta.
Esto se soluciona especificando de manera concreta la collation con la sentencia collate, veamos el ejemplo a continuación usando la base AdventureWorks.

select addressline1 collate SQL_Latin1_General_CP1_CI_AS from Person.Address
union all
select FirstName collate SQL_Latin1_General_CP1_CI_AS from Person.Contact

Y con la función fn_helpcollations podemos recuperar una lista de collations compatibles con el sistema operativo del server.

select * from fn_helpcollations()

La collation especificada para las bases de datos, campos de tabla especifica la forma en que SQL va a ordenar los campos al momento de presentarlos en pantalla.
Read More...

Inyección SQL - Técnicas y como evitarlo

En:
http://www.nextgenss.com/papers/advanced_sql_injection.pdf

Se encuentra un excelente tutorial sobre inyección SQL y como evitarlo y "blindar" nuestras aplicaciones en contra de esta técnica que algunas veces muchos desarrolladores omiten.

Hugo Bernachea - (Microsoft Certified Trainer - MCSD)
http://www.linkedin.com/in/bernachea
Read More...

Mensaje de error: Cannot generate sspi context o No se puede generar contexto SSPI

Este es un mensaje de error que SQL Server puede llegar a dar al intentar registrar un servidor SQL con seguridad integrada (windows).
Después de dar vueltas y vueltas en su momento con este error, ciertamente frustrante en algunos casos, después de investigar bastante, creo que la mejor explicación, la mas completa y concisa está, como muchas veces suele estar, en sqlservercentral:

http://www.sqlservercentral.com/articles/Installation/cannotgeneratesspicontext/929/

En resumen, la configuración de active directory, kerberos, e incluso la sincronización de horas tienen que ver con este error.

Hugo Bernachea - (Microsoft Certified Trainer - MCSD)
http://www.linkedin.com/in/bernachea
Read More...

Como des-encriptar un Stored Procedure encriptado ?

El siguiente script lo encontré googleando por ahí y me pareció interesante postearlo con la idea de ser utilizado para recuperar la lógica de stored proc encriptados.
Aparentemente solo funciona con stored de hasta 4000 líneas, mas allá de eso tira un mensaje de error.

Pero bueno, nada es perfecto es esta vida, pero en general cumple con el objetivo:

http://searchwindevelopment.techtarget.com/tip/0,289483,sid8_gci841704,00.html

Si son suficientemente sagaces podrán notar que reemplazando las partes que dicen "Procedure" por "View" podrían hacer un desencriptador de Vistas encriptadas.





Hugo Bernachea - (Microsoft Certified Trainer - MCSD)
http://www.linkedin.com/in/bernachea
Read More...

Otro link muy interesante sobre las estadísticas de los planes de ejecución de SQL Server

Read More...

Opciones de optimización: Inner Loop Join

No es una opción muy conocida en general, pero se puede incluir opciones de optimización en caso que los resultados de los planes de ejecución con respecto a los joins no se estén resolviendo de la manera adecuada.

Por eso, para evitar merge joins se puede usar la sentencia Inner Loop Join
Por ejemplo:
SELECT title_id, pub_name, title FROM titles INNER LOOP JOIN publishers ON titles.pub_id = publishers.pub_id

Como los bol (books on line) no dicen mucho les dejo un par de links de referencia:

http://www.sql-server-performance.com/tips/hints_join_p1.aspx

http://www.sql-server-performance.com/articles/per/join_inner_loop_p1.aspx






Hugo Bernachea - (Microsoft Certified Trainer - MCSD)
http://www.linkedin.com/in/bernachea
Read More...

Como determinar la version y Service Pack de SQL Server 2000 y 2005

La siguiente sentencia permite determinar la versión en ejecución de SQL Server con el correspondiente Service Pack instalado:

SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

Las tablas de versiones

SQL Server 2005
Versión Sqlservr.exe
RTM 2005.90.1399
Service Pack 1 de SQL Server 2005 2005.90.2047
Service Pack 2 de SQL Server 2005 2005.90.3042

SQL Server 2000
Versión Sqlservr.exe
RTM 2000.80.194.0
Service Pack 1 de SQL Server 2000 2000.80.384.0
Service Pack 2 de SQL Server 2000 2000.80.534.0
Service Pack 3 de SQL Server 2000 2000.80.760.0
Service Pack 3a de SQL Server 2000 2000.80.760.0
Service Pack 4 de SQL Server 2000 2000.8.00.2039


Hugo Bernachea - (Microsoft Certified Trainer - MCSD)
http://www.linkedin.com/in/bernachea
Read More...

Como determinar la version de SQL Server 2000 y 2005 en ejecución

Las siguientes sentencias permiten determinar la versión en ejecución de SQL Server con el correspondiente Service Pack instalado:
Para SQL Server 2005
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
La tabla siguiente muestra el número de versión de Sqlservr.exe:
VersiónSqlservr.exe
RTM2005.90.1399
Service Pack 1 de SQL Server 2005 2005.90.2047
Service Pack 2 de SQL Server 20052005.90.3042

Para determinar la version de SQL Server 2000 hay que ejecutar:
SELECT  SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
Los resultados son:
La versión del producto (por ejemplo, 8.00.534).
El nivel del producto (por ejemplo, "RTM" o "SP2").
La edición (por ejemplo, "Standard Edition"). Por ejemplo, el resultado es similar al siguiente:

8.00.534 RTM Standard Edition
La tabla siguiente muestra el número de versión de Sqlservr.exe:
VersiónSqlservr.exe
RTM2000.80.194.0
Service Pack 1 de SQL Server 2000 2000.80.384.0
Service Pack 2 de SQL Server 20002000.80.534.0
Service Pack 3 de SQL Server 20002000.80.760.0
Service Pack 3a de SQL Server 20002000.80.760.0
Service Pack 4 de SQL Server 20002000.8.00.2039


Hugo Bernachea - (Microsoft Certified Trainer - MCSD)
http://www.linkedin.com/in/bernachea
Read More...

problemas de compatibilidad en el ORDER BY en SQL 2005

Al cambiar el modo compatibilidad de 8.0 a 9.0 suelen surgir errorres de compatibilidad entre versiones y muchas sentencias que funcionaban normalmente empiezan a fallar, por caso, cuando existen sentencias ORDER BY basadas en campos con prefijos al estilo ORDER BY tabla.campo
SQL Server 2005 asume que no debiera haber ningun tipo de ambiguedad en el campo del ORDER BY y por lo tanto lo espera sin prefijo alguno, por eso tira error.
Un interesante artículo puede ser encontrado en:
http://geeks.ms/blogs/jalarcon/archive/2007/09/10/compatibilidad-entre-versiones-de-sql-server-problema-la-ordenaci-243-n-order-by-y-los-prefijos.aspx

Existe una herramienta que permite determinar las posible incompatibilidades que puede presentar una base de datos en compatibilidad 8.0 (SQL 2000) al ser actualizada a 9.0. La herramienta se llama SQL Upgrade Advisor y se puede descargar desde:
http://geeks.ms/blogs/jalarcon/archive/2007/09/10/compatibilidad-entre-versiones-de-sql-server-problema-la-ordenaci-243-n-order-by-y-los-prefijos.aspx
Read More...

Herramientas gratuitas para DBAs

En la siempre util SQL Server Central podemos encontrar un artículo con una lista de herramientas de plena utilidad para los SQL DBAs
http://www.sqlservercentral.com/articles/Miscellaneous/2959/

Para los que no saben inglés les hago un resumen de las herramientas gratuitas propuestas:

NVU
Este es un editor HTML open source.

FullSun SQL Server Toolkit
Es una herramienta con muchas características. Solo disponible para MSSQL 2000. Es básicamente una herramientas de administración y monitoreo.

EMS SQL Manager for SQL Server Lite

Esta es una versión gratuita de SQL Manager con funciones administrativas limitadas. Solo disponible para SQL 2005. Una caracteristica interesante es que permite browsear los datos en modo grid o en modo formulario. Requiere registración. Se puede descargar desde: http://www.download.com/3001-10255_4-10594854.html

Toad for SQL Server

Toad es muy conocido en el mundo Oracle. Tiene funcionalidad similar al Enterprise Manager y está organizado en tabs (solapas).

SQLCheck

Provee unas cuantas funciones de monitoreo de contadores de performance tales como: Buffer Cache Ratio, User Connections, Processor Time, etc. Se pueden revisar los procesos SQL, el SQL Log, Job, etc. Requiere registración.

WinSql

Version gratuita de WinSQL. Tiene opciones de creación de tablas muy interesantes. Requiere registración.

SQLinForm

Esta herramienta está pensada para varios motores de bases de datos. Permite formatear sentencias SQL y hacerlas mas legiles al ojo humano. También existen sitios con formateadores gratuitos, tales como SQL Parser

SpaceMonger

Provee una vista gráfica del espacio ocupado por los archivos en forma muy rapida.

ExamDiff

Permite comparar código SQL, Stored Procedures, tablas, etc.

Windows Sysinternals

Herramientas de diagnóstico para servidores Windows.

7-Zip

Compresor de archivos compatible con WinZip gratuito, quizás carece de alguna de sus funcionalidades tales como la encriptación, pero de todos modos cumple el objetivo.


The 46 Best-ever Freeware Utilities

Este no es un programa sino un sitio con links a sitios con utilidades varias.

Espero les resulte útil.
Read More...

Nuevo Blog

Soy Román, Administrador de Bases de Datos SQL Server desde hace largo rato y abro este blog con la idea de compartir experiencia, mostrar novedades, herramientas, tips, scripts para el administrador de bases de datos SQL Server en sus principales versiones 2000 y 2005. Las principales dudas, los errores mas frecuentes, las soluciones mas esperadas, todo eso espero resumirlo en este blog.

Este es mi comienzo y estoy abierto a las propuestas, colaboraciones, comentarios y aportes varios con el fin de darnos elementos y herramientas para mejorar la calidad y productividad del servicio que los administradores SQL Server ofrecemos a las companias.

Bienvenidos !
Read More...