Windows Server 2016 TP5 disponible en téléchargement

Une nouvelle préversion de Windows 2016 est enfin disponible au téléchargement. Je ne saurais que trop vous conseiller de jouer avec !

image

 

Pour les nouveautés :

Server 2016 Technical Preview 5:
https://technet.microsoft.com/en-us/library/mt126143(v=ws.12).aspx

What’s New in Hyper-V on Windows Server 2016 Technical Preview 5?
https://technet.microsoft.com/en-us/library/mt126117(v=ws.12).aspx

What’s New in Failover Clustering in Windows Server Technical Preview 5?
https://technet.microsoft.com/en-us/library/dn765474(v=ws.12).aspx

What’s New in File and Storage Services in Windows Server 2016 Technical Preview 5?
https://technet.microsoft.com/en-us/library/dn765475(v=ws.12).aspx

Cluster Operating System Rolling Upgrade
https://technet.microsoft.com/en-us/library/dn850430(v=ws.12).aspx

Storage Replica in Windows Server 2016 Technical Preview 5
https://technet.microsoft.com/en-us/library/mt126104(v=ws.12).aspx

What’s New in Storage Spaces Direct in Windows Server 2016 Technical Preview 5
https://technet.microsoft.com/en-us/library/mt126109(v=ws.12).aspx

Storage Quality of Service in Windows Server 2016 Technical Preview 5
https://technet.microsoft.com/en-us/library/mt126108(v=ws.12).aspx

Health Service in Windows Server 2016 Technical Preview 5
https://technet.microsoft.com/en-us/library/mt695126(v=ws.12).aspx

Fault Domains in Windows Server 2016 Technical Preview 5
https://technet.microsoft.com/en-us/library/mt703153(v=ws.12).aspx

Simplified SMB Multichannel and Multi-NIC Cluster Networks
https://technet.microsoft.com/en-us/library/mt729075(v=ws.12).aspx

What’s New in Networking in Windows Server 2016 Technical Preview 5
https://technet.microsoft.com/en-us/library/dn823752(v=ws.12).aspx

Shielded VMs and Guarded Fabric Deployment Guide for Windows Server 2016 TP5
https://gallery.technet.microsoft.com/Shielded-VMs-and-Guarded-44176db3

Publié dans Hyper-V, Windows | Tagué , | Laisser un commentaire

SQL Server 2016 RC3 disponible en téléchargement

SQL Server 2016 RC3 est disponible au téléchargement un peu plus de 10 jours après la RC2.

Le Change Log n’est pas très fourni, des corrections de bug, plus de stabilité. Parions que la RTM devrait pointer le bout de son nez début mai, voire même un peu avant …

image

Enjoy

Publié dans SQL Server | Tagué , | 4 commentaires

Controler le Database Mirroring au travers d’un cluster Windows

Bien que prochainement supprimé des fonctionnalités SQL Server, le Database Mirroring reste néanmoins d’actualité dans bien des société. Apparu avec SQL Server 2005 (SP1) la mise en miroir offrait une réponse directement dans SQL Server à des problématiques de haute disponibilité et de disaster recovery, avec comme avantage par rapport à un failover cluster, de supprimer le SPOF des disques partagés.

Le mirroring peut être synchrone ou asynchrone (uniquement en édition entreprise). Il est possible d’opter pour un basculement automatique en utilisant une troisième instance, SQL Server Express par exemple, qui joue le rôle de témoin.

A l’arrivée de SQL Server 2012, le database mirroring a été un peu mis sur la touche car les groupes de disponibilité (AlwaysOn Availability Groups) surclassent le DBM par le groupement de bases, en nombre de réplicas et par l’adoption d’un listener couplé au Cluster Windows permettant ainsi de se passer du paramètre FailoverPartner dans les chaines de connexion, qui permettait, dans le cadre du DBM, à l’application de basculer sur le nouveau serveur primaire en cas de bascule. Mais les groupes de disponibilités sont cantonnés à l’édition entreprise, dont le tarif refroidit quelques peu.

