Como generar un script con solo los índices de una base de datos

by Maxi Accotto 19. mayo 2012 21:22

 

Muchas veces necesitamos armar un script con todos los índices de una base de datos. Para ello yo escribí este script en Powershell el cual se encarga de generar dicha salida.

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
$Servidor = Read-Host "Server Name"
$Basededatos = Read-Host "Database Name"
$Filename =  Read-Host "File Name Script"
$Filename = $Filename + ".SQL"
$s = new-object ('Microsoft.SqlServer.Management.Smo.Server')  $Servidor 
$dbs=$s.Databases
foreach ($tables in $dbs[$Basededatos].Tables)
{
    #Generate script for all indexes in the specified table
    foreach($index in $tables.Indexes)
    {
       $index.Script() + "`r GO `r" | out-File $Filename -Append
    }
}   

Para luego ejecutarlo simplemente es necesario entrar a la consola de nuestro Powershell como vemos a continuación

image

Tags: ,

Administracion

Como instalar SQL Server Data Tool (SSDT 2012) de forma gratuita

by Maxi Accotto 14. mayo 2012 03:21

 

En la nueva versión de SQL Server 2012 se ha introducido esta excelente herramienta llamada SSDT (Sql Server Data Tool) la cual permite desarrollar proyectos de bases de datos como lo veníamos haciendo con el TFS y las versiones ultimate de VS2010.

Esto permite al equipo de desarrollo trabajar con una herramienta mucho mas poderosa que el SSMS (Sql Server Management Studio) dándole funcionalidades como:

  • Deploy incremental
  • Refactoring
  • Comparaciones de Schemas (Estructuras)
  • Armado de paquetes DAC para una mejor implementación
  • Debug
  • Editor TSQL
  • Analizador de código TSQL para evitar malas practicas de desarrollo
  • Y mucho mas

Lo bueno de todo esto que es gratis además Open-mouthed smile , entonces aquí vamos a ver cuales son los pasos de instalación para poder tener en nuestros equipos de desarrollo esta excelente Tool.

Algunas aclaraciones: No es necesario tener TFS y con SSDT se pueden armar proyectos de base de datos para SQL 2005 / 2008 / 2008r2 y 2012

Requisitos:

Para poder instalar el SSDT vamos a necesitar:

  • Visual Studio 2010 Shell

http://www.microsoft.com/en-us/download/details.aspx?id=115

  • Visual Studio SP1

http://www.microsoft.com/en-us/download/details.aspx?id=23691

  • SSDT Tool

http://msdn.microsoft.com/en-us/data/hh297027

Pasos para la instalación:

Paso 1: Instalar Visual Studio 2010 Shell

Luego de haber descargado los instalables procederemos a iniciar el proceso de instalación, para ello ejecutaremos VSIntShell que es el archivo que hemos descargado.

01-setup_vshell

02-setup_vshell

03-setup_vshell

04-setup_vshell

Paso 2: Instalar Visual Studio SP1

Luego de haber terminado el proceso de instalación del Visual Studio Shell debemos instalar el SP1 (Service Pack), aquí necesitara acceso a internet ya que el proceso descargara los archivos desde ahí.

05-install sp1

06-install sp1

07-install sp1

Paso 3: Instalar el SSDT

El ultimo paso es instalar el SSDT ejecutando el archivo SSDTSetup, para dicha instalación es necesario también tener acceso a internet.

08-ssdtsetup

09-ssdtsetup

Al terminar con este proceso ya tendremos listo el SSDT para poderlo usar. Recuerde de instalar cada uno de los componentes en los mismos idiomas, por ejemplo si elige Español  debe bajar todo en dicho lenguaje.

Paso 4: Probar SSDT

Para poder verificar la correcta instalación lo que haremos son los siguientes pasos:

  1. Entrar al Visual Studio Shell desde el menú inicio –> Todos los programas –> Visual Studio 2010
  2. Creamos un nuevo proyecto y en las opciones nos debe aparecer “SQL Server Database Project”

image

Instalar el SSDT Power Tools:

