April 2009 - Posts
Si se desea transferir una base de datos que está en SQL Server 2008 hacia SQL Server 2005 no existe una forma fácil y natural de hacerlo, por ejemplo no se puede restaurar un respaldo de SQL 2008 en SQL 2005. La opción que podemos seguir es la que sugiere Chris Goddard. La idea de Chris consiste en utilizar el Managemente Studio, en esta herramienta se elige el Wizard de Generación de Scripts y se le indica la versión de SQL Server 2005 y que incluya los datos. Puede ver los detalles en esta dirección http://www.devx.com/dbzone/Article/40531




Se debe tener cuidado con esta opción ya que si la BD tiene muchos datos se va requerir mucho espacio, si los datos son sensitivos hay que tomar en cuenta que estos no están encriptados.
En el script generado se debe comentar la siguiente línea:
--EXEC sys.sp_db_vardecimal_storage_format N'Northwind', N'ON'
--GO
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
En un artículo anterior se mención los problemas de rendimiento que se pueden presentar en SQL Server debido al manejo de memoria, o más bien cuando el sistema operativo no le asigna toda la memoria a SQL Server, para resolver estos problemas el CSS Team tiene una serie de reocmendaciones que incluyo a continuación:
Windows 2003
We can use a combination of memory sizing and locked pages to avoid the issue in the vast majority of cases. What you want to do is monitor your memory counter a peak load. Doing this with locked pages disabled will let you see all the counters in one place. Using the values captured you can establish the max and min server memory settings of SQL Server to accommodate the peak work load. Once you have these targets you can enabled locked pages again.
Take for example a 64GB machine and when run peak load the OS and other applications require 10GB. You might configures SQL Server max server memory around 53GB (bit of overhead for thread stacks and memory outside buffer pool) to achieve steady server performance.
Windows 2008
Windows 2008 updated the working set policy decisions and avoids many of the significant working set trim. These changes are designed to avoid significant trims and steady the performance of the server. This allows SQL Server to adjust to memory notifications and avoid being pages. Testing has shown that prior to these changes the SQL Server working set could be significantly trimmed. After the changes the system maintains better working set balance and no longer trims the SQL Server working set aggressively. Instead the memory notifications that SQL Server listens to can be fired and SQL Server will back-off when required.
The example used if peak memory requires 10GB but common load only 4GB you can keep max memory around 59GB and only when peak load on the system is occurring will SQL Server back off to accommodate the load.
Min Server Memory
Use the min server memory setting with care. This is a floor to SQL Server. Once committed memory to reach the min server memory setting SQL Server won't release memory below the mark. If you set max server memory to 59GB and min server memory to 56GB, but the server needs to back SQL Server down to 53GB SQL Server won't drop below 56GB. When you combine this setting with locked pages in memory the memory can't be paged. This can lead to unwanted performance behaviors and allocation failures.
http://blogs.msdn.com/psssql/archive/2008/03/03/sql-server-working-set-trim-problems-consider.aspx
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
Microsoft ha anunciado que la versión estándar de SQL Server va a soportar Locked Pages http://blogs.msdn.com/psssql/archive/2009/04/24/sql-server-locked-pages-and-standard-sku.aspx
Esta es una característica muy útil que estaba únicamente presente en la versión Enterprise, cuando se presentan problemas de rendimiento relacionados con el uso de memoria y la paginación. En inglés este problemas es conocido como "working set trim problems" unas formas de evitar este problema las pueden consultar en la siguiente dirección http://blogs.msdn.com/psssql/archive/2008/03/03/sql-server-working-set-trim-problems-consider.aspx
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
Registrate en http://windowsvistaadoptionday.eventbrite.com/
Deseamos invitarlo a la sesión que tendremos sobre Windows Vista este mes de mayo.
En esta sesión veremos informacion acerca de las ventajas de Windows Vista desde la perspectiva de administración de TI.
Al final de la actividad entre los presentes se rifarán los siguientes premios: una notebook Toshiba con capacidad hasta 4GB de RAM, doble procesador, DVD writer, multilector de tarjeta, wireless. Además un disco duro externo de 500GB, una impresora multifuncional EPSON (impresora, fax, fotocopiadora y escaner), licencias de Windows y más.
Cada asistente recibirá un DVD de la Comunidad Windows con recursos útiles en la administración de la infraestructura de TI.
El evento tiene un costo de $20, sin embargo hemos llegado a un acuerdo con los patrocinadores y contamos con una cantidad limitada de cupones de descuento para aquellas personas registradas como miembros de la comunidad, el cupón de descuento es de un 100%. Para obtener ese cupón de descuento deben enviar sus datos de miembro a la siguiente cuenta de correo eventos@mswindowscr.org.
Si no eres miembro puedes registrarte de forma gratuita en la siguiente dirección http://comunidadwindows.org/user/CreateUser.aspx?ReturnUrl=
El detalle de la invitación lo encontrarás a continuación.
Te invita,
Comunidad Windows
http://windowsvistaadoptionday.eventbrite.com/