Ces clients se rabattaient donc sur le Database Mirroring pour assurer la HA de leur base de donnée … Mais SQL Server 2016, édition standard, va bouleverser les choses en introduisant les groupes de disponibilité basiques. Globalement, on retrouve les fonctionnalités et limitations du DBM fondues dans la logique des groupes de disponibilités (1 seul réplica, pas plus d’une base dans l’AG, aucun workload sur le réplica secondaire … ).

En attendant de migrer, certains clients continuent de faire fonctionner du DBM. Certes la bascule automatique peut être garantie par une instance témoin, certes il est possible de modifier les chaines de connexion pour inclure le partenaire, mais dans certains cas cela ne suffit pas. Pour certaines applications, il n’est pas possible d’influer sur la chaine de connexion et l’on souhaite pourtant bénéficier de la redirection automatique. Dans d’autres situations, on souhaiterait assurer une bascule automatique sans disposer d’une instance témoin …

Et si l’on confiait cette tâche à un cluster de basculement ?  Le WSFC (Windows Server Faliover Cluster) dispose de tous les éléments pour assurer la détection de panne, le point d’accès client (@IP et nom DNS) …

Okay, lets go !

Dans un premier temps, création d’une base de test et mise en miroir de cette base (endpoints, backup, restore, mise en HA). Le compte de service de SQL est identique sur les 2 nœuds.


-- Run once : create endpoints

:Connect SQLNode11
CREATE ENDPOINT [Mirroring] 
STATE = STARTED
AS TCP (
	LISTENER_PORT = 5022
	, LISTENER_IP = ALL
	   )
FOR DATABASE_MIRRORING (
	ROLE = ALL, 
	AUTHENTICATION = WINDOWS NEGOTIATE,
	ENCRYPTION = REQUIRED ALGORITHM RC4
	               )



:Connect SQLNode12
CREATE ENDPOINT [Mirroring] 
STATE = STARTED
AS TCP (
	LISTENER_PORT = 5022
	, LISTENER_IP = ALL
	   )
FOR DATABASE_MIRRORING (
	ROLE = ALL, 
	AUTHENTICATION = WINDOWS NEGOTIATE,
	ENCRYPTION = REQUIRED ALGORITHM RC4
	)


:Connect SQLNode11
CREATE DATABASE DemoDBM



:Connect SQLNode11
backup database DemoDBM
to disk = '\\AD2012\Share\DemoDBM_Mirror.bak'
WITH compression,init,format,stats=5;




:Connect SQLNode11
backup Log DemoDBM
to disk = '\\AD2012\Share\DemoDBM_Mirror.trn'
WITH compression,init,format,stats=5;




:Connect SQLNode12
restore database DemoDBM
from disk = '\\AD2012\Share\DemoDBM_Mirror.bak'
WITH norecovery,stats=5;


:Connect SQLNode12
restore Log DemoDBM
from disk = '\\AD2012\Share\DemoDBM_Mirror.trn'
WITH norecovery,stats=5;




:Connect SQLNode12
ALTER DATABASE DemoDBM
    SET PARTNER = 'TCP://SQLNode11.conseilit.local:5022';
GO


:Connect SQLNode11
ALTER DATABASE DemoDBM
    SET PARTNER = 'TCP://SQLNode12.conseilit.local:5022';
GO




On oublie rapidement avec quelle facilité il était possible de créer une session de mise en miroir en quelques lignes de code T-SQL !

Il reste maintenant à piloter le failover du Database Mirroring. Deux cas de figure sont à prendre en compte : une bascule manuelle et une bascule automatique due à une perte du serveur principal. Pour ce faire, je vous propose de créer une procédure stockée qui va permettre de passer les ordres de bascule. J’ai opté pour l’appel à des jobs, mais bien sur c’est facultatif. Notez au passage l’utilisation d’un serveur lié (MyBuddy). Le code suivant est à exécuter sur le serveur principal et le serveur secondaire.

Use [Master]
GO

CREATE PROCEDURE dbo.WSFC_DBM_OnLine
AS
BEGIN
	BEGIN TRY
		-- Manual failover 
		EXEC [MyBuddy].msdb.dbo.sp_start_job @job_name = 'WSFC DBM - FAILOVER Manual'
	END TRY
	BEGIN CATCH
		-- Buddy is not online, force failover
		EXEC msdb.dbo.sp_start_job @job_name = 'WSFC DBM - FAILOVER FORCE_SERVICE_ALLOW_DATA_LOSS'
	END CATCH

END



USE [msdb]
GO


DECLARE @jobId BINARY(16)
EXEC msdb.dbo.sp_add_job @job_name=N'WSFC DBM - FAILOVER FORCE_SERVICE_ALLOW_DATA_LOSS', 
		@enabled=1, 
		@notify_level_eventlog=0, 
		@notify_level_email=0, 
		@notify_level_netsend=0, 
		@notify_level_page=0, 
		@delete_level=0, 
		@description=N'Pas de description disponible.', 
		@category_name=N'[Uncategorized (Local)]', 
		@owner_login_name=N'sa', @job_id = @jobId OUTPUT

EXEC msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Failover', 
		@step_id=1, 
		@cmdexec_success_code=0, 
		@on_success_action=1, 
		@on_success_step_id=0, 
		@on_fail_action=2, 
		@on_fail_step_id=0, 
		@retry_attempts=0, 
		@retry_interval=0, 
		@os_run_priority=0, @subsystem=N'TSQL', 
		@command=N'ALTER DATABASE [DemoDBM] SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;', 
		@database_name=N'master', 
		@flags=0

EXEC msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
EXEC msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
GO


DECLARE @jobId BINARY(16)
EXEC msdb.dbo.sp_add_job @job_name=N'WSFC DBM - FAILOVER Manual', 
		@enabled=1, 
		@notify_level_eventlog=0, 
		@notify_level_email=0, 
		@notify_level_netsend=0, 
		@notify_level_page=0, 
		@delete_level=0, 
		@description=N'Pas de description disponible.', 
		@category_name=N'[Uncategorized (Local)]', 
		@owner_login_name=N'sa', @job_id = @jobId OUTPUT

EXEC msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'Failover', 
		@step_id=1, 
		@cmdexec_success_code=0, 
		@on_success_action=1, 
		@on_success_step_id=0, 
		@on_fail_action=2, 
		@on_fail_step_id=0, 
		@retry_attempts=0, 
		@retry_interval=0, 
		@os_run_priority=0, @subsystem=N'TSQL', 
		@command=N'
		
		IF EXISTS (SELECT * FROM sys.databases WHERE name = ''DemoDBM'' AND state=0)
			ALTER DATABASE [DemoDBM] SET PARTNER FAILOVER;
		
		', 
		@database_name=N'master', 
		@flags=0

EXEC msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
EXEC msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
GO



Le cluster de basculement, ou failover cluster va nous permettre de disposer d’un point d’accès unique, sur le serveur principal ou le serveur secondaire en fonction du nœud owner du groupe de ressource. On résout ainsi la problématique des chaines de connexion. Notre application va pouvoir se connecter indifféremment sur n’importe lequel des serveurs. La problématique réside maintenant dans le fait de basculer la session active du miroir sur le nœud choisi comme principal au niveau du cluster.

C’est là qu’intervient le script générique. Un fichier VBS (je n’ai pas trouvé de possibilité au travers de Powershell) , pourvu de fonctions réagissant aux commandes de Online, Offline, IsAlive, LooksAlive, …

Voici un exemple de script, basique, permettant d’opérer les bascules manuelles et automatiques en cas d’échec de connexion au serveur SQL. :



