SQL Server

August 2008 - Posts

Evento qué hay de nuevo en SQL 2008

El material utlizado en este evento está en http://comunidadwindows.org en la sección de downloads. Con respecto a los tipos fecha puede consultar estos links.

http://blogs.msdn.com/manisblog/archive/2007/08/28/sql-server-2008-enhancements-in-date-and-time-data-types.aspx

http://msdn.microsoft.com/en-us/library/bb630289.aspx

Slds

Eduardo Castro - http://comunidadwindows.org

 

Technorati Tags:
Cómo configurar SQL para que utilice SANs

Hillaryt Cotter ha creado este webcast http://searchsqlserver.bitpipe.com/detail/RES/1213128440_243.html?src=wc_sqlsrv_fgru_06_16_08&li=122419&asrc=EM_FGWC_3845466&uid=5650610 en el cual explica la forma que se debe configurar SQL Server cuando se trabaja con SANs

 

Slds

Eduardo Castro - http://comunidadwindows.org

 

Technorati Tags:
Posted: Aug 14 2008, 04:22 AM by ecastro | with no comments
Filed under:
Ver el historial de las ejecuciones de los Policy Management Framework

SQL 2008 incluye una nueva vista en MSDB que permite ver el historial de ejecución de la verificación de políticas definidas por el Policy Management Framework

 

select *  from syspolicy_policy_execution_history_details

 

Trae un detalle como el siguiente

image

 

Saludos,

Eduardo Castro -  Comunidad Windows - http://mswindowscr.org

 

Technorati Tags:
Posted: Aug 12 2008, 04:07 AM by ecastro | with no comments
Filed under:
Maraton de SQL Server 2008
 

clip_image002

 

 

 

 

Hola como parte de una iniciativa creada por Benjamin Figueroa se creó el Maraton de SQL Server donde todo el contenido fue creado por MVPs de SQL de Latinoamerica. Podrán encontrar el anuncio oficial en el blog de Benjamin.

Les dejo algunos de los videos:

Monitoreando el desempeño mediante Performance Data Collector

image

image
Gestión del Servidor mediante facetas
image
Diseño de cubos con Analysis Services

image
Introducción al Declarative Management Framework
image
Instalando SQL Server 2008 en Windows Server 2008

image
Manejo de recursos mediante Resource Governor
image
Nuevos tipos de datos en SQL Server 2008

image
Compresión de datos en SQL Server 2008
image
Monitoreando el desempeño mediante Performance Data Collector

image
Administración mediante Políticas 1
image
Administración mediante Políticas 2

image
Administración mediante Políticas 3

 

Saludos

Eduardo Castro - Comunidad Windows - http://mswindowscr.org

Posted: Aug 12 2008, 02:42 AM by ecastro | with no comments
Filed under:
Table valued parameters

Si se tienen que insertar más de una fila dentro de una tabla, usualmente se ejecuta el insert o procedimiento almacenado tantas veces como filas tenga, con los table valued parameters se pueden enviar múltiples filas de datos dentro un mismo TSQL sin necesidad de crear tablas temporales o haciendo múltiples llamadas.

 

Los Table Valued-Parameters son nuevos en SQL 2008

 

Primero tienes que crear el tipo que se va insertar

 

CREATE TYPE tipo_linea (consecutivo INT, _id INT, producto INT, cantidad INT);

 

Después se crea un procedimiento almacenado que recibe como parámetro ese tipo

 

CREATE PROC InsertarIventario (@_id INT, @datos_por_insertar tipo_linea)
AS

INSERT INTO tablainventario VALUES (@_id ... ) ;
INSERT INTO detalleinventario
  SELECT * FROM @datos_por_insertar;

 

Slds

Eduardo Castro Comunidad Windows http://mswindowscr.org

 

Technorati Tags:
Posted: Aug 11 2008, 11:56 PM by ecastro | with no comments
Filed under:
Procedimiento para encontrar índices duplicados en SQL Server

Greg Liwood escribió un procedimiento para detectar los índices duplicados en SQL Server, lo cual ayuda a mejorar el desempeño.

 

exec sp_MSForEachTable 'usp_duplicateindexes''?'''

Here's the proc script:

USE master

GO

create procedure [dbo].[usp_duplicateindexes]

@tablename varchar(255)

as

set nocount on

print @tablename

--dump sp_helpindex into temp table

if object_id('tempdb..#helpindex') > 0 drop table #helpindex

create table #helpindex (

index_name varchar (900) not null primary key

, index_description varchar (1000) null

, index_keys varchar (1000) null)

insert #helpindex exec sp_helpindex @tablename

--add [inccols] to temp table & cursor over output, adding included col defs

alter table #helpindex add inccols varchar(1000) null

declare cr cursor for

select si.name, sc.name

from sysobjects so

join sysindexes si on so.id = si.id

