SQL Server comment faire pour gérer les Backup Correctement

C'est vraiment épineux comme je l'ai montré dans le post précédent si vous cliquez bille en tête sur les options proposées de base, c'est la catastrophe et Restore Database Failed ! Et pourtant ce n'est pas ce que vous souhaitez car lorsque l'on restaure une base de donnée à une version précédente et bien c'est déjà que l'on  a un gros problème et le stress monte ce n'est pas la peine d'en rajouter.

SQL Server Backup Database

Donc, il faut donner le nom que vous souhaitez et pas vous laisser conduire par MSSMS avec ses options par défaut qui vous mène vers le Restore Failed !

Donc vous cliquez sur Add, puis Destination on disk -> File name :

SQL Server Backup Database où je veux

Ainsi une troisième boite de dialogue s'ouvre et vous pouvez donner le nom que vous souhaitez au backup ...

SQL Server Backup Database avec le nom que je veux

Attention de préciser l'extension du fichier .bak sinon SQL Server ne vous le proposera pas lors de la restauration de la base de données. Et oui SQL Server est idiot mais ça on le savait déjà.

SQL Server Database Restore

Pour le processus de restauration, idem, on ne se laisse pas guider par SQL Server et ses options stupides qui vous mènent vers l'échec le Failed !


SQL Server Restore Database comme je veux

Et cela commence tout en haut on ne choisit pas l'option par défaut mais l'option "Device" dans la radio button en suite en 2 on va pouvoir choisir le backup à restorer en 3 on voit les différentes backup on peut choisir et cliquer sur Ok.

Voilà on a appris à ne pas se laisser mener par SQL Server et gérer les backups correctement ce qui sinon on va inévitablement vers un Failed !

SQL Server - Gestion des Backup

Cela m'a toujours paru être un sujet épineux car au moment de restaurer votre base de données vous allez avoir des sueurs froides dans mon souvenir ça toujours été comme ça ! SQL Server fait toujours des siennes alors aujourd'hui, on en est où ?

Microsoft - Créer une sauvegarde complète de base de données

Déjà ça commence par des restrictions ... Vous ne pourrez pas faire ceci, vous ne pouvez pas faire cela Grrrr !

SQL Server créer une sauvegarde

Jusque là tout va bien ... Je choisie quelques petites options histoire de corser les choses ... Un deuxième nom de fichier plus parlant pour moi ...

SQL Server créer une sauvegarde

Bon, ça parait bien compliqué tout ca ... pour une simple sauvegarde.

SQL Server créer une sauvegarde

Du coup, je fais tout de suite l'opération inverse ... La base de vit pas rien ne peut se passer.

SQL Server Restore Database

Je sélectionne tout ça, tout ça ... Restore -> Database

SQL Server Restaurer une Base sauvegardée

Je n'ai rien fait d'autre que de cliquer sur le bouton Restore ... et BOUM !!!

SQL Server Restaurer une Base sauvegardée c'est impossible


Restore Database Failed !!!

C'est nul, c'est vraiment de la daube SQL Server. Il n'y a vraiment que les masos pour continuer à travailler avec une telle Daube.

C'est comme le "Detach" et "Attach" de la base de données. le Detach avec les options "Drop Connections" et "Update Statistics" que vous êtes obligé de systématiquement cocher sinon c'est la cata. C'est les seuls a avoir une concept aussi débile. C'est super chiant vous tentez une opération comme et POUF !!! Cet abrutit de SQL Server vous dit que vous ave oublié de Détacher la base de donnée ! Mais peut-on inventer un concept plus idiot, vous avez envie de lui dire mais si l'opération ne peut avoir lieu qu'avec une Base détachée et bien détache la cette foutue Base.

CRRRR !!!!!

Pourquoi est ce que cette espèce de grosse Daube d'SQL Server ne le fait pas lui même. On dirait une femme de ménage qui laisse le saut et la serpillière au milieu du salon pour montrer qu'elle a fait le ménage... c'est à chier.

Le souci,  c'est que moi, j'en ai marre de cette nullité crasse. Le prochain projet, je le jure, je change de moteur de BD.

Pas fun mais alors pas fun du tout !

SQL Server - SQL Server Agent (MSSQL SERVER) won't start !

SQL Server Agent ne démarre pas ! Vous la connaissez celle là ? C'est pour ça que j'écris ce blog, pour répertorier les bêtises des ingénieurs de Redmond. SQL Server est un ramassis d'absurdités et si vous cliquez ici c'est que vous le savez et que vous souhaitez trouver une réponse rapide à votre problème avec SQL Server !

Alors cette fois, il s'agit d'SQL Server Agent (MSSQL SERVER) qui ne souhaite pas démarrer. Vous êtes en train de vouloir transférer des données d'uns instance d'SQL Server à une autre et vous ne pouvez pas car vous ne pouvez pas démarrer SQL Server Agent !

A ce stade, vous vous dites, c'est simple, il suffit d'aller dans les services et de faire bouton droit sur démarrer. La plus part du temps avec d'autres services c'est exactement ce qu'il faut faire mais pas avec SQL Server Agent, lui il ne voudra pas démarrer, c'est la misère.

 Alors vous exécutez services.msc et :

SQL Server Agent won't Start !
SQL Server Agent won't Start !
Et oui, comme moi vous êtes stupéfait tout est grisé, vous ne pouvez pas starter SQL Server Agent. Alors que faire ?

SQL Server Agent ne veut pas démarrer - Solution

Le Solution, c'est d'aller dans "Properties" et de choisir "Automatic" plutôt que "Disabled". Comme sur la figure ci-dessous :

SQL Server Agent won't Start !
SQL Server Agent won't Start !
Ainsi SQL Server Agent pourra démarrer lorsque ce sera nécessaire. C'est pas débile, ça, hein ? Franchement !

SQL Server - The server was not found or was not accessible.

Encore un petit message sympathique de notre ami le serveur SQL. J'ai de plus en plus de mal à comprendre les gens qui travaillent encore avec ce serveur de base de données, il faut vraiment être maso. Cette fois je suis sur une machine du Cloud Azure alors j'ai eu même du mal à faire accéder l'application web qui était installé sur le serveur même. Maintenant j'essaye depuis internet.

Voici le message d'erreur :

SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, uint waitForMultipleObjectsTimeout, bool allowCreate, bool onlyOneCheckConnection, DbConnectionOptions userOptions, out DbConnectionInternal connection)

Franchement n'en jetez plus ! C'est quoi ce message de 10 km alors que le problème c'est juste SQL Server qui est une grosse daub(bip) !

Ce qui est sympa avec Internet c'est que le style change suivant les navigateurs :

SQL Server - SQL Server is configured to allow remote connections.
SQL Server - SQL Server is configured to allow remote connections.

Le style change mais c'est toujours le même message de mer... ! Il n'a rien à voir avec le problème c'est sans soute pour nous égarer.

Tellement d'années plus de dix ans que la configuration du moteur de base de données SQL Server est toujours à ce niveau de difficulté, remarquez avec lui vous balayez l'ensemble des problèmes que vous pouvez avoir lors d'une connexion réseau.

Résoudre les problèmes avec SQL Server

Du coup la littérature s'est drôlement étoffée.

Vous avez également de la lecture Ici :

Stackoverflow - How do I fix the error 'Named Pipes Provider, error 40 - Could not open a connection to' SQL Server'?

Là vous avez un pauvre hère qui a tout fait bien mais qui ne comprend pas  pourquoi il ne peut toujours pas se connecter à son Server SQL !

Alors ils partent en pleins délires pour récapituler et finalement ne pas trouver en définitive de solution c'est grave !

Mais bon ça reste un truc de maso !

Si non au autre type de solutions Ici :

MS-BI Tutorials - How to Fix named Pipes Provider Error 40 cannot open connection to Sql server instance





The user instance login flag is not supported on this version of SQL Server. The connection will be closed.

Je comprends que l'on ait envie de passer à une version de Postgres ou SQLite car avec SQL Server c'est toujours la même chose et c'est un peu fatiguant ces problèmes de compatibilité d'une version à l'autre. J'ai une base qui fonctionnait parfaitement avec SQLExpress en développement, il y a quelques années, j'essaye de rependre mon projet et pouf :

Error Message

The user instance login flag is not supported on this version of SQL Server. The connection will be closed.

The user instance login flag is not supported on this version of SQL Server. The connection will be closed.

Franchement, j'ai autre chose à faire que ça !

Alors là, c'est à l'exécution de l'application pour aller un peu plus loin, je remonte le projet et je me retrouve avec une application ASP.NET Aspx avec les Bases de données dans le répertoire App_Data quand j'y pense c'était bien pratique pour le déploiement.

Donner le droit d'accès

Du coup je dis que c'est peut être un problème de droits d'accès au répertoire App_Data sur ma nouvelle plateforme de développement.

Vous vous souvenez de la galère ... que c'est avec SQL Server d'octroyer les droits d'accès à un répertoire pour y poser vos Bases de Données ailleurs que dans le répertoire DATA :

C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA

Alors pour mémoire, on y va :

SQL Server - Octroyez les droits d'accès à un répertoire

Bouton droit sur le répertoire puis Propriétés->Security Add ...


SQL Server - Octroyez les droits d'accès à un répertoire
SQL Server - Octroyez les droits d'accès à un répertoire

Mais quelle galère ... J'essaye d'ajouter des droits à "User" pour que mon SQL Server qui prend l'Identity User puisse accéder aux bases de données qui sont dans le répertoire App_Data.

SQL Server - Octroyez les droits d'accès à un répertoire
SQL Server - Octroyez les droits d'accès à un répertoire

Non mais c'est vraiment insupportable cette façon de gérer les droits d'accès, j'y perds ma vie !

Bon allez ça suffit, je vais déplacer mes Base de donnée dans le seul répertoire qui a les droits de SQL Serveur :

C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA

Franchement, je peux vous dire que c'est fatiguant, s'il devait avoir quelque chose qui change dans MS SQL c'est bien ça, toutes ces versions du moteur qui toutes sont aussi pénibles les une que les autres à gérer. Il faut que je me mette à scripter.

Attacher mes Bases de données à SQL Server

Du coup, comme j'ai déplacé mes BDs je dois modifier les chaines de connexion en conséquence et je dois attacher mes bases de données à SQL Server.

Allez on y vas haut les cœurs :

SQL Server DataBase - Attach ...
SQL Server DataBase - Attach ...

Et ça continue Avec quelques bons scripts sous SQLite j'aurais déjà terminé.


SQL Server DataBase - Attach ...

Et vous vous souvenez qu'à la fin, il vous faut renommer la Base de Données ...


SQL Server DataBase - Attach ...

Tout ceci pour finir par essayer d'utiliser la base de mon ancienne application que j'aimerais tout simplement retravailler avec Visual Studio 2019 Community.

Me voici donc avec Visual Studio Community et son Server Explorer Tools :

The user instance login flag is not supported on this version of SQL Server. The connection will be closed.

Oh quelle tristesse tout cela pour ça ... Pouf !

Je pars chercher la solution et je reviens vous la donner.

Solution

The user instance login flag is not supported on this version of SQL Server.

La solution est supprimer la partie : User Instance=True de la chaine de connexion. OH sans blague vous auriez pensé à ça ...

CQFD !