Function Online( )

		
	sPrincipalInstance	= "VNN_DBM_DemoDBM"
	
	
	sTSQL		= "EXEC master.dbo.WSFC_DBM_OnLine"
	Resource.LogInformation "Begin Online() WSFC_DBM_DemoDBM"
	
	
	set objConnection 	= createobject("adodb.connection")							
    DSNtemp	= "driver={SQL Server};" & "server=" & sPrincipalInstance & ";database=master;security=SSPI"

	

	On Error Resume next
	objConnection.Open DSNtemp
	If err.number <> 0 Then
		Resource.LogInformation "Cannot open connection to " & sPrincipalInstance
		Resource.LogInformation err.description
		Online =  false
	Else
		Resource.LogInformation "Connected to " & sPrincipalInstance
		
		
		'Set objRecordset = Server.CreateObject("adodb.recordset")
		
		Resource.LogInformation "Starting " & sTSQL
		objConnection.Execute (sTSQL)
					
		If err.number <> 0 Then
			Resource.LogInformation err.description
					
			Resource.LogInformation "Resource WSFC_DBM_DemoDBM failed to bring online"
			
			Online =  false
		Else
			objRecordset.ActiveConnection = nothing
			set objConnection 	= nothing

			Resource.LogInformation "Resource WSFC_DBM_DemoDBM online"
			Online =  true
		End If
	End If
		

End Function
 
Function LooksAlive( )
	LooksAlive = true
End Function
 
Function IsAlive( )
	
	sPrincipalInstance	= "VNN_DBM_DemoDBM"
	
	sTSQL		= "SELECT @@servername"
	Resource.LogInformation "Begin IsAlive() WSFC_DBM_DemoDBM"
	
	
	set objConnection 	= createobject("adodb.connection")							
	DSNtemp	= "driver={SQL Server};" & "server=" & sPrincipalInstance & ";database=master;security=SSPI"
	
	On Error Resume next
	objConnection.Open DSNtemp
	If err.number <> 0 Then
		Resource.LogInformation "Cannot open connection to " & sPrincipalInstance
		Resource.LogInformation err.description
		IsAlive =  false
	Else
		Resource.LogInformation "Connection successfull to " & sPrincipalInstance
		IsAlive =  true
	End If	
	
	
End Function

 

Pour raccourcir le délai de failover en cas de problème de connexion sur un serveur, on peut changer les intervalles dans la configuration du cluster . Vous pouvez également mettre le code du IsAlive dans les LooksAlive et approfondir les tests du IsAlive.

Le code powershell suivant permet de créer le cluster, de créer un groupe de ressource avec les ressources et les dépendances.

 

# adding Windows features
Install-WindowsFeature -Name Failover-Clustering  -IncludeManagementTools -ComputerName  SQLNode11
Install-WindowsFeature -Name Failover-Clustering  -IncludeManagementTools -ComputerName  SQLNode12


Import-Module ServerManager
Import-Module FailoverClusters


# create the cluster
New-Cluster -Name WSFC_DBM -Node SQLNode11,SQLNode12 -NoStorage -StaticAddress 192.168.1.149 -IgnoreNetwork 10.0.0.0/8



# Adding FSW
Get-Cluster  | Set-ClusterQuorum -FileShareWitness "\\AD2012\FSW"

# Check configuration
Get-ClusterQuorum | select *
Get-Cluster  | select Name,WitnessDynamicWeight,DynamicQuorum
$nodes = Get-ClusterNode
$nodes | Format-Table -property NodeName, State, NodeWeight

# Create an empty role
Add-ClusterGroup -Name WSFC_DBM_DemoDBM


# ensure Resource group is local
Move-ClusterGroup -Name WSFC_DBM_DemoDBM -Node SQLNode11 
Stop-ClusterGroup -Name WSFC_DBM_DemoDBM

# and add a client access point
Get-ClusterResourceType
Add-ClusterResource -Name VIP_DBM_DemoDBM -ResourceType "IP Address" -Group WSFC_DBM_DemoDBM
Get-ClusterResource -Name VIP_DBM_DemoDBM | Set-ClusterParameter -Multiple @{"Network"="Cluster Network 1";"Address"= "192.168.1.148";"SubnetMask"="255.255.255.0"}

