dissabte, 22 de juliol del 2017

SQL Server 2017 RC1

Ja la tenim aquí!!
Per fi ha sortit la RC1 d'SQL Server 2017.
Amb un parell de mesos de retard respecte els rumors.

Aquí teniu la notícia oficial:
 https://blogs.technet.microsoft.com/dataplatforminsider/2017/07/17/first-release-candidate-of-sql-server-2017-now-available/

Ara toca probar el rendiment amb servidor Windows Server vs servidor Linux. És probable que ens toqui migrar de servidor de bbdd i de SO a la vegada. Diversió assegurada...

Aquest post és més curt que estic de vacances sense ordinador.

dijous, 29 de juny del 2017

Control de versions SSDT 2013 amb TFS

Avui veurem com configuar una connexió TFS per al SSDT 2013 per a poder tenir versionat del nostre codi.
Per poder utilitzar tfs ens hem de baiar el fitxer vs_teamExplorer.exe
Últimament costa bastant de trobar, adjunto link que espero que no deprequin:
http://download.microsoft.com/download/9/B/4/9B44FFC8-64C2-4091-9028-6E8550E9C96E/vs_teamExplorer.exe
 En SSDT 2015 el plug-in ja ve instal·lat per defecte.

Un cop tenim el plug-in de TFS podem anar al menú Team --> Connect to Team Foundation Server…

dilluns, 29 de maig del 2017

Modificar project.Params dinàmicament desde SSDT


A partir de SSIS 2012 tenim l'opció de treballar en package deploymen o project deploymnent. Si treballem en project deployment tenim un fitxer Project.prarams non és una bona pràctica tenir mapejades les connexions que tenim, com poden ser les de BBDD. Per temes de seguretat també és bona pràctica que les connexions siguin per Windows Authentication, sobretot un cop pujades al servidor. El que ens passa a vegades és que quan desenvolupem el nostre usuari no té permisos de Windows Authentication i ens hem de logar a la BBDD per usuari i password d'SQL Server. Quan tenim aquest cas hem de modificar a mà cadascun dels paràmetres.

Avui veurem una manera d'automatitzar la transformació del fitxer de paràmetres de Windows Authentication a login d'SQL Server i a la inversa. Per fer-ho farem servir PowerShell.

Abans de poder utilitzar PowerShell necessitarem habilitar els permisos, sinó ens pot donar un error del tipus:
    ./XXXXXXXXXXXX.ps1 : No se puede cargar el archivo C:\Temp\XXXXXXXXXXXX.ps1 porque la ejecución de scripts está
    deshabilitada en este sistema. Para obtener más información, vea el tema about_Execution_Policies en
    http://go.microsoft.com/fwlink/?LinkID=135170.
    En línea: 1 Carácter: 1
    + ./XXXXXXXXXXXX.ps1
    + ~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : SecurityError: (:) [], PSSecurityException
        + FullyQualifiedErrorId : UnauthorizedAccess



Per evitar aquest error hem d'executar: Set-ExecutionPolicy Unrestricted
Aquesta comanda s'ha d'executar com a administrador en el PowerShell de 32-bits (per a que funcioni des del SSDT). Jo recomano fer-ho tant en el de 32-bits com el de 64-bits.


Un cop tenim els permisos assignats ja podem començar a fer els scripts. Farem primer un script en PowerShell per a fer la modificació del contingut del fitxer project.Params, després invocarem aquest fitxer des d'un bat per poder-li invocar desde SSDT i finalment configurarem l'excució del .bat com a external tool.

SCRIPT POWERSHELL

 param (
    [Parameter(Mandatory=$true)][string]$path,
    [Parameter(Mandatory=$true)][string]$username,
    [Parameter(Mandatory=$true)][string]$password
 )
$strReplace = "User ID="+$username+";Password="+$password+";"
(Get-Content $path\Project.params) | ForEach-Object { $_ -replace "Integrated Security=SSPI;", $strReplace } | Set-Content $path\Project.params



A aquest script li passem 3 paràmetres: path on està el fitxer Project.params, username d'SQLServer i password.
El que fa l'script és agafar tots els fitxers Project.params del path indicat (només n'hi haurà 1) i per cadascun d'ells substitueix Integrated Security=SSPI; per User ID=<username>;Password=<password>. Finalment bolca el nou contingut altre cop a Project.params

Aquest és l'script per canviar de Windows Authentication a SQL Server login, per al cas invers només cal canviar la darrera fila per:
(Get-Content $path\Project.params) | ForEach-Object { $_ -replace $strReplace, "Integrated Security=SSPI;" } | Set-Content $path\Project.params


SCRIPT BAT
Suposem que el nostre script de powershell es diu: c:/temp/fromWinToUser.ps1

powershell c:/temp/fromWinToUser.ps1 %1 %2 %3 %4 %5 %6


Els paràmetres són els següents:
%1 = -path
%2 = path del fitxer Project.params
%3 = -username
%4 = username SQL Server
%5 = -password
%6 = password SQL Server


Aquest bat ens servirà per poder invocar el PowerShell a través del SSDT

EXECUCIÓ DESDE SSDT
Per executar la comanda des de SSDT anirem a Tools --> External Tools... i n'afegirem una de nova amb les següents característiques:
Title: FromWinToUser
Command: <path del bat>\fromWintoUser.bat
Arguments: -path $(ProjectDir) -username <username> -password <password>

Cal marcar el check "Prompt for arguments" i és aconsellable marcar també "Use Output Window".


Per afegir el pas fromUserToWin s'ha de fer exactament el mateix apuntant a l'altre bat.