Este componente adicional es muy practico y potencia aun mas el uso de SSDT agregándole funcionalidades. Les recomiendo bajarlo e instalarlo

http://visualstudiogallery.msdn.microsoft.com/9b0228c6-15d1-44de-9279-66dde12bf861

 

Integrar el SSDT con TFS:

Por defecto los proyectos de SSDT no se pueden conectar a un servidor TFS 2010 (Team Foundation Server), pero para poderlo hacer podemos seguir los siguientes pasos.

Paso 1: Instalar el Microsoft Visual Studio Team Explorer 2010

Como primer paso es necesario instalar dicho componente el cual puede descargar desde el siguiente link

http://www.microsoft.com/en-us/download/details.aspx?id=329

image

Paso 2: Reinstalar SP1

image 

image

Resumen

Ahora podemos disfrutar de esta excelente herramienta para desarrollo contra SQL Server.

Tags: ,

SQL 2012

Liberación de SQL 2012 RTM

by Maxi Accotto 10. marzo 2012 02:21

 

Ya se encuentra disponible la versión RTM (final y no beta) Sonrisa, muy buen trabajo del equipo de desarrollo, mis felicitaciones.

Los que dispongan una subscripción de MSDN o TechNet ya podrán descargar las distintas ediciones de SQL Server 2012 RTM.

Yo aquí adiciono una serie de links para descarga de mucho interés

Microsoft Drivers 3.0 for SQL Server for PHP

http://www.microsoft.com/download/en/details.aspx?id=20098

Microsoft® SQL Server® StreamInsight 2.0

http://www.microsoft.com/download/en/details.aspx?id=29070

Microsoft ®SQL Server® 2012 FileStream Driver - Windows Logo Certification

http://www.microsoft.com/download/en/details.aspx?id=29071

Microsoft® SQL Server® 2012 Semantic Language Statistics

http://www.microsoft.com/download/en/details.aspx?id=29069

Microsoft® SQL Server® 2012 Privacy Statement and End User License Agreements

http://www.microsoft.com/download/en/details.aspx?id=29067

Microsoft® SQL Server® 2012 Reporting Services Add-in for Microsoft® SharePoint® Technologies 2010

http://www.microsoft.com/download/en/details.aspx?id=29068

Microsoft® SQL Server® 2012 Report Builder

http://www.microsoft.com/download/en/details.aspx?id=29072

Microsoft® SQL Server® 2012 PowerPivot® for Microsoft® Excel® 2010

http://www.microsoft.com/download/en/details.aspx?id=29074

Microsoft® SQL Server® 2012 Performance Dashboard Reports

http://www.microsoft.com/download/en/details.aspx?id=29063

Microsoft® SQL Server® 2012 Master Data Services Add-in For Microsoft® Excel

http://www.microsoft.com/download/en/details.aspx?id=29064

Microsoft® SQL Server® 2012 Evaluation

http://www.microsoft.com/download/en/details.aspx?id=29066

Microsoft® SQL Server® 2012 Feature Pack

http://www.microsoft.com/download/en/details.aspx?id=29065

Microsoft® SQL Server® 2012 Express

http://www.microsoft.com/download/en/details.aspx?id=29062

Microsoft® SQL Server® 2012 Data Mining Add-ins for Microsoft® Office® 2010

http://www.microsoft.com/download/en/details.aspx?id=29061

Tags: ,

SQL 2012

Interesante informe de IDC sobre SQL Server 2012

by Maxi Accotto 23. febrero 2012 01:57

 

Les dejo este interesante documentode la gente de IDC sobre la nueva versión de SQL Server (SQL 2012)

Tags: ,

Noticias | SQL 2012

Paginación de datos en SQL Server 2012

by Maxi Accotto 17. febrero 2012 07:27

 

La paginación de datos desde el propio motor es una técnica que se utiliza en algunos procesos para poder llevar a la aplicación una cantidad reducida de registros y de ser necesarios mas saltar a una pagina posterior.

Para poder lograr esto han existido durante muchos años distintas técnicas de programación a nivel TSQL.

Ahora en SQL 2012 se ha incorporado la paginación de forma nativa la cual es parte del ANSI SQL 2000.