Add-ClusterResource -Name VNN_DBM_DemoDBM -ResourceType "Network Name" -Group WSFC_DBM_DemoDBM 
Get-ClusterResource -Name VNN_DBM_DemoDBM | Set-ClusterParameter -Multiple @{“DnsName”=”VNN_DBM_DemoDBM";"Name"= "VNN_DBM_DemoDBM"}
Add-ClusterResourceDependency "VNN_DBM_DemoDBM" "VIP_DBM_DemoDBM" 


# Bring Online to check role failover
Start-ClusterGroup WSFC_DBM_DemoDBM
Move-ClusterGroup -Name WSFC_DBM_DemoDBM -Node SQLNode12
Move-ClusterGroup -Name WSFC_DBM_DemoDBM -Node SQLNode11 
Stop-ClusterGroup WSFC_DBM_DemoDBM

# adding VBS script as a resource
Add-ClusterResource -Name WSFC_DBM_Script -ResourceType "Generic Script" -Group WSFC_DBM_DemoDBM 
Get-ClusterResource -Name WSFC_DBM_Script | Set-ClusterParameter -Multiple @{“ScriptFilepath”=”c:\scripts\WSFC_DBM_Script.vbs"}
Add-ClusterResourceDependency "WSFC_DBM_Script" "VNN_DBM_DemoDBM" 

# don't forget to copy the vbs script to c:\scripts folder
Start-ClusterGroup WSFC_DBM_DemoDBM


A présent, la solution est opérationnelle …

image

Vous pouvez procéder à une bascule manuelle au niveau du gestionnaire de cluster, la base va devenir active sur le nœud owner du groupe de ressource ! Vous pouvez également stopper brutalement l’instance active, dès que le cluster détecte l’indisponibilité, il va basculer sur le réplica en attente. Le nom réseau et l’adresse IP étant identiques, si votre application est munie d’une logique de retry de connexion en cas de coupure réseau, elle se reconnectera directement sur l’instance active.

Une fois que le nœud en panne redevient disponible, il suffit de reprendre le mouvement de données, par un ordre ALTER DATABASE xxxx SET PARTNER RESUME, par exemple en modifiant le IsAlive et en faisant appel à une procédure stockée.

Chalenge réussi ! Il est tout a fait faisable, et de manière relativement simple, de piloter un database mirroring au travers d’un rôle du failover cluster. Facile à customiser pour prendre en compte une spécificité ou une contrainte.

En attendant de migrer sur SQL Server 2016 et les groupes de disponibilité basiques, enjoy …

Publié dans SQL Server | Tagué , | 3 commentaires

SQL Server 2016 “It Just Runs Faster”

A lire différents blogs, il est clair que la sortie de SQL Server 2016 est imminente (déjà une RC2 disponible, il ne reste guerre qu’une RC3 pour passer en RTM en se basant sur les expériences passées). Et à chaque nouvelle version son florilège de nouvelles fonctionnalités. Certaines ont été abordées ici.

Avez vous par exemple noté ce léger changement de design dans l’écran des options d’une base de donnée ?

image

Rhaaaaa lovely !!!! OK, je n’ai pas eu le temps de publier d’article à ce sujet, c’est en cours, comme bien d’autre posts en version brouillon. Mais, yes, cela ouvre des opportunités.

Ne serais-ce que le maxdop ! Sharepoint, sors de ce corps cette instance ! Hé hé, je vais encore me faire des amis, allez les SPSMens, sans rancune, mais devoir dédier une instance à votre produit, non je ne suis pas d’accord. Bon, en même temps, je ferai la même réflexion à Biztalk, à la gamme Dynamics … Oups en fait il faudrait presque en déduire que les produits MS sont de piètres clients pour SQL, en tous cas peu enclin à laisser le choix au SGBD de paralléliser ou non une requête, de faire son job en fait.

Pour ma part,  je jouais avec le Resource Governor afin de fixer le maxdop pour les sessions liées à Sharepoint (ou à ces petits copains développés avec les pi…). J’en profite pour critiquer le manque d’évolution de l’interface graphique qui ne reflète plus du tout les possibilités offertes par le ResGov. C’est le même écran depuis SQL Server 2008! SQL Server 2016, dans son lot de nouveautés, apporte des options dont la portée est de granularité Database. Cool n’est-ce pas. Voilà une nouvelle possibilité de modifier le maxdop, après les niveaux instance, Login / AppName / HostName / Group au travers du ResGov et requête au traves du Query Hint.

Et puis il y a des avancées, moins visibles, mais tout autant appréciables, voire importantes ou cruciales.

A ce titre, l’équipe PSSSQL (Microsoft Customer Service and Support (CSS) SQL Support dont les articles sont rédigés par des ingénieurs du support escalade SQL Server, rien que ça …) à inauguré une série d’articles intitulés “It just runs faster” et aborde les avancées proposées par SQL Server 2016 qui conduisent à de meilleurs performances. Des fonctionnalités ou des modifications peu visibles mais ô combien importantes (d’une point de vue amélioration de la performance):

D’autres articles sont déjà parus, et il est certains que bien d’autres sont en préparation. Je ne sais pas pour vous, mais cela donne des envies d’upgrade … En tout état de cause, rien que la signature de certains articles (Bob Dorr – Principal SQL Server Escalation Engineer) devrait suffire à vous convaincre de les lire.

Certains argumentent qu’il est préférable (plus sage) d’attendre la sortie du SP1 pour passer en prod. Pourquoi pas. N’oubliez cependant pas que le code de SQL Server est identique au code de SQL Azur et que certaines fonctionnalités sont disponibles sur SQL Azure parfois depuis 2 ans (Updated Scheduling Algorithms) ! Compte tenu du nombre d’instances et de bases qui fonctionnent sur cette plateforme, on peut aussi légitimement penser que la RTM de SQL 2016 sera stable …

SQL Server est disponible en préversion au téléchargement. N’hésitez pas à faire vos propres tests. SI vous souhaitez être accompagné dans ce processus de migration, contactez-moi.

Publié dans SQL Server | Tagué , , , | 1 commentaire

SQL Server 2016 RC2 disponible en téléchargement

Vu sur le MSDN …

image

Le rythme est soutenu … On ne devrait pas tarder à avoir une version finale … Sourire

Enjoy

Publié dans SQL Server | Tagué , | 1 commentaire

SQL Server édition développeur gratuit …

Il faut toujours se méfier des news qui sortent un 1er Avril … Mais ce post de l’équipe SQL Server est daté du 31 mars !

image

 

Oui, SQL Server, en édition développeur est désormais gratuit. Le prix était jusqu’à présent dérisoire, le rendre gratuit ne va pas plomber les comptes de la firme de Redmond.

Encore un excellente nouvelle qui devrait inciter davantage de développeurs et de sociétés à adopter ce SGDB qui n’a plus rien à prouver tant au niveau performance, que scalabilité ou sécurité. Sans parler de la “simplicité” d’administration comparé à certaines autres plateformes.

Ces dernières semaines ont été particulièrement riches en annonces : disponibilité des préversions RC0 et RC1 annonçant l’imminence de la RTM, le portage de SQL Server sur Linux, licences “gratuites” pour les clients migrant de Oracle vers SQL Server, SQL Server Express dans des conteneurs Windows,  et toutes les news côté BI.

Bref, plus aucune raison de ne pas tester ou migrer ..

Enjoy !

Publié dans SQL Server | Tagué | Laisser un commentaire

SQL Server in Windows Containers

Hé hé … Après les annonces récentes de disponibilité de SQL Server sur Linux, il ne manquait pas grand chose pour aller jusqu’au déploiement ans un conteneur … Here we are …

L’équipe Database Engine vient de publier un post à ce sujet ….

image

 

Bientôt en test dans mon lab.

Stay Tuned ….

Publié dans Containers, SQL Server, Windows | Tagué , , | 1 commentaire

SQL Server 2016 RC1 disponible en téléchargement

Microsoft semble accélérer les sorties des préversions de SQL Server 2016. Quelques jours seulement après la RC0, une Release Candidate 1 est a présent disponible au téléchargement.

Rendez-vous sur votre centre de téléchargement MSDN ou bien sur le site Technet Evaluation Center.

image

Happy download

Publié dans SQL Server | Tagué , | 1 commentaire

SQL Server 2016 RC0 disponible en téléchargement

Après avoir annoncé une version SQL Server fonctionnant sous Linux, que certain clients testent dores et déjà, un simple SELECT @@version lors de l’évènement retransmit en live depuis New York fait quand même son petit effet. Les démos, dont certaines requêtes attaquaient plusieurs TB de données étaient extrêmement rapides et étaient exécutées sur une preview de SQL sur plateforme … Ubuntu.

De quoi susciter l’envie auprès de personnes enclins à se tourner vers SQL Server mais à qui Windows donne quelques boutons (hein Pingouin !!!).

Second fait marquant (j’avoue ne pas avoir été ultra attentif sur la partie BI, je laisse ça à mes camarades du côté obscur de la force le soin de faire un topo), et non des moindres, l’annonce faite par Microsoft pour appâter les clients Oracle. Déjà que le Gartner avait placé le SGBDR de Microsoft tout en haut à droite de son  Magic Quadrant, les clients Oracle se voient offrir des licences SQL Server en vue de leur migration. Rien de moins.

On imagine le deal assorti de multiple conditions, mais cela a de quoi faire réfléchir. Plus aucune raison à présent de ne pas tester, si ce n’est déjà fait, SQL Server, y compris pour des scénarii Mission Critical, où la performance et la stabilité sont des prérequis.

Les abonnés MSDN peuvent d’ailleurs déjà profiter de la RC 0 disponible au téléchargement.

image

Publié dans SQL Server | Tagué , | 1 commentaire

SQL Server 2016–AlwaysOn Basic Availability Group

Tout d’abord, un petit mea-culpa. Cela fait en effet quelques semaines que je n’ai rien posé sur ce blog. Plusieurs raisons à cela : un planning plus que chargé avec des déplacements (avec parfois plus de 11h00 d’avion), et la reprise d’activité annexes comme … les constructions en Lego !

Et suivre les 471 pages du manuel prends quelques heures. Sourire

2016-02-18 08.32.12

A cela se rajoute quelques idées folles autour d’une plateforme Windows IoT sur Raspberry PI. Avec, si tout se passe bien, quelque chose de fun à venir autour de SQL et cet ordinateur format carte de crédit. Stay Tuned.

Bref, suite à une question hier soir d’un ami, j’ai rapidement monté une plateforme Windows 2016 (CTP4) SQL Server 2016 (CTP3.3) afin de valider ce qui était mentionné dans la documentation technique des groupes de disponibilité en version basique, disponibles dans l’édition standard, en remplacement du Database Mirroring.

Le Database Mirroring étant déprécié et donc amené à disparaitre, il était temps de faire évoluer les groupes de disponibilités apparus avec SQL Server 2012, édition entreprise, qui n’étaient au final qu’une suite logique au DBM.

Puisque son remplaçant, il n’est pas étonnant de disposer des mêmes limitations que le DBM :

  • Seulement 2 réplicas
  • 1 seule base dans le groupe de disponibilité
  • Base de donne secondaire inaccessible (pas d’offload de sauvegarde, ni d’accès en lecture seule)

Rien de particulier pour l’installation du serveur SQL, reportez vous au post relatif à ce sujet.

Pour les plus pressés, une simple ligne de commande suffit :

 $HostName = Hostname
    D:\Setup.exe /ACTION=Install /FEATURES=SSMS,ADV_SSMS,SQLEngine,Replication,IS,Conn,FullText  `
                /INSTANCENAME=MSSQLSERVER `
                /SQLSVCACCOUNT="NT Service\MSSQLServer" `
                /AGTSVCACCOUNT="NT Service\SQLServerAgent" `
                /FTSVCACCOUNT="NT Service\MSSQLFDLauncher" `
                /ISSVCACCOUNT="NT Service\MsDtsServer130" `
                /TCPENABLED="1" `
                /SQLTEMPDBFILECOUNT=4  `
                /UpdateEnabled=FALSE `
                /SECURITYMODE=SQL /SAPWD="Password1" /SQLSYSADMINACCOUNTS="$Hostname\Administrator" `
                /SQLUSERDBDIR="E:\MSSQLServer\Data" `
                /SQLUSERDBLOGDIR="E:\MSSQLServer\Log" `
                /SQLTEMPDBDIR="E:\MSSQLServer\Data" `
                /SQLTEMPDBLOGDIR="E:\MSSQLServer\Log" `
                /SQLTEMPDBFILESIZE=256 `
                /SQLTEMPDBFILEGROWTH=64 `
                /SQLTEMPDBLOGFILESIZE=256 `
                /SQLTEMPDBLOGFILEGROWTH=256 `
                /HELP="False" /INDICATEPROGRESS="False" /QUIET="True" /QUIETSIMPLE="False" `
                /X86="False" /ENU="True" /ERRORREPORTING="False" /SQMREPORTING="False" `
                /SQLSVCINSTANTFILEINIT=TRUE `
                /IACCEPTSQLSERVERLICENSETERMS 

Pour un serveur de production, les tailles de fichiers et emplacements seraient à revoir, tout comme le paramètre SYSADMINACCOUNTS.

Installons donc 2 serveurs, activons les fonctionnalités dotnetfx et cluster. Installons les instances, activation de la case à cocher magique pour activer les Availability Groups.

  image

Créons une base vide, son contenu n’a finalement que très peu d’importance. Une sauvegarde complète de la base est toujours nécessaire, même si vous choisissez de confier au wizard l’initialisation de la base sur le réplica secondaire.

C’est ensuite que les écrans de création d’une BAG (Basic Availability Group) diffèrent légèrement de ce que nous connaissions jusqu’alors, avec la possibilité d’opter pour un groupe de disponibilité basique. Notez également, que les transactions distribuées seront (enfin !) supportées.

image

image

Il est toujours possible de définir des réplicas synchrone ou asynchrone, avec basculement manuel ou automatique. ais, clairement, le wizard ne propose pas la possibilité de rendre un réplica secondaire accessible en lecture seule.

image

Tout comme la sélection des options de sauvegarde est grisée. Seul le backup priori est accessible, mais gageons qu’il s’agit d’un oubli dans la CTP, mais qui dons tous les cas, n’a pas d’effet.

image

Dernier point, il n’est pas possible de créer de listener depuis l’assistant.

image

Ensuite, pas de changements notoires.

image

Les fans de script T-SQL ne seront pas dépaysés :

image

Et donc, questions de Philippe : dans la doc il n’est pas fait mention du support du listener. Par contre, nous venons de voir qu’il n’était pas possible de le créer au début du processus. Qu’en est-il si on essaie de la rajouter manuellement ?

L’écran reste accessible

image

Mais le message surs de la validation est clair :

image

La doc en ligne ne dit rien un message dans SQL nous informe que c’est non supporté.

Hum hum

Etant donné que la mécanique sous jacente des groupes de disponibilité repose sur le WSFC, voyons voir s’il est possible de créer un client access point (@IP et nom DNS) directement dans le groupe de ressource dans la console de gestion du cluster.

imageimageimageimage

Le wizard se termine bien. Par défaut, l’adresse IP set en DHCP, je corrige pour passer en statique (non obligatoire mais je n’ai pas de serveur DHC sur ce réseau).

image

Ensuite, Bring Online des ressources et tout est fonctionnel

image

La question est : est-ce que cela fonctionne en tant que point d’accès pour SQL Server ?

La réponse est : OUI  Sourire

image

Le failover du groupe de disponibilité se passe également bien

image

image

image

Le client SQL point bien vers le nouveau serveur primaire.

Donc, oui, cela fonctionne. Le “Listener” peut être créé et est parfaitement fonctionnel. Listener est à mettre en guillemets car au final on ne peut le considérer que comme un alias DNS, mais qui va suivra automatiquement la base sur le réplica actif. Bien entendu, il perd la fonctionnalité de routing list qui de toute manière est inutile puisque il n’y a pas de lecture possible sur la base secondaire.

Enjoy BAG …

Publié dans SQL Server | Tagué , , | 3 commentaires