Un cop ho tenim configurat ja ens apareix al menú de Tools. Quan ho executem ens apareix la pantalla per introduir els paràmetres. Ho modifiquem amb l'userId i password d'SQL Server i executem.

 Si tot ha anat correcte SSDT ens informarà que el fitxer ha estat modificat des d'una app externa i si el volem sobreescriure.

Quan acabem hem d'executar la funció inversa per retornar les connexions a Windows Authentication.

Hem d'anar amb compte si el path on està el fitxer Project.params té espais, és possible que els paràmetres passats al bat no els agafi correctament.

dilluns, 15 de maig del 2017

Generar ISPAC des de línia de comandes

En SSIS quan treballem en projecte deployment per poder pujar un projecte a producció és necessari fer un Deploy del projecte. El deploy el podem fer des del SSDT (botó dret al nom del projecte --> deploy).


Quan fem aquest click internament s'està generant un fitxer .ispac que conté la informació del projecte (dtsx, params, manifest). Aquest fitxer ispac si no toquem res estarà a dins de la carpeta del nostre projecte a la subcarpeta /bin/development. Si l'obrim amb un descopresor tipus 7-zip podrem veure els fitxers a dins. Un cop generat l'ispac se'ns obre un wizard per poder deployar el projecte a un servidor. Hem de tenir en compte que només es pot deployar si l'usuari amb el que ens hem logat a la màquina té permís sobre el servidor. En el post http://www.eljordifabi.tech/2017/04/desplegament-automatic-de-paquets-ssis.html podeu veure alternatives de desplegament.

dilluns, 1 de maig del 2017

SQL Server 2017

Microsoft ja té preparada la CTP 2 del SQL Server 2017. Saltan-se la freqüència de 2 anys desde la versió 2008, aquest cop només passarà un any entre una versió i una altra.
La podeu descarregar aquí: https://www.microsoft.com/en-us/sql-server/sql-server-2017
i aquí teniu el datasheet: download.microsoft.com/download/F/9/A/F9A1B5AA-D57C-4B4D-9C3E-715B800B0419/SQL_Server_2017_Datasheet.pdf
Es rumoreja que el 31 de maig sortirà ja la versió RTM.

Quines són les principals novetats?
- Poder programar en Python dins del SQL Server. A la versió 2016 ja van introduir l'R i ara com a novetat en l'apartat d'anàlisi introduieixen també Python. Els científics de dades estaran contents (https://blogs.technet.microsoft.com/dataplatforminsider/2017/04/19/python-in-sql-server-2017-enhanced-in-database-machine-learning/)
- Millora dels backups, tant els diferencials com els de log. Serà de molta ajuda per als DBAs.
- Select  into ... on filegroup. Es podrà indicar a quin filegroup anirà una taula creada amb la sentència Select into .
- Millores en la tempdb. A SQL Server 2016 ja s'havien aplicat millores a la tempdb, Microsoft decideix seguir pel mateix camí a SQL Server 2017.
- Versió per a Linux. Aquest cop les versions per Windows i Linux sembla sortiran a la vegada, una aposta clara de Microsoft cap a servidors amb SO Linux.

dilluns, 24 d’abril del 2017

Desplegament automàtic de paquets SSIS

Avui veurem un sistema per pujar ETLs en la versió SQL Server 2014 que estiguin en project deployment a través de sentències SQL.
Aquest sistema és molt més ràpid que el deploy de projectes a través de SSDT, sobretot quan hi ha molts projectes ja desplegats.

També permet no haver de donar permisos de despegament de projectes a tots els developers ja que l'usuari que desplegarà quedarà encapsulat en el job d'SQL.

El procediment funcionarà de la següent manera:
Tindrem una carpeta on es deixaran els .ispac a desplegar i els .sql amb el codi de modificació de BBDD i amb les configuracions d'environments. Aquesta carpeta serà accessible des del servidor d'SQL Server.
Tindrem una taula on registrarem els .ispac que s'han de desplegar, juntament amb scripts d'alter de BBDD i configruació d'environments.
Hi haurà un job d'SQL Server que s'executarà com un daemon i anirà mirant la taula per si hi ha projectes pendents de desplegar.
Per cada ispac s'executarà el procediment i registrarà si ha acabat correctament o no.

dilluns, 10 d’abril del 2017

Master Data Services (V)

Avui veurem una característica de MDS que ens pot ser útil quan volen guardar fotos inamobibles: el versionat. Podem generar versions dels models per tal i que es quedin en estat només lectura i modificar altres versions.
Si volem crear una nova versió ho hem de fer des del navegador a l'opció Version Managment
Per poder veure aquest apartat hem de tenir permisos de Version Management (menú User and Group Permissions).
Dins de Version Management triarem el model a versionar.
 En aquest punt ens hem de fixar en 2 columnes:
- Status: ens indica si la versió és modificable.
- Validation: ens indica si la versió està validada. Validada significa que s'ha passat el test de validació per que compleixi totes les regles que hem definit.

Per poder validar una versió ha d'estar bloquejada (Lock). L'status canvia a Locked.
Des del menú Validate Version podem validar-la si no ho està, i un cop validada fer Commit.
Un cop fer el commit ja no podrem modificar la versió. El que sí que podrem fer és copiar-la.
Aquesta còpia serà la que podrem modificar. A la taula ens indica a partir de quina versió s'ha creat
Podem canviar el nom de la versió fent doble-click a la columna Name de la versió a reanomenar.

Això és tot sobre les versions. Sobretot molt útils quan hem de deixar dades a la força de només lectura.