Para ello se utiliza dentro del Order By el seteo de OFFSET, FETCH { FIRST | NEXT } { integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY.

El siguiente link tiene información detallada de como se utiliza.

El siguiente código traerá los primeros 10 registros de un set de datos.

SELECT DepartmentID, Name, GroupName FROM HumanResources.Department ORDER BY DepartmentID OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;

Bien ahora veremos un ejemplo de como se aplica la paginación antes de SQL 2012 y con esta nueva versión.

Para usar paginación antes de SQL 2012 una de las técnicas mas utilizadas es el uso de las CTE y Row_Number()

DECLARE @pagesize AS INT, @pagenum AS INT; SET @pagesize = 5; SET @pagenum = 1; WITH SalesRN AS ( SELECT ROW_NUMBER() OVER(ORDER BY Name) AS rownum, ProductNumber, ProductID,Name FROM[Production].[Product] ) SELECT rownum, ProductNumber, ProductID,Name FROM SalesRN WHERE rownum > @pagesize * (@pagenum-1) AND rownum <= @pagesize * @pagenum ORDER BY rownum; go

Ahora bien, si queremos hacer la misma query con SQL 2012, podríamos escribir lo siguiente

DECLARE @PageSize TINYINT = 5, @CurrentPage INT = 1; SELECT ProductNumber, ProductID,Name FROM[Production].[Product] ORDER BY Name OFFSET (@PageSize * (@CurrentPage - 1)) ROWS FETCH NEXT @PageSize ROWS ONLY;

Como se puede observar es mucho mas simple y natural ya que respeta a un estándar como el ANSI y la otra solución es un simple truco para lograr esto.

Veamos que sucede con los Query Plan de cada uno

image

image

Como se podrá observar en ambos casos es necesario hacer un Scan del Clustered pero al hacerlo con las nuevas instrucciones tenemos menos procesos y esto podría tener efectos del tamaño de una tabla.

Aquí comparamos ambos query plan de forma conjunta.

image

Ahora haremos una query que contemple paginación y el uso de Where, el primer ejemplo es antes de SQL 2012 y el segundo usando SQL 2012.

DECLARE @pagesize AS INT, @pagenum AS INT; SET @pagesize = 5; SET @pagenum = 1; WITH SalesRN AS ( SELECT ROW_NUMBER() OVER(ORDER BY Name) AS rownum, ProductNumber, ProductID,Name FROM[Production].[Product] WHERE Color = 'Red' ) SELECT rownum, ProductNumber, ProductID,Name FROM SalesRN WHERE rownum > @pagesize * (@pagenum-1) AND rownum <= @pagesize * @pagenum ORDER BY rownum;

image

DECLARE @PageSize TINYINT = 5, @CurrentPage INT = 1; SELECT ProductNumber, ProductID,Name FROM [Production].[Product] where Color = 'Red' ORDER BY Name OFFSET (@PageSize * (@CurrentPage - 1)) ROWS FETCH NEXT @PageSize ROWS ONLY;

image



Tags: , ,

SQL 2012 | TSQL

16 virtual labs para probar sql 2012

by Maxi Accotto 11. enero 2012 16:00

 

Les dejo este excelente link de Microsoft donde encontraran laboratorios virtuales para que puedan ir probando SQL Server 2012

Tags:

Denali | Material | How To

Script de PowerShell para scriptiar los Jobs de un servidor

by Maxi Accotto 7. enero 2012 02:50

 

En muchas oportunidades necesitamos hacer un Script de los jobs de producción para llevarlos a otro sitio. Por ejemplo a contingencia.

Para ello podríamos utilizar el siguiente script de Powershell y agregarlo a un step de un job de SQL 2005 / 2008 / R2.

El mismo toma los Jobs que tienen como categoría la palabra producción y genera el script (.sql) de dichos jobs

 

 

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')| out-null

$RutaScripts = "\\servername\"
# Create an SMO connection to the instance
$s = new-object ('Microsoft.SqlServer.Management.Smo.Server') "SERVIDORSQL" 

$jobs = $s.JobServer.Jobs


$scrp = new-object ('Microsoft.SqlServer.Management.Smo.Scripter') ($s)

$scrp.Options.FileName = $f
$scrp.Options.AppendToFile = $true


foreach ($job in $s.jobserver.jobs) 
{
$a = $job.category




if ($a.toupper() -eq "PRODUCCION")
           
    {
    
     $filename = $job.name + ".sql"
     
     write-host $filename
     
     $f = [System.IO.Path]::Combine($RutaScripts, $filename)
     out-file -filePath $f -inputobject "USE MASTER `nGO`n"


     out-file -filePath $f -inputobject "DECLARE @jobId binary(16) `n SELECT @jobId = job_id FROM msdb.dbo.sysjobs WHERE (name = N'$job') `n  
     IF (@jobId IS NOT NULL) `n  EXEC msdb.dbo.sp_delete_job @jobid `n  go `n " -append

  
     $scrp.Script($job) >> $f

     out-file -filePath $f -inputobject "`n" -append
  
     out-file -filePath $f -inputobject "`n EXEC msdb.dbo.sp_update_job @job_name=N'$job',@enabled=0 `n GO `n" -append


    }

else
 {

 }
}

 

ScriptJobByPowerShell scriptjobByPowerShell

Tags:

SQL 2008 | SQL 2008 R2 | Administracion | How To

SQL Server 2012 RC0–Links de descarga

by Maxi Accotto 24. noviembre 2011 15:45

 

Con la liberación del RC0 de SQL Server 2012 (Denali) aquí les pongo una serie de links para las distintas descargas.

Microsoft SQL Server 2012 Release Candidate 0 (RC0)

Aquí podrán encontrar todo el SQL Server donde se incluyen los servicios de: Engine, SSIS, SSAS, SSRS, Powerview, etc.

Microsoft SQL Server 2012 PowerPivot for Excel 2010 Release Candidate 0 (RC0)

Aquí podrán descargar la nueva versión de Powerpivot

Microsoft SQL Server 2012 Express edition RC0

Desde aquí se podrá acceder a la edición gratuita de SQL Server (Express Edición) versión 2012

Microsoft SQL Server 2012 Release Candidate 0 (RC0) Manageability Tool Kit

Este es el kit de herramientas independientes que dan valor adicional a SQL Server 2012

Microsoft SQL Server 2012 Semantic Language Statistics RC0

La base de datos de estadísticas semánticas de lenguaje es un componente obligatorio para la característica Búsqueda semántica estadística en Estadísticas semánticas de lenguaje de Microsoft® SQL Server® 2012 RC0.

Microsoft SQL Server 2012 Data Tool

Las Data Tool son las que nos permitirán hacer desarrollos contra SQL Server de forma mucho mas profesional. Estas herramientas son la evolución de Visual Studio for Database  en versiones anteriores a RC0 se la conocía como  Juneau

Tags:

Denali

Ediciones y licenciamiento de SQL Server 2012 (Denali)

by Maxi Accotto 5. noviembre 2011 19:17

 

Ya se ha dado a conocer como serán las ediciones y los cambios en licenciamiento de la nueva versión de SQL Server.

Aquí les dejo estos dos links.

Ediciones de SQL Server 2012 (Denali)

Licenciamiento de SQL Server 2012 (Denali)

Tags: , ,

Denali

Creando roles a nivel servidor con SQL server 2012 (Denali)

by Maxi Accotto 30. octubre 2011 10:29

Una de las grandes novedades a nivel seguridad en SQL Server 2012 (Denali) es la posibilidad de crear nuestros propios Roles a nivel Servidor.

En versiones anteriores a 2012 solo se podían crear roles a nivel base de datos pero no a nivel instancia.

En este post veremos cómo se realiza esta operación sencilla dentro de SQL Server 2012.

Para esta nueva funcionalidad , SQL 2012 dispone de nuevos comandos TSQL.

  • CREATE SERVER ROLE
  • ALTER SERVER ROLE
  • DROP SERVER ROLE

Ahora veamos un ejemplo.

Creamos un nuevo Server Role

CREATE

SERVER ROLE DBARole

Creamos un login

CREATE

LOGIN [dba1] WITH PASSWORD = 'Yukon900'

Asignamos permisos al Role creado para control del servidor

GRANT

CONTROL SERVER TO DBARole

Le sacamos permisos para el manejo de Logins al Role

DENY

ALTER ANY LOGIN TO DBARole

Agregamos el usuario DBA1 al role DBAROLE

ALTER

SERVER ROLE DBARole ADD MEMBER dba1

Probamos los permisos

EXECUTE

AS LOGIN = 'DBA1'

ALTER

LOGIN SA DISABLE

Msg 15151, Level 16, State 1, Line 1

Cannot alter the login 'SA', because it does not exist or you do not have permission.

CREATE database test1

Command(s) completed successfully.

Desde el Management Studio.

También se puede hacer esta operación desde el SSMS (SQL Server Management Studio 2012)

  1. Iniciar el SSMS
  2. Ir a la solapa Security
  3. Buscar Server Roles
  4. Hacer Click alterno del mouse y seleccionar “New Server Role”

a

Tags:

Denali

Material de la charla sobre novedades en seguridad de SQL 2012

by Maxi Accotto 22. octubre 2011 18:22

 

El día 19 de octubre he tenido el placer de presentar en SQL Passuna charla en vivo sobre las novedades que trae SQL 2012 en relación a la seguridad.

Aquí les dejo el link de la presentación como así también los ejemplos utilizados

Tags: ,

Denali

KIT de entranamiento SQL Denali para developers

by Maxi Accotto 16. octubre 2011 08:18

 

Se acaba de liberar el kit de entrenamiento para desarrolladores de SQL 2012 (Denali).

En el mismo podrán encontrar varias PPT, script y documentos con los cuales podrán hacer un entrenamiento de SQL 2012.

Aquí les dejo el link de descarga

Recuerden que el SQL 2012 (Denali) esta aun en versión beta (CTP3)

Tags:

Denali

Jornada de capacitación en el MUG: Performance Tunning y Monitoreo de SQL Server

by Maxi Accotto 14. octubre 2011 00:35

 

El día 18/10 de 2011 estaré dando una jornada de 8hs en el Club de usuarios Microsoft Argentina sobre temas de monitoreo y tunning en SQL Server 2008 / 2008 R2.

La misma se realizara en Buenos Aires.

En el siguiente link hay mas información

Tags:

Comunidad | Tunning

Libro gratuito de SQL Denali (Ingles Draf)

by Maxi Accotto 13. octubre 2011 20:13

image

Para los que les interese tener una introducción a SQL Denali (SQL 2012) Ms press esta armando un ebook gratuito.

El mismo cuenta con los siguientes capítulos

Chapter 1. Denali Editions and Enhancements

Chapter 2. High Availability and Disaster Recovery Enhancements

Chapter 3. Scalability and Performance

Chapter 4. Security Enhancements

Chapter 5. Beyond Relational

Chapter 6. Integration Services

Chapter 7. Data Quality Services

Chapter 8. Master Data Services

Chapter 9. Analysis Services

Chapter 10. PowerPivot

Chapter 11. Reporting Services

Tags: , ,

Denali

Se libero el SP3 de SQL 2008

by Maxi Accotto 7. octubre 2011 04:08

Tags: ,

SQL 2008

Reconocimiento como MVP en SQL server por séptimo año

by Maxi Accotto 1. octubre 2011 19:17

 

Hoy recibí en mi bandeja de entrada el correo de Microsoft donde me premian como MVP en SQL server por 7 año consecutivo.

La verdad que es un gran honor y placer recibir este premio desde el año 2005.

Gracias a Fernando García Loera mi MVP Lead por todo lo que hace, además es una excelente persona Sonrisa

Para los que no conocen lo que es el programa MVP aquí les dejo un link.

Aquí también les dejo mi perfil publico en la pagina de Microsoft

 

MVP_FullColor_ForScreen

Tags:

Comunidad

Maximiliano Damian Accotto