Windows Windows Vista representa una mejora importante para los profesionales de TI que administran un entorno de equipos de escritorio, en esta sesión veremos información acerca de las ventajas de Windows Vista desde la perspectiva de administración de TI



- Cómo y por qué cambiar a Windows Vista
- Productividad y Administración de Windows Vista
- Cómo Windows Vista aporta más control para mantener en funcionamiento equipos de escritorio
- Implementación avanzada
- Mejoras en SP1


Al final de la actividad entre los presentes se rifarán los siguientes premios: una notebook con Windows Vista, un disco duro externo, una impresora multifuncional EPSON, licencias de Windows y más.


Fecha:
14 de mayo del 2009
Hora:
8:00 a.m. - 12:30 p.m.
Lugar:
CinemarkMultiplaza del Este
Dirección:
Multiplaza del Este, Zapote
Información:
eventos@mswindowscr.org

Reserve su espacio a tiempo.
Cupo limitado.




Muchas veces es necesario determinar cuáles han sido los jobs cuya ejecución ha fallado en SQL Server, para hacer esto se pueden utilizar los scripts creados por Drew Salem, los cuales incluyo a continuación:
USE
[DBA_Admin]
GO
/******
Part 3a: The Failed Jobs Report
Object Creation: Table Failed_Jobs
Purpose: To create the table Failed_Jobs
Date: 01/02/2009
Author: Drew Salem - www.thebuddingdba.com
For: SQLServerCentral.com
******/
CREATE TABLE [dbo].[Failed_Jobs]
(
[originating_server] [varchar](255) NULL,
[job_name] [varchar](255) NULL,
[job_description] [varchar](1023) NULL,
[last_outcome_message] [varchar](255) NULL,
[last_run_date] [varchar](63) NULL,
[job_id] [varchar](255) NULL
)
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Después de creada esa tabla se debe crear el procedimiento almancenado para llenar la tabla anterior:
USE [DBA_Admin]
GO
/******
Part 3a: The Failed Jobs Report
Object Creation: The usp_GetFailedJob stored procedure
Purpose: To retrieve failed jobs data from a single server
Date: 08/02/2009
Author: Drew Salem - www.thebuddingdba.com
For: SQLServerCentral.com
******/
CREATE PROC [dbo].[usp_GetFailedJob]
@servername SYSNAME
AS
SET NOCOUNT ON
DECLARE @sql1 VARCHAR (8000)
DECLARE @version VARCHAR (50)
--First check which version of SQL Server is running.
SELECT @version = serverversion
FROM Server_SQL_Details
WHERE servername = @servername
--If it's 2000 then execute this code
IF @version = '8'
BEGIN
SELECT @sql1 = '
Select j.originating_server,
j.name, j.description, jh.last_outcome_message, substring(space(1),
33,33) +
-- Calculate and format fail datetime
-- Add Run Duration Seconds
cast(
-- Add Start Time Seconds
dateadd(ss, cast(substring(cast(last_run_time + 1000000 as char(7)),6,2) as int),
-- Add Start Time Minutes
dateadd(mi, cast(substring(cast(last_run_time + 1000000 as char(7)),4,2) as int),
-- Add Start Time Hours
dateadd(hh, cast(substring(cast(last_run_time + 1000000 as char(7)),2,2) as int),
convert(datetime,cast (last_run_date as char(8)))))) as char(19)) As Last_Run_Date, j.job_id
FROM [' + @servername + '].msdb.dbo.sysjobservers
jh join [' + @servername + '].msdb.dbo.sysjobs j ON jh.job_id=j.job_id
where last_run_outcome <> 1'
--Insert into a temp table before it gets its knickers in a twist
CREATE TABLE #t2 (
originating_server VARCHAR(255),
job_name VARCHAR(255),
job_desc VARCHAR(1023),
last_outcome_message VARCHAR(255),
last_run_date VARCHAR(63),
job_id VARCHAR(255))
INSERT INTO #t2 EXEC(@sql1)
--And insert the relevant info into our Failed Jobs table
INSERT INTO Failed_Jobs
(originating_Server, job_name, job_description, last_outcome_message, last_run_date, job_id)
SELECT originating_server, job_name, job_desc, last_outcome_message, last_run_date, job_id
FROM #t2
DROP TABLE #t2
END
ELSE
--If it's 2005 then execute this code
IF @version = '9'
BEGIN
SELECT @sql1 = '
Select id.originating_server,
j.name, j.description, jh.last_outcome_message, substring(space(1),
33,33) +
-- Calculate fail datetime
-- Add Run Duration Seconds
cast(
-- Add Start Time Seconds
dateadd(ss, cast(substring(cast(last_run_time + 1000000 as char(7)),6,2) as int),
-- Add Start Time Minutes
dateadd(mi, cast(substring(cast(last_run_time + 1000000 as char(7)),4,2) as int),
-- Add Start Time Hours
dateadd(hh, cast(substring(cast(last_run_time + 1000000 as char(7)),2,2) as int),
convert(datetime,cast (last_run_date as char(8)))))) as char(19)) As Last_Run_Date, j.job_id
FROM [' + @servername + '].msdb.dbo.sysjobservers
jh join [' + @servername + '].msdb.dbo.sysjobs j ON jh.job_id=j.job_id
join [' + @servername + '].msdb.dbo.sysoriginatingservers_view id
ON id.originating_server_id=j.originating_server_id
where last_run_outcome <> 1'
CREATE TABLE #t3 (
originating_server VARCHAR(255),
job_name VARCHAR (255),
job_desc VARCHAR (1023),
last_outcome_message VARCHAR (255),
last_run_date VARCHAR(63),
job_id VARCHAR (255))
INSERT INTO #t3 EXEC(@sql1)
INSERT INTO Failed_Jobs
(originating_Server, job_name, job_description, last_outcome_message, last_run_date, job_id)
SELECT originating_server, job_name, job_desc, last_outcome_message, last_run_date, job_id
FROM #t3
DROP TABLE #t3
END
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
Cuando se configurar Reporting Services un website que no es default, o sea diferente al 80. Se puede presentar el siguiente error:
"An error occurred while parsing the configuration file. The ReportServerVirtualDirectory element is missing. "
Para resolverlo tienes que abrir el archivo de configuración RSWebApplication.config el cual se encuentra en el directorio virtual de Reports o en la siguiente ruta C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportManager. Tienes que buscar la siguiente entrada.
<UI>
<ReportServerUrl></ReportServerUrl>
<ReportServerVirtualDirectory></ReportServerVirtualDirectory>
<ReportBuilderTrustLevel>FullTrust</ReportBuilderTrustLevel>
</UI>
En la entrada ReportServerVirtualDirectory debes agregar el nombre del
directorio virtual del report server.
<UI>
<ReportServerUrl></ReportServerUrl>
<ReportServerVirtualDirectory>ReportServer</ReportServerVirtualDirectory>
<ReportBuilderTrustLevel>FullTrust</ReportBuilderTrustLevel>
</UI>
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
Si se desea instalar el Data Protection Manager 2007 utilizando un repositorio remoto es necesario ejecutar el siguiente utilitario, de lo contrario la instalación podría generar errores.
sqlprep.msi
Este archivo lo pueden encontrar en el DVD de instalación del DPM en el directorio \DPM2007\MSI
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
La optimización de las consultas puede influir en el desempeño del servidor, debido a que esta tarea consume mucho CPU, con el siguiente script se puede tener una idea global sobre cómo la optimización de consultas influye en el uso de CPU.
select *
from sys.dm_exec_query_optimizer_info
Más información en http://www.microsoft.com/technet/prodtechnol/sql/2005/tsprfprb.mspx
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Con el siguiente query se puede determinar los batches en cache o procedimientos que están utilizando más CPU. El estatuto agrega todos las consultas que estpa en el mismo plan_handle.
select top 50
sum(qs.total_worker_time) as total_cpu_time,
sum(qs.execution_count) as total_execution_count,
count(*) as number_of_statements,qs.plan_handle
from
sys.dm_exec_query_stats qs
group by qs.plan_handle
order by sum(qs.total_worker_time) desc
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Más información en
http://www.microsoft.com/technet/prodtechnol/sql/2005/tsprfprb.mspx
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Con el siguiente query se puede determinar si existen tareas que están esperando por CPU para ser ejecutadas, un número alto de runnable tasks es alto indica un cuello de botella en el CPU y debe ser investigado.
select scheduler_id,current_tasks_count,runnable_tasks_count
from sys.dm_os_schedulers
where scheduler_id < 255
Más información en
http://www.microsoft.com/technet/prodtechnol/sql/2005/tsprfprb.mspx
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Cuando se está tratando de mejorar el desempeño de una consulta en SQL Server se deben analizar los siguientes aspectos:
- Elementos que son accedidos por la consulta, entre ellos: objectos accesados (tablas, columnas), bloqueos que se presentan durante la ejecución. Por ejemplo, las transacciones provocan que se bloqueen recursos tales como tablas.
- Tiempo de ejecución de las consultas, por ejemplo si la consulta dura mucho entonces es posible que genere más bloqueos, los cuales generan problemas de concurrencia.
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
Muchas veces se deben elegir las herramientas adecuadas para monitorear el desempeño de SQL Server, entre ellas existen algunas de Windows y otras propias de SQL Server. Por ejemplo, el plan de ejecución sirve para determinar el uso de los índices en una consulta en particular. Sin embargo, es necesario utilizar otras herramientas de monitoreo con el fin de determinar el problema de desempeño, entre esas herramientas están: SQL Server Profiler, Performance Monitor y el Activity Monitor.
Un heurístico para la selección de la herramienta son las siguientes:
- SQL Server Profiler, se utiliza para monitorear y solucionar problemas relacionados con Transact-SQL y aquellos relacionados con las aplicaciones.
- El Performance Monitor ayuda a determinar problemas de desempeño de hardware
- El Activity Monitor son útiles para obtener información sobre las conexiones de los usuarios en el servidor y los bloqueos existentes.
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
Dentro de los planes futuros de SQL Server se perfila lo siguiente:
- Kilimanjaro, programado para la segunda mitad del 2010, proveerá nuevas herramientas de BI en SQL basado en un servicio autoadministrado de inteligencia de negocios.
- Madison, que saldrá al mismo tiempo que Kilimanjaro. Integra la tecnología de Data Allegro dentro de SQL para lograr alta escalabilidad en los data warehouses.
- SQL Server Services, son el pilar de la Azure Platform de cloud computing.
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
Hace poco Microsoft publicó un excelente artículo sobre las técnicas de consolidación de SQL Server aplicadas en Microsost, pueden bajar ese documento en esta dirección http://download.microsoft.com/download/3/0/6/3068EC2F-FA39-4879-BD50-6F67843BFC92/SQLServerConsolidationTWP.doc
La presentación PPT y webcast puede ser accedidos en esta otra dirección http://technet.microsoft.com/en-us/library/dd557540.aspx
En este paper se presenta el SQL Utility utilizado por Microsoft para proveer instancias de SQL Server utilizando virtualización con Hyper-V con el fin de utilizar mejor los recursos. Tal y como se muestra en la siguiente imagen.
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
Cuando se instala SQL Server 2008 SP1 en una máquina que tiene instalado Visual Studio 2008, se puede presentar el siguiente problema:
Rule "Previous releases of Microsoft Visual Studio 2008" failed.
A previous release of Microsoft Visual Studio 2008 is installed on this computer. Upgrade Microsoft Visual Studio 2008 to the SP1 before installing SQL Server 2008.
Esto se debe a ciertas incompatibilidades que existen entre los productos, para arreglarlo hay que desintalar cualquier versión de SQL Server que se tenga instalado, instalar el SP1 de VS2008 y volver a instalar SQL Server. Para mayores detalles y escenarios pueden consultar el siguiente artículo http://support.microsoft.com/kb/956139
Saludos,
Eduardo Castro – Microsoft SQL Server
http://comunidadwindows.org
Costa Rica
Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server
More Posts
Next page »