join sys.index_columns ic on si.id = ic.object_id and si.indid = ic.index_id

join sys.columns sc on ic.object_id = sc.object_id and ic.column_id = sc.column_id

where so.xtype = 'U'

and so.name = @tablename

and ic.is_included_column = 1

order by si.name, ic.index_column_id

declare @siname varchar(1000), @scname varchar(1000)

open cr

fetch next from cr into @siname, @scname

while @@fetch_status = 0

begin

update #helpindex set inccols = isnull(inccols , '') + @scname + ', ' where index_name = @siname

fetch next from cr into @siname, @scname

end

update #helpindex set inccols = left(inccols, datalength(inccols) - 2) where right(inccols, 2) = ', '

close cr

deallocate cr

--dump duplicates into second temp table & pump results if there are any

if object_id('tempdb..#helpindex2') > 0 drop table #helpindex2

create table #helpindex2 (

index_name varchar (900) not null primary key

, index_description varchar (1000) null

, index_keys varchar (1000) null

, inccols varchar(1000) null

)

insert into #helpindex2

select hi.index_name, hi.index_description, hi.index_keys, hi.inccols

from #helpindex hi

join #helpindex h2 on hi.index_keys=h2.index_keys

and hi.index_description=h2.index_description

and hi.index_name<>h2.index_name

if @@rowcount > 0

select @tablename as "tablename", * from #helpindex2 order by index_name, index_keys, inccols

--cleanup temp objects

if object_id('tempdb..#helpindex2') > 0 drop table #helpindex2

if object_id('tempdb..#helpindex') > 0 drop table #helpindex

 

Slds

Eduardo Castro - Comunidad Windows http://mswindowscr.org

Permitiendo la administración de los jobs a usuarios que no son System Administrators en SQL Server Agent 2005 o superior

Antes de que llegara el Microsoft SQL Server 2005 al mercado, si usted deseaba que alguien tuviera acceso a ver, modificar, crear y ejecutar los SQL Server Agent Jobs, necesitaba darle permisos de Systems Administrator al login deseado de SQL Server, con el inconveniente que de también le iba a permitir hacer lo que deseara en esa instancia.

A partir del SQL Server 2005, se incluyeron los siguientes 3 roles:

SQLAgentUserRole: Los usuarios pueden crear jobs y manejar solo los jobs que ellos han creado.
SQLAgentReaderRole: Van a tener los privilegios del rol SQLAgentUserRole junto con la habilidad de enumerar y ver el historial de todos los jobs.
SQLAgentOperatorRole: Van a tener los mismos privilegios del rol SQLAgentReaderRole junto con la habilidad de ejecutar jobs locales de los cuales ellos no son dueños.

El procedimiento para asignarle permisos a un login en alguno de esos roles es el siguiente:

1. Agregue el usuario deseado a la base de datos "msdb":

USE [msdb]

GO

CREATE USER [MyUser] FOR LOGIN [MyUser]

GO

2. Asigne el rol deseado al usuario:

USE [msdb]

GO

EXEC sp_addrolemember 'SQLAgentUserRole', 'MyUser'

GO

 

Aporte de Hector Bejarano - http://citicr.org

Compresión de backups en SQL Server 2008

Una de las grandes mejoras que recibió el Microsoft SQL Server 2008 es la capacidad de poder comprimir backups de manera nativa. Lo mejor de todo es que se puede lograr de una manera muy sencilla, solo necesita especificar COMPRESSION en la cláusula WITH del comando BACKUP. Por ejemplo:

BACKUP DATABASE Adventureworks 
TO DISK = 'C:\Advc.bak' 
WITH INIT, COMPRESSION

Para que tenga una idea del beneficio de esta nueva funcionalidad, si usted hace un backup de la base de datos ejemplo de SQL Server 2005 y SQL Server 2008 llamada "AdventureWorks", notará que un backup normal demanda 129 MB (hecho en 7.5 segundos) de espacio contra 35 MB (hecho en 3.8 segundos) cuando utiliza la compresión.

Por otra parte, cuando usted quiere restaurar no de estos backups, no necesita especificar nada adicional al comando de restore (La restauración del backup normal tomó 10.4 segundos contra 6.3 del backup comprimido).

 

Aporte de Hector Bejarano - http://citicr.org

Curso gratis sobre SQL Server 2008

Microsoft tiene disponible de forma gratuita un curso sobre las nuevas características de SQL Server 2008, puede inscribirse en la siguiente dirección 6187 e-Clinic: What's New in Microsoft SQL Server 2008 

Slds,

 

Eduardo Castro

Comunidad Windows Costa Rica - http://mswindowscr.org

Comunidad TI bien social - http://citicr.org

Technorati Tags:
Posted: Aug 01 2008, 05:10 PM by ecastro | with no comments
Filed under: