{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2019/05/03/script-simple-pour-sauvegarder-toutes-les-bases-de-donnees-sql-server-serveur-dimpression/","llm_html_url":"https://tutos-gameserver.fr/2019/05/03/script-simple-pour-sauvegarder-toutes-les-bases-de-donnees-sql-server-serveur-dimpression/llm","llm_json_url":"https://tutos-gameserver.fr/2019/05/03/script-simple-pour-sauvegarder-toutes-les-bases-de-donnees-sql-server-serveur-dimpression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Script simple pour sauvegarder toutes les bases de données SQL Server\n\n &#8211; Serveur d&rsquo;impression","site":{"name":"Tutos GameServer","url":"https://tutos-gameserver.fr/"},"author":{"id":1,"name":"Titanfall","url":"https://tutos-gameserver.fr/author/titanfall/"},"published_at":"2019-05-03T20:03:11+00:00","modified_at":"2019-05-03T20:03:11+00:00","word_count":1994,"reading_time_seconds":599,"summary":"Salut greg, Merci encore et ma machine est un sql2008r2 ent. Je regarde ces liens et je ne suis pas sûr que ce soit ce que je voudrais faire pour cette configuration. J&#39;ai également trouvé deux scripts supplémentaires qui semblaient avoir été écrits pour des versions antérieures de SQL Server et je me demandais si [&hellip;]","summary_points":["Salut greg,\nMerci encore et ma machine est un sql2008r2 ent.","Je regarde ces liens et je ne suis pas sûr que ce soit ce que je voudrais faire pour cette configuration.","J&#39;ai également trouvé deux scripts supplémentaires qui semblaient avoir été écrits pour des versions antérieures de SQL Server et je me demandais si vous pouviez y apporter des modifications.","Je ne sais pas non plus s&#39;il faut poser cette question ici ou sur votre page de conseil de restauration."],"topics":["Serveur d'impression"],"entities":[],"entities_metadata":[{"id":10,"name":"Serveur d'impression","slug":"serveur-dimpression","taxonomy":"category","count":3907,"url":"https://tutos-gameserver.fr/category/serveur-dimpression/"}],"tags":["Serveur d'impression"],"content_hash":"931fafcea82642dec3185fd04ce0908d","plain_text":"Salut greg,\nMerci encore et ma machine est un sql2008r2 ent.\nJe regarde ces liens et je ne suis pas sûr que ce soit ce que je voudrais faire pour cette configuration. J&#39;ai également trouvé deux scripts supplémentaires qui semblaient avoir été écrits pour des versions antérieures de SQL Server et je me demandais si vous pouviez y apporter des modifications. Je ne sais pas non plus s&#39;il faut poser cette question ici ou sur votre page de conseil de restauration.\nRestaurer toutes les bases de données d&#39;un répertoire\n\nSET QUOTED_IDENTIFIER OFF \nALLER\nSET ANSI_NULLS ON \nALLER\n\nsi existe (sélectionnez * à partir de dbo.sysobjects où id = object_id (N &#39;[dbo].[sp_CSS_RestoreDir]&#39;) et OBJECTPROPERTY (id, N&#39;IsProcedure&#39;) = 1)\nprocédure de largage [dbo].[sp_CSS_RestoreDir]\nALLER\n\n/ ************************************************ *************************************** /\n&#8211; Nom de la procédure: sp_CSS_RestoreDir\n&#8211; Objectif: restaurer une ou plusieurs sauvegardes de base de données à partir d&#39;un seul répertoire. Ce script lit tout \n&#8211; sauvegardes de bases de données trouvées dans le paramètre @restoreFromDir.\n&#8211;Toute sauvegarde de base de données correspondant au formulaire% _db_% sera restaurée.\n&#8211; les emplacements de fichier spécifiés dans le (s) paramètre (s) RestoreTo &#8230;. La base de données\n&#8211; sera restauré sous un nom de base de données basé sur la sauvegarde de la base de données\n&#8211;nom de fichier. Par exemple, Insurance_db_200305212302.BAK sera restauré dans\n&#8211;une base de données nommée Assurance. Les caractères précédant le texte &#39;_db_&#39; déterminent\n&#8211;le nom.\n&#8211;\n&#8211; Paramètres d&#39;entrée: @restoreFromDir &#8211; Le répertoire où se trouvent les sauvegardes de la base de données\n[email protected]    &#8211; Le répertoire dans lequel les fichiers de données (à savoir, MDF) seront restaurés\n[email protected]    &#8211; Le répertoire dans lequel les fichiers journaux (c&#39;est-à-dire LDF) seront restaurés. Si\n&#8211;Ce paramètre n&#39;est pas fourni, puis les fichiers journaux sont restaurés dans @restoreToDataDir.\n&#8211; @MatchFileList &#8211; défini sur &#39;Y&#39; pour restaurer la même structure de répertoires que celle contenue dans la sauvegarde,\n&#8211; permet également aux fichiers de données secondaires &#39;ndf&#39; d&#39;être dans un répertoire différent de celui des fichiers mdf\n&#8211; @DBName &#8211; Ne restaurez que cette base de données &#8211; sélectionne le dernier fichier bak\n&#8211;  \n&#8211; Paramètres de sortie: Aucun\n&#8211;\n&#8211; Valeurs de retour:     \n&#8211;\n&#8211; Rédigé par: Chris Gallelli &#8211; 8/22/03\n&#8212; Modifié par:       \n&#8211; Modifications: Bruce Canaday &#8211; 10/20/2003\n&#8211; Ajout des paramètres facultatifs @MatchFileList et @DBName\n&#8211; Bruce Canaday &#8211; 24/10/2003\n&#8211; Récupère le nom de la base de données en tant que caractères à gauche du plus à droite &#39;_db_&#39; dans le nom de fichier\n&#8211; Ceci est destiné à gérer des bases de données telles que ALIS_DB\n&#8211; Bruce Canaday &#8211; 28/10/2003\n&#8211; Lors de l’utilisation de @MatchFileList = &#39;Y&#39;, essayez de créer un répertoire qui n’existe pas\n&#8211; Bruce Canaday &#8211; 11/04/2003\n&#8211; Autoriser les espaces dans le nom du répertoire @restoreFromDir\n&#8211;\n&#8211; Exemple d&#39;exécution: exec sp_CSS_RestoreDir &#39;C:  sqldb  sql_backup&#39;, &#39;C:  sqldb  sql_data&#39;, &#39;C:  sqldb  sql_log&#39;\n&#8211;\n&#8211; Exécution alternative: exec sp_CSS_RestoreDir &#39;C:  sqldb  sql_backup&#39;, @MatchFileList = &#39;Y&#39;\n&#8211;\n&#8212; Revu par:       \n&#8211;\n/ ************************************************ *************************************** /\n\nCREATE proc sp_CSS_RestoreDir \n              @restoreFromDir varchar (255),\n@restoreToDataDir varchar (255) = null,\n@restoreToLogDir varchar (255) = null,\n              @MatchFileList char (1) = &#39;N&#39;,\n              @OneDBName varchar (255) = null\ncomme\n\n&#8211;Si un répertoire pour le fichier journal n&#39;est pas fourni, utilisez le répertoire de données\nSi @restoreToLogDir est null\nset @restoreToLogDir = @restoreToDataDir\n\nmettre nocount sur\n\ndeclare @filename varchar (40),\n@cmd varchar (500), \n@ cmd2 varchar (500), \n                @DataName varchar (255),\n@LogName varchar (255),\n                @LogicalName varchar (255), \n@PhysicalName varchar (255), \n@Type varchar (20), \n@FileGroupName varchar (255), \n@Size varchar (20), \n@MaxSize varchar (20),\n@restoreToDir varchar (255),\n                @searchName varchar (255),\n@DBName varchar (255),\n                @PhysicalFileName varchar (255) \n\ncreate table #dirList (nomfichier varchar (100))\ncreate table #filelist (nom_videntiel (255), nom_variable (255), nom_variable (255), nom_variable (255), nom de groupe_variable (255), taille varchar (20), taille_variable (20))\n\n&#8211;Obtenir la liste des sauvegardes de base de données qui se trouvent dans le répertoire restoreFromDir\nsi @OneDBName est null \n      sélectionnez @cmd = &#39;dir / b / on &quot;&#39; [email protected]+ &#39;&quot;&#39;\nautre\n      sélectionnez @cmd = &#39;dir / b / o-d / o-g &quot;&#39; [email protected]+ &#39;&quot;&#39;\n\ninsère #dirList exec master..xp_cmdshell @cmd  \n\nselect * from #dirList où filename comme &#39;% _db_%&#39; &#8211; ordre par nom de fichier\n\nsi @OneDBName est null \n      déclarer le curseur BakFile_csr pour \n  sélectionnez * à partir de #dirList où nom_fichier ressemble à &#39;% _db_% bak&#39;, ordre par nom_fichier\nautre\n      begin &#8211; une seule base de données, ne pas classer par nom de fichier, prendre par défaut la dernière date / o-d parm dans la commande dir ci-dessus\n          select @searchName = @OneDBName + &#39;_db_% bak&#39;\n          déclarer le curseur BakFile_csr pour \n  sélectionnez top 1 * from #dirList où filename est comme @searchName\n      fin\n\nouvrir BakFile_csr\nrécupère BakFile_csr dans @filename\n\ntandis que @@ fetch_status = 0\n      commencer\n              select @cmd = &quot;RESTORE FILELISTONLY FROM disk = &#39;&quot; + @restoreFromDir + &quot;&quot; + @filename + &quot;&#39;&quot; \n\n              insert #filelist exec (@cmd)\n\n              si @OneDBName est null \n                    select @dbName = left (@ nomfichier, datalength (@nomfichier) &#8211; patindex (&#39;% _bd _%&#39;, inverser (@nomfichier)) &#8211; 3)\n              autre\n    select @dbName = @OneDBName\n\n              select @cmd = &quot;RESTORE DATABASE&quot; + @dbName + \n&quot;FROM DISK = &#39;&quot; + @restoreFromDir + &quot;&quot; + @filename + &quot;&#39; WITH&quot; \n\n              IMPRESSION &#39;&#39; \n              IMPRESSION &#39;BASE DE DONNEES DE RESTAURATION&#39; + @dbName\n\n              déclarer le curseur DataFileCursor pour  \nSélectionnez LogicalName, PhysicalName, Type, FileGroupName, Size, MaxSize.\nde #filelist\n\nouvrir DataFileCursor\n              récupérer DataFileCursor dans @LogicalName, @PhysicalName, @Type, @FileGroupName, @Size, @MaxSize\n\n              tandis que @@ fetch_status = 0\n                    commencer\n                            if @MatchFileList! = &#39;Y&#39;\n                                  commencer &#8211; option RESTORE with MOVE \n            select @PhysicalFileName = reverse (sous-chaîne (reverse (rtrim (@PhysicalName))), 1, patindex (&#39;% %&#39;, reverse (rtrim (@PhysicalName)) &#8211; 1)) \n\n              si @Type = &#39;L&#39;\n              sélectionnez @restoreToDir = @restoreToLogDir\n              autre\n              select @restoreToDir = @restoreToDataDir\n\n              sélectionnez @cmd = @cmd + \n                      &quot;MOVE&quot; &quot;+ @LogicalName +&quot; &#39;TO &quot;&quot; + @restoreToDir + &quot;&quot; + @PhysicalFileName + &quot;&#39;,&quot; \n                                  fin\n                            autre\n                                  begin &#8211; Correspond à la liste de fichiers, tente de créer tout répertoire manquant\n                                          sélectionnez @restoreToDir = left (@ PhysicalName, datalength (@PhysicalName) &#8211; patindex (&#39;% %&#39;, reverse (@PhysicalName)))\n                                          sélectionnez @ cmd2 = &quot;s&#39;il n&#39;existe pas&quot; [email protected]+ &quot;md&quot; [email protected]\n                                          exec master..xp_cmdshell @ cmd2\n                                  fin\n\n                            récupérer DataFileCursor dans @LogicalName, @PhysicalName, @Type, @FileGroupName, @Size, @MaxSize\n\n                    end &#8211; boucle DataFileCursor\n\nfermer DataFileCursor\n      désallouer DataFileCursor\n\n              sélectionnez @cmd = @cmd + &#39;REPLACE&#39;\n              &#8211;select @cmd &#39;commande&#39;\n              EXEC (@CMD)\n\n              tronquer la table #filelist\n\n              récupère BakFile_csr dans @filename\n\n      fin &#8211; boucle BakFile_csr\n\nfermer BakFile_csr\nlibère BakFile_csr\n\ndéposer table #dirList\n\nrevenir\nALLER\n\nSET QUOTED_IDENTIFIER OFF \nALLER\nSET ANSI_NULLS ON \nALLER\n\nRestaure automatiquement tous les fichiers .BAK de la base de données\n\n/ ************************************************ ************\nScénario écrit par: Lester A. Policarpio\nAdresse électronique : [email protected]\nDate de création: 3 septembre 2007\n&#8211; = UPDATES = &#8211;\n\n17 janvier 2008\n&#8211; Valeur sortie résolue de la variable @restoredb\n&#8211; Résolution du problème &quot;paramètre de longueur non valide&quot;\n\n6 mai 2008\n&#8211; Suppression des variables inutilisées\n&#8211; Ajoutez la commande headeronly pour accepter le format de sauvegarde autre que SQL \n  (dbname_db_YYYYYMMDDHHMM.BAK)\n&#8211; Ajouter plus de commentaires\n\n12 mai 2008\n&#8211; Accepter les fichiers de sauvegarde avec plusieurs NDF\n\n23 mai 2008\n&#8211; Résolution du problème lorsque RESTORE HEADERONLY génère plusieurs valeurs.\n\n&#8211; = LIMITATIONS = &#8211;\n&#8211; Ce script est testé pour les fichiers de sauvegarde &quot;.BAK&quot; uniquement \n&#8211; Le script doit être modifié si l&#39;extension de sauvegarde n&#39;est pas &quot;.bak&quot;\n************************************************* *********** /\nSET NOCOUNT ON\n&#8211;Drop Tables s&#39;il existe dans la base de données\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;migration_lester&#39;)\nDROP TABLE migration_lester\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;header_lester&#39;)\nDROP TABLE header_lester\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;cmdshell_lester&#39;)\nDROP TABLE cmdshell_lester\n\n&#8211;Créer des tables \n&#8211; (table cmdshell_lester pour la commande cmdshell)\n&#8211; (table migration_lester pour la commande restore filelistonly)\n&#8211; (table header_lester pour la commande restore headeronly)\nCREATE TABLE cmdshell_lester (fentry varchar (1000))\n\nCREATE TABLE migration_lester (LogicalName varchar (1024),\nPhysicalName varchar (4000), tapez char (1), FileGroupName varchar (50),\ntaille réelle, taille réelle)\n\nCREATE TABLE header_lester (BackupName varchar (50),\nBackupDescription varchar (100), BackupType int,\nExpirationDate nvarchar (50), Compressed int, Position int,\nDeviceType int, nom d&#39;utilisateur varchar (30), nom de serveur varchar (30),\nDatabaseName varchar (50), DatabaseVersion int,\nDatabaseCreationDate datetime, BackupSize bigint, binaire FirstLsn,\nBinaire LastLsn, binaire CheckpointLsn, binaire DifferentialBasLsn,\nBackupStartDate datetime, BackupFinishDate datetime, SortOrder int,\nCodePage int, UnicodeLocaleid int, UnicodeComparisonStyle int,\nCompatibilityLevel int, SoftwareVendorId int, SoftwareVersionMajor int,\nSoftwareVersionMinor int, SoftwareVersionBuild int,\nNom de la machine varchar (50), Flags int, BindingId nvarchar (50),\nRecoveryForkId nvarchar (50), collation nvarchar (50))\n\n&#8211;Déclare les variables\nDECLARE @path varchar (1024), @ restore varchar (1024)\nDECLARE @restoredb varchar (2000), @ extension varchar (1024), @ newpath_ldf varchar (1024)\nDECLARE @pathension varchar (1024), @ newpath_mdf varchar (1024), @ en-tête varchar (500)\n\n&#8211;Définir les valeurs sur les variables\nSET @newpath_mdf = &#39;C: &#39; &#8211; nouveau chemin dans lequel vous placerez le mdf\nSET @newpath_ldf = &#39;D: &#39; &#8211;nouveau chemin dans lequel vous placerez le ldf\nSET @path = &#39;D: &#39; &#8211;Path du fichier de sauvegarde\nSET @extension = &#39;BAK&#39;\nSET @pathension = &#39;dir / OD&#39;[email protected]+ &#39;*.&#39;[email protected]\n\n&#8211;Insérer la valeur du shell de commande dans la table\nINSERT INTO cmdshell_lester exec master..xp_cmdshell @pathension\n&#8211;Supprimer les données des fichiers de sauvegarde, supprimer les valeurs nulles\nSUPPRIMER DE cmdshell_lester WHERE FEntry NE AIME PAS &#39;% .BAK%&#39; \nDELETE DE cmdshell_lester WHERE FEntry est NULL\n&#8211;Créez un curseur pour analyser tous les fichiers de sauvegarde nécessaires à la génération du script de restauration\nDECLARE @migrate varchar (1024)\nDÉCLARER la migration du CURSEUR POUR\nsélectionnez la sous-chaîne (FEntry, 40,50) sous le nom &#39;FEntry&#39; dans cmdshell_lester \nOPEN migrer\nFETCH NEXT FROM migrate INTO @migrate\nPENDANT QUE (@@ FETCH_STATUS = 0) COMMENCE\n&#8211; Ajout de la fonctionnalité pour obtenir le nom de base du fichier de sauvegarde.\nSET @header = &#39;RESTORE HEADERONLY FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39;\nINSERT INTO exec_lester exec (@header)\n&#8211;Obtenir les noms des mdf et ldf\nset @restore = &#39;RESTORE FILELISTONLY FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39;\nINSERT INTO migration_lester EXEC (@restore)\n&#8211;Mise à jour de la table pour ajouter le nouveau chemin + noms mdf / ldf\nUPDATE migration_lester SET nom physique = inversion (nom physique)\nUPDATE migration_lester SET nom physique = \nsous-chaîne (nom physique, 1, charindex (&#39;&#39;, nom physique) -1)\n\nUPDATE migration_lester SET nom physique = @ newpath_mdf + reverse (nom physique) où type = &#39;D&#39;\nUPDATE migration_lester SET nom physique = @ newpath_ldf + reverse (nom physique) où type = &#39;L&#39;\n[email protected]@@@@@@@@@@@@@@@@@@@\n&#8211; Attribuez une valeur à la variable @restoredb pour contenir le script de base de données de restauration\nIF (select count (*) from migration_lester) = 2\nCOMMENCER\nSET @restoredb = &#39;RESTORE DATABASE&#39; + (sélectionnez top 1 DatabaseName dans header_lester)\n+ &#39;FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39; + &#39;WITH MOVE&#39; + &#39;&#39; &#39;&#39;\n+ (sélectionnez le nom logique de migration_lester où type = &#39;D&#39;) + &#39;&#39; &#39;&#39;\n+ &#39;TO&#39; + &#39;&#39; &#39;+ (sélectionnez le nom physique dans migration_lester WHERE nom physique tel que&#39;% mdf% &#39;)\n+ &#39;&#39; &#39;&#39; + &#39;, MOVE&#39; + &#39;&#39; &#39;&#39; + (sélectionnez le nom logique de migration_lester où type = &#39;L&#39;)\n+ &#39;&#39; &#39;&#39; + &#39;TO&#39; + &#39;&#39; &#39;&#39; + (sélectionnez le nom physique dans migration_lester \nWHERE nom physique comme &#39;% ldf%&#39;) + &#39;&#39; &#39;&#39;\nprint (@restoredb) \nFIN\n\nIF (sélectionnez le nombre (*) dans migration_lester)&gt; 2\nCOMMENCER\nSET @restoredb = \n&#39;RESTORE DATABASE&#39; + (sélectionnez top 1 DatabaseName dans header_lester) +\n&#39;FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39; + &#39;WITH MOVE&#39;\nDECLARE @multiple varchar (1000), @ physical varchar (1000)\nDÉCLARER PLUSIEURS CURSEURS POUR\nSélectionnez un nom logique, un nom physique dans le fichier migration_lester.\nOUVERT multiple\nFETCH NEXT FROM multiple INTO @ multiple, @ physical\nPENDANT (@@ FETCH_STATUS = 0)\nCOMMENCER\nENSEMBLE @[email protected]+ &#39;&#39; &#39;&#39;[email protected]+ &#39;&#39; &#39;&#39; + &#39;TO&#39; + &#39;&#39; &#39;&#39;[email protected]+ &#39;&#39; &#39;&#39; + &#39;,&#39; + &#39;MOVE&#39; + &#39;&#39;\nFETCH NEXT FROM multiple INTO @ multiple, @ physical\nFIN\nFermer plusieurs\nDEALLOCATE multiple\nSET @restoredb = sous-chaîne (@ restoreb, 1, len (@restoredb) -5)\nprint (@restoredb)\nFIN\n\n[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n&#8211; Lancez print @restoredb pour voir les bases de données à restaurer\n&#8211; Lorsque vous êtes prêt, exécutez exec (@restoredb)\n&#8211; EXEC (@restoredb)\n\n[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n&#8211; Effacer les données à l&#39;intérieur des tables pour laisser la place à la prochaine \n&#8211;set d&#39;informations à mettre dans la variable @restoredb \nTRUNCATE TABLE migration_lester\nTRUNCATE TABLE header_lester\nFETCH NEXT FROM migrate INTO @migrate\nFIN\nFERMER la migration\nDEALLOCATE migrate\n[email protected]@@@@@@@@@@@@@@@@@@@\n\n&#8211;Drop Tables \nDROP TABLE migration_lester\nDROP TABLE cmdshell_lester\nDROP TABLE header_lester\n\n=====================================\n\nJe reçois des erreurs sur ce second &#8230; Msg 213, niveau 16, état 7, ligne 1\nLe nom de colonne ou le nombre de valeurs fournies ne correspond pas à la définition de la table.\n\n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["Salut greg,\nMerci encore et ma machine est un sql2008r2 ent.\nJe regarde ces liens et je ne suis pas sûr que ce soit ce que je voudrais faire pour cette configuration. J&#39;ai également trouvé deux scripts supplémentaires qui semblaient avoir été écrits pour des versions antérieures de SQL Server et je me demandais si vous pouviez y apporter des modifications. Je ne sais pas non plus s&#39;il faut poser cette question ici ou sur votre page de conseil de restauration.\nRestaurer toutes les bases de données d&#39;un répertoire","SET QUOTED_IDENTIFIER OFF \nALLER\nSET ANSI_NULLS ON \nALLER","si existe (sélectionnez * à partir de dbo.sysobjects où id = object_id (N &#39;[dbo].[sp_CSS_RestoreDir]&#39;) et OBJECTPROPERTY (id, N&#39;IsProcedure&#39;) = 1)\nprocédure de largage [dbo].[sp_CSS_RestoreDir]\nALLER","/ ************************************************ *************************************** /\n&#8211; Nom de la procédure: sp_CSS_RestoreDir\n&#8211; Objectif: restaurer une ou plusieurs sauvegardes de base de données à partir d&#39;un seul répertoire. Ce script lit tout \n&#8211; sauvegardes de bases de données trouvées dans le paramètre @restoreFromDir.\n&#8211;Toute sauvegarde de base de données correspondant au formulaire% _db_% sera restaurée.\n&#8211; les emplacements de fichier spécifiés dans le (s) paramètre (s) RestoreTo &#8230;. La base de données\n&#8211; sera restauré sous un nom de base de données basé sur la sauvegarde de la base de données\n&#8211;nom de fichier. Par exemple, Insurance_db_200305212302.BAK sera restauré dans\n&#8211;une base de données nommée Assurance. Les caractères précédant le texte &#39;_db_&#39; déterminent\n&#8211;le nom.\n&#8211;\n&#8211; Paramètres d&#39;entrée: @restoreFromDir &#8211; Le répertoire où se trouvent les sauvegardes de la base de données\n[email protected]    &#8211; Le répertoire dans lequel les fichiers de données (à savoir, MDF) seront restaurés\n[email protected]    &#8211; Le répertoire dans lequel les fichiers journaux (c&#39;est-à-dire LDF) seront restaurés. Si\n&#8211;Ce paramètre n&#39;est pas fourni, puis les fichiers journaux sont restaurés dans @restoreToDataDir.\n&#8211; @MatchFileList &#8211; défini sur &#39;Y&#39; pour restaurer la même structure de répertoires que celle contenue dans la sauvegarde,\n&#8211; permet également aux fichiers de données secondaires &#39;ndf&#39; d&#39;être dans un répertoire différent de celui des fichiers mdf\n&#8211; @DBName &#8211; Ne restaurez que cette base de données &#8211; sélectionne le dernier fichier bak\n&#8211;  \n&#8211; Paramètres de sortie: Aucun\n&#8211;\n&#8211; Valeurs de retour:     \n&#8211;\n&#8211; Rédigé par: Chris Gallelli &#8211; 8/22/03\n&#8212; Modifié par:       \n&#8211; Modifications: Bruce Canaday &#8211; 10/20/2003\n&#8211; Ajout des paramètres facultatifs @MatchFileList et @DBName\n&#8211; Bruce Canaday &#8211; 24/10/2003\n&#8211; Récupère le nom de la base de données en tant que caractères à gauche du plus à droite &#39;_db_&#39; dans le nom de fichier\n&#8211; Ceci est destiné à gérer des bases de données telles que ALIS_DB\n&#8211; Bruce Canaday &#8211; 28/10/2003\n&#8211; Lors de l’utilisation de @MatchFileList = &#39;Y&#39;, essayez de créer un répertoire qui n’existe pas\n&#8211; Bruce Canaday &#8211; 11/04/2003\n&#8211; Autoriser les espaces dans le nom du répertoire @restoreFromDir\n&#8211;\n&#8211; Exemple d&#39;exécution: exec sp_CSS_RestoreDir &#39;C:  sqldb  sql_backup&#39;, &#39;C:  sqldb  sql_data&#39;, &#39;C:  sqldb  sql_log&#39;\n&#8211;\n&#8211; Exécution alternative: exec sp_CSS_RestoreDir &#39;C:  sqldb  sql_backup&#39;, @MatchFileList = &#39;Y&#39;\n&#8211;\n&#8212; Revu par:       \n&#8211;\n/ ************************************************ *************************************** /","CREATE proc sp_CSS_RestoreDir \n              @restoreFromDir varchar (255),\n@restoreToDataDir varchar (255) = null,\n@restoreToLogDir varchar (255) = null,\n              @MatchFileList char (1) = &#39;N&#39;,\n              @OneDBName varchar (255) = null\ncomme","&#8211;Si un répertoire pour le fichier journal n&#39;est pas fourni, utilisez le répertoire de données\nSi @restoreToLogDir est null\nset @restoreToLogDir = @restoreToDataDir","mettre nocount sur","declare @filename varchar (40),\n@cmd varchar (500), \n@ cmd2 varchar (500), \n                @DataName varchar (255),\n@LogName varchar (255),\n                @LogicalName varchar (255), \n@PhysicalName varchar (255), \n@Type varchar (20), \n@FileGroupName varchar (255), \n@Size varchar (20), \n@MaxSize varchar (20),\n@restoreToDir varchar (255),\n                @searchName varchar (255),\n@DBName varchar (255),\n                @PhysicalFileName varchar (255)","create table #dirList (nomfichier varchar (100))\ncreate table #filelist (nom_videntiel (255), nom_variable (255), nom_variable (255), nom_variable (255), nom de groupe_variable (255), taille varchar (20), taille_variable (20))","&#8211;Obtenir la liste des sauvegardes de base de données qui se trouvent dans le répertoire restoreFromDir\nsi @OneDBName est null \n      sélectionnez @cmd = &#39;dir / b / on &quot;&#39; [email protected]+ &#39;&quot;&#39;\nautre\n      sélectionnez @cmd = &#39;dir / b / o-d / o-g &quot;&#39; [email protected]+ &#39;&quot;&#39;","insère #dirList exec master..xp_cmdshell @cmd","select * from #dirList où filename comme &#39;% _db_%&#39; &#8211; ordre par nom de fichier","si @OneDBName est null \n      déclarer le curseur BakFile_csr pour \n  sélectionnez * à partir de #dirList où nom_fichier ressemble à &#39;% _db_% bak&#39;, ordre par nom_fichier\nautre\n      begin &#8211; une seule base de données, ne pas classer par nom de fichier, prendre par défaut la dernière date / o-d parm dans la commande dir ci-dessus\n          select @searchName = @OneDBName + &#39;_db_% bak&#39;\n          déclarer le curseur BakFile_csr pour \n  sélectionnez top 1 * from #dirList où filename est comme @searchName\n      fin","ouvrir BakFile_csr\nrécupère BakFile_csr dans @filename","tandis que @@ fetch_status = 0\n      commencer\n              select @cmd = &quot;RESTORE FILELISTONLY FROM disk = &#39;&quot; + @restoreFromDir + &quot;&quot; + @filename + &quot;&#39;&quot;","insert #filelist exec (@cmd)","si @OneDBName est null \n                    select @dbName = left (@ nomfichier, datalength (@nomfichier) &#8211; patindex (&#39;% _bd _%&#39;, inverser (@nomfichier)) &#8211; 3)\n              autre\n    select @dbName = @OneDBName","select @cmd = &quot;RESTORE DATABASE&quot; + @dbName + \n&quot;FROM DISK = &#39;&quot; + @restoreFromDir + &quot;&quot; + @filename + &quot;&#39; WITH&quot;","IMPRESSION &#39;&#39; \n              IMPRESSION &#39;BASE DE DONNEES DE RESTAURATION&#39; + @dbName","déclarer le curseur DataFileCursor pour  \nSélectionnez LogicalName, PhysicalName, Type, FileGroupName, Size, MaxSize.\nde #filelist","ouvrir DataFileCursor\n              récupérer DataFileCursor dans @LogicalName, @PhysicalName, @Type, @FileGroupName, @Size, @MaxSize","tandis que @@ fetch_status = 0\n                    commencer\n                            if @MatchFileList! = &#39;Y&#39;\n                                  commencer &#8211; option RESTORE with MOVE \n            select @PhysicalFileName = reverse (sous-chaîne (reverse (rtrim (@PhysicalName))), 1, patindex (&#39;% %&#39;, reverse (rtrim (@PhysicalName)) &#8211; 1))","si @Type = &#39;L&#39;\n              sélectionnez @restoreToDir = @restoreToLogDir\n              autre\n              select @restoreToDir = @restoreToDataDir","sélectionnez @cmd = @cmd + \n                      &quot;MOVE&quot; &quot;+ @LogicalName +&quot; &#39;TO &quot;&quot; + @restoreToDir + &quot;&quot; + @PhysicalFileName + &quot;&#39;,&quot; \n                                  fin\n                            autre\n                                  begin &#8211; Correspond à la liste de fichiers, tente de créer tout répertoire manquant\n                                          sélectionnez @restoreToDir = left (@ PhysicalName, datalength (@PhysicalName) &#8211; patindex (&#39;% %&#39;, reverse (@PhysicalName)))\n                                          sélectionnez @ cmd2 = &quot;s&#39;il n&#39;existe pas&quot; [email protected]+ &quot;md&quot; [email protected]\n                                          exec master..xp_cmdshell @ cmd2\n                                  fin","récupérer DataFileCursor dans @LogicalName, @PhysicalName, @Type, @FileGroupName, @Size, @MaxSize","end &#8211; boucle DataFileCursor","fermer DataFileCursor\n      désallouer DataFileCursor","sélectionnez @cmd = @cmd + &#39;REPLACE&#39;\n              &#8211;select @cmd &#39;commande&#39;\n              EXEC (@CMD)","tronquer la table #filelist","récupère BakFile_csr dans @filename","fin &#8211; boucle BakFile_csr","fermer BakFile_csr\nlibère BakFile_csr","déposer table #dirList","revenir\nALLER","SET QUOTED_IDENTIFIER OFF \nALLER\nSET ANSI_NULLS ON \nALLER","Restaure automatiquement tous les fichiers .BAK de la base de données","/ ************************************************ ************\nScénario écrit par: Lester A. Policarpio\nAdresse électronique : [email protected]\nDate de création: 3 septembre 2007\n&#8211; = UPDATES = &#8211;","17 janvier 2008\n&#8211; Valeur sortie résolue de la variable @restoredb\n&#8211; Résolution du problème &quot;paramètre de longueur non valide&quot;","6 mai 2008\n&#8211; Suppression des variables inutilisées\n&#8211; Ajoutez la commande headeronly pour accepter le format de sauvegarde autre que SQL \n  (dbname_db_YYYYYMMDDHHMM.BAK)\n&#8211; Ajouter plus de commentaires","12 mai 2008\n&#8211; Accepter les fichiers de sauvegarde avec plusieurs NDF","23 mai 2008\n&#8211; Résolution du problème lorsque RESTORE HEADERONLY génère plusieurs valeurs.","&#8211; = LIMITATIONS = &#8211;\n&#8211; Ce script est testé pour les fichiers de sauvegarde &quot;.BAK&quot; uniquement \n&#8211; Le script doit être modifié si l&#39;extension de sauvegarde n&#39;est pas &quot;.bak&quot;\n************************************************* *********** /\nSET NOCOUNT ON\n&#8211;Drop Tables s&#39;il existe dans la base de données\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;migration_lester&#39;)\nDROP TABLE migration_lester\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;header_lester&#39;)\nDROP TABLE header_lester\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;cmdshell_lester&#39;)\nDROP TABLE cmdshell_lester","&#8211;Créer des tables \n&#8211; (table cmdshell_lester pour la commande cmdshell)\n&#8211; (table migration_lester pour la commande restore filelistonly)\n&#8211; (table header_lester pour la commande restore headeronly)\nCREATE TABLE cmdshell_lester (fentry varchar (1000))","CREATE TABLE migration_lester (LogicalName varchar (1024),\nPhysicalName varchar (4000), tapez char (1), FileGroupName varchar (50),\ntaille réelle, taille réelle)","CREATE TABLE header_lester (BackupName varchar (50),\nBackupDescription varchar (100), BackupType int,\nExpirationDate nvarchar (50), Compressed int, Position int,\nDeviceType int, nom d&#39;utilisateur varchar (30), nom de serveur varchar (30),\nDatabaseName varchar (50), DatabaseVersion int,\nDatabaseCreationDate datetime, BackupSize bigint, binaire FirstLsn,\nBinaire LastLsn, binaire CheckpointLsn, binaire DifferentialBasLsn,\nBackupStartDate datetime, BackupFinishDate datetime, SortOrder int,\nCodePage int, UnicodeLocaleid int, UnicodeComparisonStyle int,\nCompatibilityLevel int, SoftwareVendorId int, SoftwareVersionMajor int,\nSoftwareVersionMinor int, SoftwareVersionBuild int,\nNom de la machine varchar (50), Flags int, BindingId nvarchar (50),\nRecoveryForkId nvarchar (50), collation nvarchar (50))","&#8211;Déclare les variables\nDECLARE @path varchar (1024), @ restore varchar (1024)\nDECLARE @restoredb varchar (2000), @ extension varchar (1024), @ newpath_ldf varchar (1024)\nDECLARE @pathension varchar (1024), @ newpath_mdf varchar (1024), @ en-tête varchar (500)","&#8211;Définir les valeurs sur les variables\nSET @newpath_mdf = &#39;C: &#39; &#8211; nouveau chemin dans lequel vous placerez le mdf\nSET @newpath_ldf = &#39;D: &#39; &#8211;nouveau chemin dans lequel vous placerez le ldf\nSET @path = &#39;D: &#39; &#8211;Path du fichier de sauvegarde\nSET @extension = &#39;BAK&#39;\nSET @pathension = &#39;dir / OD&#39;[email protected]+ &#39;*.&#39;[email protected]","&#8211;Insérer la valeur du shell de commande dans la table\nINSERT INTO cmdshell_lester exec master..xp_cmdshell @pathension\n&#8211;Supprimer les données des fichiers de sauvegarde, supprimer les valeurs nulles\nSUPPRIMER DE cmdshell_lester WHERE FEntry NE AIME PAS &#39;% .BAK%&#39; \nDELETE DE cmdshell_lester WHERE FEntry est NULL\n&#8211;Créez un curseur pour analyser tous les fichiers de sauvegarde nécessaires à la génération du script de restauration\nDECLARE @migrate varchar (1024)\nDÉCLARER la migration du CURSEUR POUR\nsélectionnez la sous-chaîne (FEntry, 40,50) sous le nom &#39;FEntry&#39; dans cmdshell_lester \nOPEN migrer\nFETCH NEXT FROM migrate INTO @migrate\nPENDANT QUE (@@ FETCH_STATUS = 0) COMMENCE\n&#8211; Ajout de la fonctionnalité pour obtenir le nom de base du fichier de sauvegarde.\nSET @header = &#39;RESTORE HEADERONLY FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39;\nINSERT INTO exec_lester exec (@header)\n&#8211;Obtenir les noms des mdf et ldf\nset @restore = &#39;RESTORE FILELISTONLY FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39;\nINSERT INTO migration_lester EXEC (@restore)\n&#8211;Mise à jour de la table pour ajouter le nouveau chemin + noms mdf / ldf\nUPDATE migration_lester SET nom physique = inversion (nom physique)\nUPDATE migration_lester SET nom physique = \nsous-chaîne (nom physique, 1, charindex (&#39;&#39;, nom physique) -1)","UPDATE migration_lester SET nom physique = @ newpath_mdf + reverse (nom physique) où type = &#39;D&#39;\nUPDATE migration_lester SET nom physique = @ newpath_ldf + reverse (nom physique) où type = &#39;L&#39;\n[email protected]@@@@@@@@@@@@@@@@@@@\n&#8211; Attribuez une valeur à la variable @restoredb pour contenir le script de base de données de restauration\nIF (select count (*) from migration_lester) = 2\nCOMMENCER\nSET @restoredb = &#39;RESTORE DATABASE&#39; + (sélectionnez top 1 DatabaseName dans header_lester)\n+ &#39;FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39; + &#39;WITH MOVE&#39; + &#39;&#39; &#39;&#39;\n+ (sélectionnez le nom logique de migration_lester où type = &#39;D&#39;) + &#39;&#39; &#39;&#39;\n+ &#39;TO&#39; + &#39;&#39; &#39;+ (sélectionnez le nom physique dans migration_lester WHERE nom physique tel que&#39;% mdf% &#39;)\n+ &#39;&#39; &#39;&#39; + &#39;, MOVE&#39; + &#39;&#39; &#39;&#39; + (sélectionnez le nom logique de migration_lester où type = &#39;L&#39;)\n+ &#39;&#39; &#39;&#39; + &#39;TO&#39; + &#39;&#39; &#39;&#39; + (sélectionnez le nom physique dans migration_lester \nWHERE nom physique comme &#39;% ldf%&#39;) + &#39;&#39; &#39;&#39;\nprint (@restoredb) \nFIN","IF (sélectionnez le nombre (*) dans migration_lester)&gt; 2\nCOMMENCER\nSET @restoredb = \n&#39;RESTORE DATABASE&#39; + (sélectionnez top 1 DatabaseName dans header_lester) +\n&#39;FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39; + &#39;WITH MOVE&#39;\nDECLARE @multiple varchar (1000), @ physical varchar (1000)\nDÉCLARER PLUSIEURS CURSEURS POUR\nSélectionnez un nom logique, un nom physique dans le fichier migration_lester.\nOUVERT multiple\nFETCH NEXT FROM multiple INTO @ multiple, @ physical\nPENDANT (@@ FETCH_STATUS = 0)\nCOMMENCER\nENSEMBLE @[email protected]+ &#39;&#39; &#39;&#39;[email protected]+ &#39;&#39; &#39;&#39; + &#39;TO&#39; + &#39;&#39; &#39;&#39;[email protected]+ &#39;&#39; &#39;&#39; + &#39;,&#39; + &#39;MOVE&#39; + &#39;&#39;\nFETCH NEXT FROM multiple INTO @ multiple, @ physical\nFIN\nFermer plusieurs\nDEALLOCATE multiple\nSET @restoredb = sous-chaîne (@ restoreb, 1, len (@restoredb) -5)\nprint (@restoredb)\nFIN","[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n&#8211; Lancez print @restoredb pour voir les bases de données à restaurer\n&#8211; Lorsque vous êtes prêt, exécutez exec (@restoredb)\n&#8211; EXEC (@restoredb)","[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n&#8211; Effacer les données à l&#39;intérieur des tables pour laisser la place à la prochaine \n&#8211;set d&#39;informations à mettre dans la variable @restoredb \nTRUNCATE TABLE migration_lester\nTRUNCATE TABLE header_lester\nFETCH NEXT FROM migrate INTO @migrate\nFIN\nFERMER la migration\nDEALLOCATE migrate\n[email protected]@@@@@@@@@@@@@@@@@@@","&#8211;Drop Tables \nDROP TABLE migration_lester\nDROP TABLE cmdshell_lester\nDROP TABLE header_lester","=====================================","Je reçois des erreurs sur ce second &#8230; Msg 213, niveau 16, état 7, ligne 1\nLe nom de colonne ou le nombre de valeurs fournies ne correspond pas à la définition de la table.","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"Salut greg,\nMerci encore et ma machine est un sql2008r2 ent.\nJe regarde ces liens et je ne suis pas sûr que ce soit ce que je voudrais faire pour cette configuration. J&#39;ai également trouvé deux scripts supplémentaires qui semblaient avoir été écrits pour des versions antérieures de SQL Server et je me demandais si vous pouviez y apporter des modifications. Je ne sais pas non plus s&#39;il faut poser cette question ici ou sur votre page de conseil de restauration.\nRestaurer toutes les bases de données d&#39;un répertoire","html":"<p>Salut greg,\nMerci encore et ma machine est un sql2008r2 ent.\nJe regarde ces liens et je ne suis pas sûr que ce soit ce que je voudrais faire pour cette configuration. J&#039;ai également trouvé deux scripts supplémentaires qui semblaient avoir été écrits pour des versions antérieures de SQL Server et je me demandais si vous pouviez y apporter des modifications. Je ne sais pas non plus s&#039;il faut poser cette question ici ou sur votre page de conseil de restauration.\nRestaurer toutes les bases de données d&#039;un répertoire</p>"},{"id":"text-2","type":"text","heading":"","plain_text":"SET QUOTED_IDENTIFIER OFF \nALLER\nSET ANSI_NULLS ON \nALLER","html":"<p>SET QUOTED_IDENTIFIER OFF \nALLER\nSET ANSI_NULLS ON \nALLER</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"si existe (sélectionnez * à partir de dbo.sysobjects où id = object_id (N &#39;[dbo].[sp_CSS_RestoreDir]&#39;) et OBJECTPROPERTY (id, N&#39;IsProcedure&#39;) = 1)\nprocédure de largage [dbo].[sp_CSS_RestoreDir]\nALLER","html":"<p>si existe (sélectionnez * à partir de dbo.sysobjects où id = object_id (N &#039;[dbo].[sp_CSS_RestoreDir]&#039;) et OBJECTPROPERTY (id, N&#039;IsProcedure&#039;) = 1)\nprocédure de largage [dbo].[sp_CSS_RestoreDir]\nALLER</p>"},{"id":"text-4","type":"text","heading":"","plain_text":"/ ************************************************ *************************************** /\n&#8211; Nom de la procédure: sp_CSS_RestoreDir\n&#8211; Objectif: restaurer une ou plusieurs sauvegardes de base de données à partir d&#39;un seul répertoire. Ce script lit tout \n&#8211; sauvegardes de bases de données trouvées dans le paramètre @restoreFromDir.\n&#8211;Toute sauvegarde de base de données correspondant au formulaire% _db_% sera restaurée.\n&#8211; les emplacements de fichier spécifiés dans le (s) paramètre (s) RestoreTo &#8230;. La base de données\n&#8211; sera restauré sous un nom de base de données basé sur la sauvegarde de la base de données\n&#8211;nom de fichier. Par exemple, Insurance_db_200305212302.BAK sera restauré dans\n&#8211;une base de données nommée Assurance. Les caractères précédant le texte &#39;_db_&#39; déterminent\n&#8211;le nom.\n&#8211;\n&#8211; Paramètres d&#39;entrée: @restoreFromDir &#8211; Le répertoire où se trouvent les sauvegardes de la base de données\n[email protected]    &#8211; Le répertoire dans lequel les fichiers de données (à savoir, MDF) seront restaurés\n[email protected]    &#8211; Le répertoire dans lequel les fichiers journaux (c&#39;est-à-dire LDF) seront restaurés. Si\n&#8211;Ce paramètre n&#39;est pas fourni, puis les fichiers journaux sont restaurés dans @restoreToDataDir.\n&#8211; @MatchFileList &#8211; défini sur &#39;Y&#39; pour restaurer la même structure de répertoires que celle contenue dans la sauvegarde,\n&#8211; permet également aux fichiers de données secondaires &#39;ndf&#39; d&#39;être dans un répertoire différent de celui des fichiers mdf\n&#8211; @DBName &#8211; Ne restaurez que cette base de données &#8211; sélectionne le dernier fichier bak\n&#8211;  \n&#8211; Paramètres de sortie: Aucun\n&#8211;\n&#8211; Valeurs de retour:     \n&#8211;\n&#8211; Rédigé par: Chris Gallelli &#8211; 8/22/03\n&#8212; Modifié par:       \n&#8211; Modifications: Bruce Canaday &#8211; 10/20/2003\n&#8211; Ajout des paramètres facultatifs @MatchFileList et @DBName\n&#8211; Bruce Canaday &#8211; 24/10/2003\n&#8211; Récupère le nom de la base de données en tant que caractères à gauche du plus à droite &#39;_db_&#39; dans le nom de fichier\n&#8211; Ceci est destiné à gérer des bases de données telles que ALIS_DB\n&#8211; Bruce Canaday &#8211; 28/10/2003\n&#8211; Lors de l’utilisation de @MatchFileList = &#39;Y&#39;, essayez de créer un répertoire qui n’existe pas\n&#8211; Bruce Canaday &#8211; 11/04/2003\n&#8211; Autoriser les espaces dans le nom du répertoire @restoreFromDir\n&#8211;\n&#8211; Exemple d&#39;exécution: exec sp_CSS_RestoreDir &#39;C:  sqldb  sql_backup&#39;, &#39;C:  sqldb  sql_data&#39;, &#39;C:  sqldb  sql_log&#39;\n&#8211;\n&#8211; Exécution alternative: exec sp_CSS_RestoreDir &#39;C:  sqldb  sql_backup&#39;, @MatchFileList = &#39;Y&#39;\n&#8211;\n&#8212; Revu par:       \n&#8211;\n/ ************************************************ *************************************** /","html":"<p>/ ************************************************ *************************************** /\n&#8211; Nom de la procédure: sp_CSS_RestoreDir\n&#8211; Objectif: restaurer une ou plusieurs sauvegardes de base de données à partir d&#039;un seul répertoire. Ce script lit tout \n&#8211; sauvegardes de bases de données trouvées dans le paramètre @restoreFromDir.\n&#8211;Toute sauvegarde de base de données correspondant au formulaire% _db_% sera restaurée.\n&#8211; les emplacements de fichier spécifiés dans le (s) paramètre (s) RestoreTo &#8230;. La base de données\n&#8211; sera restauré sous un nom de base de données basé sur la sauvegarde de la base de données\n&#8211;nom de fichier. Par exemple, Insurance_db_200305212302.BAK sera restauré dans\n&#8211;une base de données nommée Assurance. Les caractères précédant le texte &#039;_db_&#039; déterminent\n&#8211;le nom.\n&#8211;\n&#8211; Paramètres d&#039;entrée: @restoreFromDir &#8211; Le répertoire où se trouvent les sauvegardes de la base de données\n[email protected]    &#8211; Le répertoire dans lequel les fichiers de données (à savoir, MDF) seront restaurés\n[email protected]    &#8211; Le répertoire dans lequel les fichiers journaux (c&#039;est-à-dire LDF) seront restaurés. Si\n&#8211;Ce paramètre n&#039;est pas fourni, puis les fichiers journaux sont restaurés dans @restoreToDataDir.\n&#8211; @MatchFileList &#8211; défini sur &#039;Y&#039; pour restaurer la même structure de répertoires que celle contenue dans la sauvegarde,\n&#8211; permet également aux fichiers de données secondaires &#039;ndf&#039; d&#039;être dans un répertoire différent de celui des fichiers mdf\n&#8211; @DBName &#8211; Ne restaurez que cette base de données &#8211; sélectionne le dernier fichier bak\n&#8211;  \n&#8211; Paramètres de sortie: Aucun\n&#8211;\n&#8211; Valeurs de retour:     \n&#8211;\n&#8211; Rédigé par: Chris Gallelli &#8211; 8/22/03\n&#8212; Modifié par:       \n&#8211; Modifications: Bruce Canaday &#8211; 10/20/2003\n&#8211; Ajout des paramètres facultatifs @MatchFileList et @DBName\n&#8211; Bruce Canaday &#8211; 24/10/2003\n&#8211; Récupère le nom de la base de données en tant que caractères à gauche du plus à droite &#039;_db_&#039; dans le nom de fichier\n&#8211; Ceci est destiné à gérer des bases de données telles que ALIS_DB\n&#8211; Bruce Canaday &#8211; 28/10/2003\n&#8211; Lors de l’utilisation de @MatchFileList = &#039;Y&#039;, essayez de créer un répertoire qui n’existe pas\n&#8211; Bruce Canaday &#8211; 11/04/2003\n&#8211; Autoriser les espaces dans le nom du répertoire @restoreFromDir\n&#8211;\n&#8211; Exemple d&#039;exécution: exec sp_CSS_RestoreDir &#039;C:  sqldb  sql_backup&#039;, &#039;C:  sqldb  sql_data&#039;, &#039;C:  sqldb  sql_log&#039;\n&#8211;\n&#8211; Exécution alternative: exec sp_CSS_RestoreDir &#039;C:  sqldb  sql_backup&#039;, @MatchFileList = &#039;Y&#039;\n&#8211;\n&#8212; Revu par:       \n&#8211;\n/ ************************************************ *************************************** /</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"CREATE proc sp_CSS_RestoreDir \n              @restoreFromDir varchar (255),\n@restoreToDataDir varchar (255) = null,\n@restoreToLogDir varchar (255) = null,\n              @MatchFileList char (1) = &#39;N&#39;,\n              @OneDBName varchar (255) = null\ncomme","html":"<p>CREATE proc sp_CSS_RestoreDir \n              @restoreFromDir varchar (255),\n@restoreToDataDir varchar (255) = null,\n@restoreToLogDir varchar (255) = null,\n              @MatchFileList char (1) = &#039;N&#039;,\n              @OneDBName varchar (255) = null\ncomme</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"&#8211;Si un répertoire pour le fichier journal n&#39;est pas fourni, utilisez le répertoire de données\nSi @restoreToLogDir est null\nset @restoreToLogDir = @restoreToDataDir","html":"<p>&#8211;Si un répertoire pour le fichier journal n&#039;est pas fourni, utilisez le répertoire de données\nSi @restoreToLogDir est null\nset @restoreToLogDir = @restoreToDataDir</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"mettre nocount sur","html":"<p>mettre nocount sur</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"declare @filename varchar (40),\n@cmd varchar (500), \n@ cmd2 varchar (500), \n                @DataName varchar (255),\n@LogName varchar (255),\n                @LogicalName varchar (255), \n@PhysicalName varchar (255), \n@Type varchar (20), \n@FileGroupName varchar (255), \n@Size varchar (20), \n@MaxSize varchar (20),\n@restoreToDir varchar (255),\n                @searchName varchar (255),\n@DBName varchar (255),\n                @PhysicalFileName varchar (255)","html":"<p>declare @filename varchar (40),\n@cmd varchar (500), \n@ cmd2 varchar (500), \n                @DataName varchar (255),\n@LogName varchar (255),\n                @LogicalName varchar (255), \n@PhysicalName varchar (255), \n@Type varchar (20), \n@FileGroupName varchar (255), \n@Size varchar (20), \n@MaxSize varchar (20),\n@restoreToDir varchar (255),\n                @searchName varchar (255),\n@DBName varchar (255),\n                @PhysicalFileName varchar (255)</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"create table #dirList (nomfichier varchar (100))\ncreate table #filelist (nom_videntiel (255), nom_variable (255), nom_variable (255), nom_variable (255), nom de groupe_variable (255), taille varchar (20), taille_variable (20))","html":"<p>create table #dirList (nomfichier varchar (100))\ncreate table #filelist (nom_videntiel (255), nom_variable (255), nom_variable (255), nom_variable (255), nom de groupe_variable (255), taille varchar (20), taille_variable (20))</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"&#8211;Obtenir la liste des sauvegardes de base de données qui se trouvent dans le répertoire restoreFromDir\nsi @OneDBName est null \n      sélectionnez @cmd = &#39;dir / b / on &quot;&#39; [email protected]+ &#39;&quot;&#39;\nautre\n      sélectionnez @cmd = &#39;dir / b / o-d / o-g &quot;&#39; [email protected]+ &#39;&quot;&#39;","html":"<p>&#8211;Obtenir la liste des sauvegardes de base de données qui se trouvent dans le répertoire restoreFromDir\nsi @OneDBName est null \n      sélectionnez @cmd = &#039;dir / b / on &quot;&#039; [email protected]+ &#039;&quot;&#039;\nautre\n      sélectionnez @cmd = &#039;dir / b / o-d / o-g &quot;&#039; [email protected]+ &#039;&quot;&#039;</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"insère #dirList exec master..xp_cmdshell @cmd","html":"<p>insère #dirList exec master..xp_cmdshell @cmd</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"select * from #dirList où filename comme &#39;% _db_%&#39; &#8211; ordre par nom de fichier","html":"<p>select * from #dirList où filename comme &#039;% _db_%&#039; &#8211; ordre par nom de fichier</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"si @OneDBName est null \n      déclarer le curseur BakFile_csr pour \n  sélectionnez * à partir de #dirList où nom_fichier ressemble à &#39;% _db_% bak&#39;, ordre par nom_fichier\nautre\n      begin &#8211; une seule base de données, ne pas classer par nom de fichier, prendre par défaut la dernière date / o-d parm dans la commande dir ci-dessus\n          select @searchName = @OneDBName + &#39;_db_% bak&#39;\n          déclarer le curseur BakFile_csr pour \n  sélectionnez top 1 * from #dirList où filename est comme @searchName\n      fin","html":"<p>si @OneDBName est null \n      déclarer le curseur BakFile_csr pour \n  sélectionnez * à partir de #dirList où nom_fichier ressemble à &#039;% _db_% bak&#039;, ordre par nom_fichier\nautre\n      begin &#8211; une seule base de données, ne pas classer par nom de fichier, prendre par défaut la dernière date / o-d parm dans la commande dir ci-dessus\n          select @searchName = @OneDBName + &#039;_db_% bak&#039;\n          déclarer le curseur BakFile_csr pour \n  sélectionnez top 1 * from #dirList où filename est comme @searchName\n      fin</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"ouvrir BakFile_csr\nrécupère BakFile_csr dans @filename","html":"<p>ouvrir BakFile_csr\nrécupère BakFile_csr dans @filename</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"tandis que @@ fetch_status = 0\n      commencer\n              select @cmd = &quot;RESTORE FILELISTONLY FROM disk = &#39;&quot; + @restoreFromDir + &quot;&quot; + @filename + &quot;&#39;&quot;","html":"<p>tandis que @@ fetch_status = 0\n      commencer\n              select @cmd = &quot;RESTORE FILELISTONLY FROM disk = &#039;&quot; + @restoreFromDir + &quot;&quot; + @filename + &quot;&#039;&quot;</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"insert #filelist exec (@cmd)","html":"<p>insert #filelist exec (@cmd)</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"si @OneDBName est null \n                    select @dbName = left (@ nomfichier, datalength (@nomfichier) &#8211; patindex (&#39;% _bd _%&#39;, inverser (@nomfichier)) &#8211; 3)\n              autre\n    select @dbName = @OneDBName","html":"<p>si @OneDBName est null \n                    select @dbName = left (@ nomfichier, datalength (@nomfichier) &#8211; patindex (&#039;% _bd _%&#039;, inverser (@nomfichier)) &#8211; 3)\n              autre\n    select @dbName = @OneDBName</p>"},{"id":"text-18","type":"text","heading":"","plain_text":"select @cmd = &quot;RESTORE DATABASE&quot; + @dbName + \n&quot;FROM DISK = &#39;&quot; + @restoreFromDir + &quot;&quot; + @filename + &quot;&#39; WITH&quot;","html":"<p>select @cmd = &quot;RESTORE DATABASE&quot; + @dbName + \n&quot;FROM DISK = &#039;&quot; + @restoreFromDir + &quot;&quot; + @filename + &quot;&#039; WITH&quot;</p>"},{"id":"text-19","type":"text","heading":"","plain_text":"IMPRESSION &#39;&#39; \n              IMPRESSION &#39;BASE DE DONNEES DE RESTAURATION&#39; + @dbName","html":"<p>IMPRESSION &#039;&#039; \n              IMPRESSION &#039;BASE DE DONNEES DE RESTAURATION&#039; + @dbName</p>"},{"id":"text-20","type":"text","heading":"","plain_text":"déclarer le curseur DataFileCursor pour  \nSélectionnez LogicalName, PhysicalName, Type, FileGroupName, Size, MaxSize.\nde #filelist","html":"<p>déclarer le curseur DataFileCursor pour  \nSélectionnez LogicalName, PhysicalName, Type, FileGroupName, Size, MaxSize.\nde #filelist</p>"},{"id":"text-21","type":"text","heading":"","plain_text":"ouvrir DataFileCursor\n              récupérer DataFileCursor dans @LogicalName, @PhysicalName, @Type, @FileGroupName, @Size, @MaxSize","html":"<p>ouvrir DataFileCursor\n              récupérer DataFileCursor dans @LogicalName, @PhysicalName, @Type, @FileGroupName, @Size, @MaxSize</p>"},{"id":"text-22","type":"text","heading":"","plain_text":"tandis que @@ fetch_status = 0\n                    commencer\n                            if @MatchFileList! = &#39;Y&#39;\n                                  commencer &#8211; option RESTORE with MOVE \n            select @PhysicalFileName = reverse (sous-chaîne (reverse (rtrim (@PhysicalName))), 1, patindex (&#39;% %&#39;, reverse (rtrim (@PhysicalName)) &#8211; 1))","html":"<p>tandis que @@ fetch_status = 0\n                    commencer\n                            if @MatchFileList! = &#039;Y&#039;\n                                  commencer &#8211; option RESTORE with MOVE \n            select @PhysicalFileName = reverse (sous-chaîne (reverse (rtrim (@PhysicalName))), 1, patindex (&#039;% %&#039;, reverse (rtrim (@PhysicalName)) &#8211; 1))</p>"},{"id":"text-23","type":"text","heading":"","plain_text":"si @Type = &#39;L&#39;\n              sélectionnez @restoreToDir = @restoreToLogDir\n              autre\n              select @restoreToDir = @restoreToDataDir","html":"<p>si @Type = &#039;L&#039;\n              sélectionnez @restoreToDir = @restoreToLogDir\n              autre\n              select @restoreToDir = @restoreToDataDir</p>"},{"id":"text-24","type":"text","heading":"","plain_text":"sélectionnez @cmd = @cmd + \n                      &quot;MOVE&quot; &quot;+ @LogicalName +&quot; &#39;TO &quot;&quot; + @restoreToDir + &quot;&quot; + @PhysicalFileName + &quot;&#39;,&quot; \n                                  fin\n                            autre\n                                  begin &#8211; Correspond à la liste de fichiers, tente de créer tout répertoire manquant\n                                          sélectionnez @restoreToDir = left (@ PhysicalName, datalength (@PhysicalName) &#8211; patindex (&#39;% %&#39;, reverse (@PhysicalName)))\n                                          sélectionnez @ cmd2 = &quot;s&#39;il n&#39;existe pas&quot; [email protected]+ &quot;md&quot; [email protected]\n                                          exec master..xp_cmdshell @ cmd2\n                                  fin","html":"<p>sélectionnez @cmd = @cmd + \n                      &quot;MOVE&quot; &quot;+ @LogicalName +&quot; &#039;TO &quot;&quot; + @restoreToDir + &quot;&quot; + @PhysicalFileName + &quot;&#039;,&quot; \n                                  fin\n                            autre\n                                  begin &#8211; Correspond à la liste de fichiers, tente de créer tout répertoire manquant\n                                          sélectionnez @restoreToDir = left (@ PhysicalName, datalength (@PhysicalName) &#8211; patindex (&#039;% %&#039;, reverse (@PhysicalName)))\n                                          sélectionnez @ cmd2 = &quot;s&#039;il n&#039;existe pas&quot; [email protected]+ &quot;md&quot; [email protected]\n                                          exec master..xp_cmdshell @ cmd2\n                                  fin</p>"},{"id":"text-25","type":"text","heading":"","plain_text":"récupérer DataFileCursor dans @LogicalName, @PhysicalName, @Type, @FileGroupName, @Size, @MaxSize","html":"<p>récupérer DataFileCursor dans @LogicalName, @PhysicalName, @Type, @FileGroupName, @Size, @MaxSize</p>"},{"id":"text-26","type":"text","heading":"","plain_text":"end &#8211; boucle DataFileCursor","html":"<p>end &#8211; boucle DataFileCursor</p>"},{"id":"text-27","type":"text","heading":"","plain_text":"fermer DataFileCursor\n      désallouer DataFileCursor","html":"<p>fermer DataFileCursor\n      désallouer DataFileCursor</p>"},{"id":"text-28","type":"text","heading":"","plain_text":"sélectionnez @cmd = @cmd + &#39;REPLACE&#39;\n              &#8211;select @cmd &#39;commande&#39;\n              EXEC (@CMD)","html":"<p>sélectionnez @cmd = @cmd + &#039;REPLACE&#039;\n              &#8211;select @cmd &#039;commande&#039;\n              EXEC (@CMD)</p>"},{"id":"text-29","type":"text","heading":"","plain_text":"tronquer la table #filelist","html":"<p>tronquer la table #filelist</p>"},{"id":"text-30","type":"text","heading":"","plain_text":"récupère BakFile_csr dans @filename","html":"<p>récupère BakFile_csr dans @filename</p>"},{"id":"text-31","type":"text","heading":"","plain_text":"fin &#8211; boucle BakFile_csr","html":"<p>fin &#8211; boucle BakFile_csr</p>"},{"id":"text-32","type":"text","heading":"","plain_text":"fermer BakFile_csr\nlibère BakFile_csr","html":"<p>fermer BakFile_csr\nlibère BakFile_csr</p>"},{"id":"text-33","type":"text","heading":"","plain_text":"déposer table #dirList","html":"<p>déposer table #dirList</p>"},{"id":"text-34","type":"text","heading":"","plain_text":"revenir\nALLER","html":"<p>revenir\nALLER</p>"},{"id":"text-35","type":"text","heading":"","plain_text":"SET QUOTED_IDENTIFIER OFF \nALLER\nSET ANSI_NULLS ON \nALLER","html":"<p>SET QUOTED_IDENTIFIER OFF \nALLER\nSET ANSI_NULLS ON \nALLER</p>"},{"id":"text-36","type":"text","heading":"","plain_text":"Restaure automatiquement tous les fichiers .BAK de la base de données","html":"<p>Restaure automatiquement tous les fichiers .BAK de la base de données</p>"},{"id":"text-37","type":"text","heading":"","plain_text":"/ ************************************************ ************\nScénario écrit par: Lester A. Policarpio\nAdresse électronique : [email protected]\nDate de création: 3 septembre 2007\n&#8211; = UPDATES = &#8211;","html":"<p>/ ************************************************ ************\nScénario écrit par: Lester A. Policarpio\nAdresse électronique : [email protected]\nDate de création: 3 septembre 2007\n&#8211; = UPDATES = &#8211;</p>"},{"id":"text-38","type":"text","heading":"","plain_text":"17 janvier 2008\n&#8211; Valeur sortie résolue de la variable @restoredb\n&#8211; Résolution du problème &quot;paramètre de longueur non valide&quot;","html":"<p>17 janvier 2008\n&#8211; Valeur sortie résolue de la variable @restoredb\n&#8211; Résolution du problème &quot;paramètre de longueur non valide&quot;</p>"},{"id":"text-39","type":"text","heading":"","plain_text":"6 mai 2008\n&#8211; Suppression des variables inutilisées\n&#8211; Ajoutez la commande headeronly pour accepter le format de sauvegarde autre que SQL \n  (dbname_db_YYYYYMMDDHHMM.BAK)\n&#8211; Ajouter plus de commentaires","html":"<p>6 mai 2008\n&#8211; Suppression des variables inutilisées\n&#8211; Ajoutez la commande headeronly pour accepter le format de sauvegarde autre que SQL \n  (dbname_db_YYYYYMMDDHHMM.BAK)\n&#8211; Ajouter plus de commentaires</p>"},{"id":"text-40","type":"text","heading":"","plain_text":"12 mai 2008\n&#8211; Accepter les fichiers de sauvegarde avec plusieurs NDF","html":"<p>12 mai 2008\n&#8211; Accepter les fichiers de sauvegarde avec plusieurs NDF</p>"},{"id":"text-41","type":"text","heading":"","plain_text":"23 mai 2008\n&#8211; Résolution du problème lorsque RESTORE HEADERONLY génère plusieurs valeurs.","html":"<p>23 mai 2008\n&#8211; Résolution du problème lorsque RESTORE HEADERONLY génère plusieurs valeurs.</p>"},{"id":"text-42","type":"text","heading":"","plain_text":"&#8211; = LIMITATIONS = &#8211;\n&#8211; Ce script est testé pour les fichiers de sauvegarde &quot;.BAK&quot; uniquement \n&#8211; Le script doit être modifié si l&#39;extension de sauvegarde n&#39;est pas &quot;.bak&quot;\n************************************************* *********** /\nSET NOCOUNT ON\n&#8211;Drop Tables s&#39;il existe dans la base de données\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;migration_lester&#39;)\nDROP TABLE migration_lester\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;header_lester&#39;)\nDROP TABLE header_lester\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;cmdshell_lester&#39;)\nDROP TABLE cmdshell_lester","html":"<p>&#8211; = LIMITATIONS = &#8211;\n&#8211; Ce script est testé pour les fichiers de sauvegarde &quot;.BAK&quot; uniquement \n&#8211; Le script doit être modifié si l&#039;extension de sauvegarde n&#039;est pas &quot;.bak&quot;\n************************************************* *********** /\nSET NOCOUNT ON\n&#8211;Drop Tables s&#039;il existe dans la base de données\ns&#039;il existe (sélectionnez name dans sysobjects où name = &#039;migration_lester&#039;)\nDROP TABLE migration_lester\ns&#039;il existe (sélectionnez name dans sysobjects où name = &#039;header_lester&#039;)\nDROP TABLE header_lester\ns&#039;il existe (sélectionnez name dans sysobjects où name = &#039;cmdshell_lester&#039;)\nDROP TABLE cmdshell_lester</p>"},{"id":"text-43","type":"text","heading":"","plain_text":"&#8211;Créer des tables \n&#8211; (table cmdshell_lester pour la commande cmdshell)\n&#8211; (table migration_lester pour la commande restore filelistonly)\n&#8211; (table header_lester pour la commande restore headeronly)\nCREATE TABLE cmdshell_lester (fentry varchar (1000))","html":"<p>&#8211;Créer des tables \n&#8211; (table cmdshell_lester pour la commande cmdshell)\n&#8211; (table migration_lester pour la commande restore filelistonly)\n&#8211; (table header_lester pour la commande restore headeronly)\nCREATE TABLE cmdshell_lester (fentry varchar (1000))</p>"},{"id":"text-44","type":"text","heading":"","plain_text":"CREATE TABLE migration_lester (LogicalName varchar (1024),\nPhysicalName varchar (4000), tapez char (1), FileGroupName varchar (50),\ntaille réelle, taille réelle)","html":"<p>CREATE TABLE migration_lester (LogicalName varchar (1024),\nPhysicalName varchar (4000), tapez char (1), FileGroupName varchar (50),\ntaille réelle, taille réelle)</p>"},{"id":"text-45","type":"text","heading":"","plain_text":"CREATE TABLE header_lester (BackupName varchar (50),\nBackupDescription varchar (100), BackupType int,\nExpirationDate nvarchar (50), Compressed int, Position int,\nDeviceType int, nom d&#39;utilisateur varchar (30), nom de serveur varchar (30),\nDatabaseName varchar (50), DatabaseVersion int,\nDatabaseCreationDate datetime, BackupSize bigint, binaire FirstLsn,\nBinaire LastLsn, binaire CheckpointLsn, binaire DifferentialBasLsn,\nBackupStartDate datetime, BackupFinishDate datetime, SortOrder int,\nCodePage int, UnicodeLocaleid int, UnicodeComparisonStyle int,\nCompatibilityLevel int, SoftwareVendorId int, SoftwareVersionMajor int,\nSoftwareVersionMinor int, SoftwareVersionBuild int,\nNom de la machine varchar (50), Flags int, BindingId nvarchar (50),\nRecoveryForkId nvarchar (50), collation nvarchar (50))","html":"<p>CREATE TABLE header_lester (BackupName varchar (50),\nBackupDescription varchar (100), BackupType int,\nExpirationDate nvarchar (50), Compressed int, Position int,\nDeviceType int, nom d&#039;utilisateur varchar (30), nom de serveur varchar (30),\nDatabaseName varchar (50), DatabaseVersion int,\nDatabaseCreationDate datetime, BackupSize bigint, binaire FirstLsn,\nBinaire LastLsn, binaire CheckpointLsn, binaire DifferentialBasLsn,\nBackupStartDate datetime, BackupFinishDate datetime, SortOrder int,\nCodePage int, UnicodeLocaleid int, UnicodeComparisonStyle int,\nCompatibilityLevel int, SoftwareVendorId int, SoftwareVersionMajor int,\nSoftwareVersionMinor int, SoftwareVersionBuild int,\nNom de la machine varchar (50), Flags int, BindingId nvarchar (50),\nRecoveryForkId nvarchar (50), collation nvarchar (50))</p>"},{"id":"text-46","type":"text","heading":"","plain_text":"&#8211;Déclare les variables\nDECLARE @path varchar (1024), @ restore varchar (1024)\nDECLARE @restoredb varchar (2000), @ extension varchar (1024), @ newpath_ldf varchar (1024)\nDECLARE @pathension varchar (1024), @ newpath_mdf varchar (1024), @ en-tête varchar (500)","html":"<p>&#8211;Déclare les variables\nDECLARE @path varchar (1024), @ restore varchar (1024)\nDECLARE @restoredb varchar (2000), @ extension varchar (1024), @ newpath_ldf varchar (1024)\nDECLARE @pathension varchar (1024), @ newpath_mdf varchar (1024), @ en-tête varchar (500)</p>"},{"id":"text-47","type":"text","heading":"","plain_text":"&#8211;Définir les valeurs sur les variables\nSET @newpath_mdf = &#39;C: &#39; &#8211; nouveau chemin dans lequel vous placerez le mdf\nSET @newpath_ldf = &#39;D: &#39; &#8211;nouveau chemin dans lequel vous placerez le ldf\nSET @path = &#39;D: &#39; &#8211;Path du fichier de sauvegarde\nSET @extension = &#39;BAK&#39;\nSET @pathension = &#39;dir / OD&#39;[email protected]+ &#39;*.&#39;[email protected]","html":"<p>&#8211;Définir les valeurs sur les variables\nSET @newpath_mdf = &#039;C: &#039; &#8211; nouveau chemin dans lequel vous placerez le mdf\nSET @newpath_ldf = &#039;D: &#039; &#8211;nouveau chemin dans lequel vous placerez le ldf\nSET @path = &#039;D: &#039; &#8211;Path du fichier de sauvegarde\nSET @extension = &#039;BAK&#039;\nSET @pathension = &#039;dir / OD&#039;[email protected]+ &#039;*.&#039;[email protected]</p>"},{"id":"text-48","type":"text","heading":"","plain_text":"&#8211;Insérer la valeur du shell de commande dans la table\nINSERT INTO cmdshell_lester exec master..xp_cmdshell @pathension\n&#8211;Supprimer les données des fichiers de sauvegarde, supprimer les valeurs nulles\nSUPPRIMER DE cmdshell_lester WHERE FEntry NE AIME PAS &#39;% .BAK%&#39; \nDELETE DE cmdshell_lester WHERE FEntry est NULL\n&#8211;Créez un curseur pour analyser tous les fichiers de sauvegarde nécessaires à la génération du script de restauration\nDECLARE @migrate varchar (1024)\nDÉCLARER la migration du CURSEUR POUR\nsélectionnez la sous-chaîne (FEntry, 40,50) sous le nom &#39;FEntry&#39; dans cmdshell_lester \nOPEN migrer\nFETCH NEXT FROM migrate INTO @migrate\nPENDANT QUE (@@ FETCH_STATUS = 0) COMMENCE\n&#8211; Ajout de la fonctionnalité pour obtenir le nom de base du fichier de sauvegarde.\nSET @header = &#39;RESTORE HEADERONLY FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39;\nINSERT INTO exec_lester exec (@header)\n&#8211;Obtenir les noms des mdf et ldf\nset @restore = &#39;RESTORE FILELISTONLY FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39;\nINSERT INTO migration_lester EXEC (@restore)\n&#8211;Mise à jour de la table pour ajouter le nouveau chemin + noms mdf / ldf\nUPDATE migration_lester SET nom physique = inversion (nom physique)\nUPDATE migration_lester SET nom physique = \nsous-chaîne (nom physique, 1, charindex (&#39;&#39;, nom physique) -1)","html":"<p>&#8211;Insérer la valeur du shell de commande dans la table\nINSERT INTO cmdshell_lester exec master..xp_cmdshell @pathension\n&#8211;Supprimer les données des fichiers de sauvegarde, supprimer les valeurs nulles\nSUPPRIMER DE cmdshell_lester WHERE FEntry NE AIME PAS &#039;% .BAK%&#039; \nDELETE DE cmdshell_lester WHERE FEntry est NULL\n&#8211;Créez un curseur pour analyser tous les fichiers de sauvegarde nécessaires à la génération du script de restauration\nDECLARE @migrate varchar (1024)\nDÉCLARER la migration du CURSEUR POUR\nsélectionnez la sous-chaîne (FEntry, 40,50) sous le nom &#039;FEntry&#039; dans cmdshell_lester \nOPEN migrer\nFETCH NEXT FROM migrate INTO @migrate\nPENDANT QUE (@@ FETCH_STATUS = 0) COMMENCE\n&#8211; Ajout de la fonctionnalité pour obtenir le nom de base du fichier de sauvegarde.\nSET @header = &#039;RESTORE HEADERONLY FROM DISK =&#039; + &#039;&#039; &#039;&#039;[email protected][email protected]+ &#039;&#039; &#039;&#039;\nINSERT INTO exec_lester exec (@header)\n&#8211;Obtenir les noms des mdf et ldf\nset @restore = &#039;RESTORE FILELISTONLY FROM DISK =&#039; + &#039;&#039; &#039;&#039;[email protected][email protected]+ &#039;&#039; &#039;&#039;\nINSERT INTO migration_lester EXEC (@restore)\n&#8211;Mise à jour de la table pour ajouter le nouveau chemin + noms mdf / ldf\nUPDATE migration_lester SET nom physique = inversion (nom physique)\nUPDATE migration_lester SET nom physique = \nsous-chaîne (nom physique, 1, charindex (&#039;&#039;, nom physique) -1)</p>"},{"id":"text-49","type":"text","heading":"","plain_text":"UPDATE migration_lester SET nom physique = @ newpath_mdf + reverse (nom physique) où type = &#39;D&#39;\nUPDATE migration_lester SET nom physique = @ newpath_ldf + reverse (nom physique) où type = &#39;L&#39;\n[email protected]@@@@@@@@@@@@@@@@@@@\n&#8211; Attribuez une valeur à la variable @restoredb pour contenir le script de base de données de restauration\nIF (select count (*) from migration_lester) = 2\nCOMMENCER\nSET @restoredb = &#39;RESTORE DATABASE&#39; + (sélectionnez top 1 DatabaseName dans header_lester)\n+ &#39;FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39; + &#39;WITH MOVE&#39; + &#39;&#39; &#39;&#39;\n+ (sélectionnez le nom logique de migration_lester où type = &#39;D&#39;) + &#39;&#39; &#39;&#39;\n+ &#39;TO&#39; + &#39;&#39; &#39;+ (sélectionnez le nom physique dans migration_lester WHERE nom physique tel que&#39;% mdf% &#39;)\n+ &#39;&#39; &#39;&#39; + &#39;, MOVE&#39; + &#39;&#39; &#39;&#39; + (sélectionnez le nom logique de migration_lester où type = &#39;L&#39;)\n+ &#39;&#39; &#39;&#39; + &#39;TO&#39; + &#39;&#39; &#39;&#39; + (sélectionnez le nom physique dans migration_lester \nWHERE nom physique comme &#39;% ldf%&#39;) + &#39;&#39; &#39;&#39;\nprint (@restoredb) \nFIN","html":"<p>UPDATE migration_lester SET nom physique = @ newpath_mdf + reverse (nom physique) où type = &#039;D&#039;\nUPDATE migration_lester SET nom physique = @ newpath_ldf + reverse (nom physique) où type = &#039;L&#039;\n[email protected]@@@@@@@@@@@@@@@@@@@\n&#8211; Attribuez une valeur à la variable @restoredb pour contenir le script de base de données de restauration\nIF (select count (*) from migration_lester) = 2\nCOMMENCER\nSET @restoredb = &#039;RESTORE DATABASE&#039; + (sélectionnez top 1 DatabaseName dans header_lester)\n+ &#039;FROM DISK =&#039; + &#039;&#039; &#039;&#039;[email protected][email protected]+ &#039;&#039; &#039;&#039; + &#039;WITH MOVE&#039; + &#039;&#039; &#039;&#039;\n+ (sélectionnez le nom logique de migration_lester où type = &#039;D&#039;) + &#039;&#039; &#039;&#039;\n+ &#039;TO&#039; + &#039;&#039; &#039;+ (sélectionnez le nom physique dans migration_lester WHERE nom physique tel que&#039;% mdf% &#039;)\n+ &#039;&#039; &#039;&#039; + &#039;, MOVE&#039; + &#039;&#039; &#039;&#039; + (sélectionnez le nom logique de migration_lester où type = &#039;L&#039;)\n+ &#039;&#039; &#039;&#039; + &#039;TO&#039; + &#039;&#039; &#039;&#039; + (sélectionnez le nom physique dans migration_lester \nWHERE nom physique comme &#039;% ldf%&#039;) + &#039;&#039; &#039;&#039;\nprint (@restoredb) \nFIN</p>"},{"id":"text-50","type":"text","heading":"","plain_text":"IF (sélectionnez le nombre (*) dans migration_lester)&gt; 2\nCOMMENCER\nSET @restoredb = \n&#39;RESTORE DATABASE&#39; + (sélectionnez top 1 DatabaseName dans header_lester) +\n&#39;FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39; + &#39;WITH MOVE&#39;\nDECLARE @multiple varchar (1000), @ physical varchar (1000)\nDÉCLARER PLUSIEURS CURSEURS POUR\nSélectionnez un nom logique, un nom physique dans le fichier migration_lester.\nOUVERT multiple\nFETCH NEXT FROM multiple INTO @ multiple, @ physical\nPENDANT (@@ FETCH_STATUS = 0)\nCOMMENCER\nENSEMBLE @[email protected]+ &#39;&#39; &#39;&#39;[email protected]+ &#39;&#39; &#39;&#39; + &#39;TO&#39; + &#39;&#39; &#39;&#39;[email protected]+ &#39;&#39; &#39;&#39; + &#39;,&#39; + &#39;MOVE&#39; + &#39;&#39;\nFETCH NEXT FROM multiple INTO @ multiple, @ physical\nFIN\nFermer plusieurs\nDEALLOCATE multiple\nSET @restoredb = sous-chaîne (@ restoreb, 1, len (@restoredb) -5)\nprint (@restoredb)\nFIN","html":"<p>IF (sélectionnez le nombre (*) dans migration_lester)&gt; 2\nCOMMENCER\nSET @restoredb = \n&#039;RESTORE DATABASE&#039; + (sélectionnez top 1 DatabaseName dans header_lester) +\n&#039;FROM DISK =&#039; + &#039;&#039; &#039;&#039;[email protected][email protected]+ &#039;&#039; &#039;&#039; + &#039;WITH MOVE&#039;\nDECLARE @multiple varchar (1000), @ physical varchar (1000)\nDÉCLARER PLUSIEURS CURSEURS POUR\nSélectionnez un nom logique, un nom physique dans le fichier migration_lester.\nOUVERT multiple\nFETCH NEXT FROM multiple INTO @ multiple, @ physical\nPENDANT (@@ FETCH_STATUS = 0)\nCOMMENCER\nENSEMBLE @[email protected]+ &#039;&#039; &#039;&#039;[email protected]+ &#039;&#039; &#039;&#039; + &#039;TO&#039; + &#039;&#039; &#039;&#039;[email protected]+ &#039;&#039; &#039;&#039; + &#039;,&#039; + &#039;MOVE&#039; + &#039;&#039;\nFETCH NEXT FROM multiple INTO @ multiple, @ physical\nFIN\nFermer plusieurs\nDEALLOCATE multiple\nSET @restoredb = sous-chaîne (@ restoreb, 1, len (@restoredb) -5)\nprint (@restoredb)\nFIN</p>"},{"id":"text-51","type":"text","heading":"","plain_text":"[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n&#8211; Lancez print @restoredb pour voir les bases de données à restaurer\n&#8211; Lorsque vous êtes prêt, exécutez exec (@restoredb)\n&#8211; EXEC (@restoredb)","html":"<p>[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n&#8211; Lancez print @restoredb pour voir les bases de données à restaurer\n&#8211; Lorsque vous êtes prêt, exécutez exec (@restoredb)\n&#8211; EXEC (@restoredb)</p>"},{"id":"text-52","type":"text","heading":"","plain_text":"[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n&#8211; Effacer les données à l&#39;intérieur des tables pour laisser la place à la prochaine \n&#8211;set d&#39;informations à mettre dans la variable @restoredb \nTRUNCATE TABLE migration_lester\nTRUNCATE TABLE header_lester\nFETCH NEXT FROM migrate INTO @migrate\nFIN\nFERMER la migration\nDEALLOCATE migrate\n[email protected]@@@@@@@@@@@@@@@@@@@","html":"<p>[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n&#8211; Effacer les données à l&#039;intérieur des tables pour laisser la place à la prochaine \n&#8211;set d&#039;informations à mettre dans la variable @restoredb \nTRUNCATE TABLE migration_lester\nTRUNCATE TABLE header_lester\nFETCH NEXT FROM migrate INTO @migrate\nFIN\nFERMER la migration\nDEALLOCATE migrate\n[email protected]@@@@@@@@@@@@@@@@@@@</p>"},{"id":"text-53","type":"text","heading":"","plain_text":"&#8211;Drop Tables \nDROP TABLE migration_lester\nDROP TABLE cmdshell_lester\nDROP TABLE header_lester","html":"<p>&#8211;Drop Tables \nDROP TABLE migration_lester\nDROP TABLE cmdshell_lester\nDROP TABLE header_lester</p>"},{"id":"text-54","type":"text","heading":"","plain_text":"=====================================","html":"<p>=====================================</p>"},{"id":"text-55","type":"text","heading":"","plain_text":"Je reçois des erreurs sur ce second &#8230; Msg 213, niveau 16, état 7, ligne 1\nLe nom de colonne ou le nombre de valeurs fournies ne correspond pas à la définition de la table.","html":"<p>Je reçois des erreurs sur ce second &#8230; Msg 213, niveau 16, état 7, ligne 1\nLe nom de colonne ou le nombre de valeurs fournies ne correspond pas à la définition de la table.</p>"},{"id":"text-56","type":"text","heading":"","plain_text":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]","html":"<p>Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]</p>"}],"sections":[{"id":"text-1","heading":"Text","content":"Salut greg,\nMerci encore et ma machine est un sql2008r2 ent.\nJe regarde ces liens et je ne suis pas sûr que ce soit ce que je voudrais faire pour cette configuration. J&#39;ai également trouvé deux scripts supplémentaires qui semblaient avoir été écrits pour des versions antérieures de SQL Server et je me demandais si vous pouviez y apporter des modifications. Je ne sais pas non plus s&#39;il faut poser cette question ici ou sur votre page de conseil de restauration.\nRestaurer toutes les bases de données d&#39;un répertoire"},{"id":"text-2","heading":"Text","content":"SET QUOTED_IDENTIFIER OFF \nALLER\nSET ANSI_NULLS ON \nALLER"},{"id":"text-3","heading":"Text","content":"si existe (sélectionnez * à partir de dbo.sysobjects où id = object_id (N &#39;[dbo].[sp_CSS_RestoreDir]&#39;) et OBJECTPROPERTY (id, N&#39;IsProcedure&#39;) = 1)\nprocédure de largage [dbo].[sp_CSS_RestoreDir]\nALLER"},{"id":"text-4","heading":"Text","content":"/ ************************************************ *************************************** /\n&#8211; Nom de la procédure: sp_CSS_RestoreDir\n&#8211; Objectif: restaurer une ou plusieurs sauvegardes de base de données à partir d&#39;un seul répertoire. Ce script lit tout \n&#8211; sauvegardes de bases de données trouvées dans le paramètre @restoreFromDir.\n&#8211;Toute sauvegarde de base de données correspondant au formulaire% _db_% sera restaurée.\n&#8211; les emplacements de fichier spécifiés dans le (s) paramètre (s) RestoreTo &#8230;. La base de données\n&#8211; sera restauré sous un nom de base de données basé sur la sauvegarde de la base de données\n&#8211;nom de fichier. Par exemple, Insurance_db_200305212302.BAK sera restauré dans\n&#8211;une base de données nommée Assurance. Les caractères précédant le texte &#39;_db_&#39; déterminent\n&#8211;le nom.\n&#8211;\n&#8211; Paramètres d&#39;entrée: @restoreFromDir &#8211; Le répertoire où se trouvent les sauvegardes de la base de données\n[email protected]    &#8211; Le répertoire dans lequel les fichiers de données (à savoir, MDF) seront restaurés\n[email protected]    &#8211; Le répertoire dans lequel les fichiers journaux (c&#39;est-à-dire LDF) seront restaurés. Si\n&#8211;Ce paramètre n&#39;est pas fourni, puis les fichiers journaux sont restaurés dans @restoreToDataDir.\n&#8211; @MatchFileList &#8211; défini sur &#39;Y&#39; pour restaurer la même structure de répertoires que celle contenue dans la sauvegarde,\n&#8211; permet également aux fichiers de données secondaires &#39;ndf&#39; d&#39;être dans un répertoire différent de celui des fichiers mdf\n&#8211; @DBName &#8211; Ne restaurez que cette base de données &#8211; sélectionne le dernier fichier bak\n&#8211;  \n&#8211; Paramètres de sortie: Aucun\n&#8211;\n&#8211; Valeurs de retour:     \n&#8211;\n&#8211; Rédigé par: Chris Gallelli &#8211; 8/22/03\n&#8212; Modifié par:       \n&#8211; Modifications: Bruce Canaday &#8211; 10/20/2003\n&#8211; Ajout des paramètres facultatifs @MatchFileList et @DBName\n&#8211; Bruce Canaday &#8211; 24/10/2003\n&#8211; Récupère le nom de la base de données en tant que caractères à gauche du plus à droite &#39;_db_&#39; dans le nom de fichier\n&#8211; Ceci est destiné à gérer des bases de données telles que ALIS_DB\n&#8211; Bruce Canaday &#8211; 28/10/2003\n&#8211; Lors de l’utilisation de @MatchFileList = &#39;Y&#39;, essayez de créer un répertoire qui n’existe pas\n&#8211; Bruce Canaday &#8211; 11/04/2003\n&#8211; Autoriser les espaces dans le nom du répertoire @restoreFromDir\n&#8211;\n&#8211; Exemple d&#39;exécution: exec sp_CSS_RestoreDir &#39;C:  sqldb  sql_backup&#39;, &#39;C:  sqldb  sql_data&#39;, &#39;C:  sqldb  sql_log&#39;\n&#8211;\n&#8211; Exécution alternative: exec sp_CSS_RestoreDir &#39;C:  sqldb  sql_backup&#39;, @MatchFileList = &#39;Y&#39;\n&#8211;\n&#8212; Revu par:       \n&#8211;\n/ ************************************************ *************************************** /"},{"id":"text-5","heading":"Text","content":"CREATE proc sp_CSS_RestoreDir \n              @restoreFromDir varchar (255),\n@restoreToDataDir varchar (255) = null,\n@restoreToLogDir varchar (255) = null,\n              @MatchFileList char (1) = &#39;N&#39;,\n              @OneDBName varchar (255) = null\ncomme"},{"id":"text-6","heading":"Text","content":"&#8211;Si un répertoire pour le fichier journal n&#39;est pas fourni, utilisez le répertoire de données\nSi @restoreToLogDir est null\nset @restoreToLogDir = @restoreToDataDir"},{"id":"text-7","heading":"Text","content":"mettre nocount sur"},{"id":"text-8","heading":"Text","content":"declare @filename varchar (40),\n@cmd varchar (500), \n@ cmd2 varchar (500), \n                @DataName varchar (255),\n@LogName varchar (255),\n                @LogicalName varchar (255), \n@PhysicalName varchar (255), \n@Type varchar (20), \n@FileGroupName varchar (255), \n@Size varchar (20), \n@MaxSize varchar (20),\n@restoreToDir varchar (255),\n                @searchName varchar (255),\n@DBName varchar (255),\n                @PhysicalFileName varchar (255)"},{"id":"text-9","heading":"Text","content":"create table #dirList (nomfichier varchar (100))\ncreate table #filelist (nom_videntiel (255), nom_variable (255), nom_variable (255), nom_variable (255), nom de groupe_variable (255), taille varchar (20), taille_variable (20))"},{"id":"text-10","heading":"Text","content":"&#8211;Obtenir la liste des sauvegardes de base de données qui se trouvent dans le répertoire restoreFromDir\nsi @OneDBName est null \n      sélectionnez @cmd = &#39;dir / b / on &quot;&#39; [email protected]+ &#39;&quot;&#39;\nautre\n      sélectionnez @cmd = &#39;dir / b / o-d / o-g &quot;&#39; [email protected]+ &#39;&quot;&#39;"},{"id":"text-11","heading":"Text","content":"insère #dirList exec master..xp_cmdshell @cmd"},{"id":"text-12","heading":"Text","content":"select * from #dirList où filename comme &#39;% _db_%&#39; &#8211; ordre par nom de fichier"},{"id":"text-13","heading":"Text","content":"si @OneDBName est null \n      déclarer le curseur BakFile_csr pour \n  sélectionnez * à partir de #dirList où nom_fichier ressemble à &#39;% _db_% bak&#39;, ordre par nom_fichier\nautre\n      begin &#8211; une seule base de données, ne pas classer par nom de fichier, prendre par défaut la dernière date / o-d parm dans la commande dir ci-dessus\n          select @searchName = @OneDBName + &#39;_db_% bak&#39;\n          déclarer le curseur BakFile_csr pour \n  sélectionnez top 1 * from #dirList où filename est comme @searchName\n      fin"},{"id":"text-14","heading":"Text","content":"ouvrir BakFile_csr\nrécupère BakFile_csr dans @filename"},{"id":"text-15","heading":"Text","content":"tandis que @@ fetch_status = 0\n      commencer\n              select @cmd = &quot;RESTORE FILELISTONLY FROM disk = &#39;&quot; + @restoreFromDir + &quot;&quot; + @filename + &quot;&#39;&quot;"},{"id":"text-16","heading":"Text","content":"insert #filelist exec (@cmd)"},{"id":"text-17","heading":"Text","content":"si @OneDBName est null \n                    select @dbName = left (@ nomfichier, datalength (@nomfichier) &#8211; patindex (&#39;% _bd _%&#39;, inverser (@nomfichier)) &#8211; 3)\n              autre\n    select @dbName = @OneDBName"},{"id":"text-18","heading":"Text","content":"select @cmd = &quot;RESTORE DATABASE&quot; + @dbName + \n&quot;FROM DISK = &#39;&quot; + @restoreFromDir + &quot;&quot; + @filename + &quot;&#39; WITH&quot;"},{"id":"text-19","heading":"Text","content":"IMPRESSION &#39;&#39; \n              IMPRESSION &#39;BASE DE DONNEES DE RESTAURATION&#39; + @dbName"},{"id":"text-20","heading":"Text","content":"déclarer le curseur DataFileCursor pour  \nSélectionnez LogicalName, PhysicalName, Type, FileGroupName, Size, MaxSize.\nde #filelist"},{"id":"text-21","heading":"Text","content":"ouvrir DataFileCursor\n              récupérer DataFileCursor dans @LogicalName, @PhysicalName, @Type, @FileGroupName, @Size, @MaxSize"},{"id":"text-22","heading":"Text","content":"tandis que @@ fetch_status = 0\n                    commencer\n                            if @MatchFileList! = &#39;Y&#39;\n                                  commencer &#8211; option RESTORE with MOVE \n            select @PhysicalFileName = reverse (sous-chaîne (reverse (rtrim (@PhysicalName))), 1, patindex (&#39;% %&#39;, reverse (rtrim (@PhysicalName)) &#8211; 1))"},{"id":"text-23","heading":"Text","content":"si @Type = &#39;L&#39;\n              sélectionnez @restoreToDir = @restoreToLogDir\n              autre\n              select @restoreToDir = @restoreToDataDir"},{"id":"text-24","heading":"Text","content":"sélectionnez @cmd = @cmd + \n                      &quot;MOVE&quot; &quot;+ @LogicalName +&quot; &#39;TO &quot;&quot; + @restoreToDir + &quot;&quot; + @PhysicalFileName + &quot;&#39;,&quot; \n                                  fin\n                            autre\n                                  begin &#8211; Correspond à la liste de fichiers, tente de créer tout répertoire manquant\n                                          sélectionnez @restoreToDir = left (@ PhysicalName, datalength (@PhysicalName) &#8211; patindex (&#39;% %&#39;, reverse (@PhysicalName)))\n                                          sélectionnez @ cmd2 = &quot;s&#39;il n&#39;existe pas&quot; [email protected]+ &quot;md&quot; [email protected]\n                                          exec master..xp_cmdshell @ cmd2\n                                  fin"},{"id":"text-25","heading":"Text","content":"récupérer DataFileCursor dans @LogicalName, @PhysicalName, @Type, @FileGroupName, @Size, @MaxSize"},{"id":"text-26","heading":"Text","content":"end &#8211; boucle DataFileCursor"},{"id":"text-27","heading":"Text","content":"fermer DataFileCursor\n      désallouer DataFileCursor"},{"id":"text-28","heading":"Text","content":"sélectionnez @cmd = @cmd + &#39;REPLACE&#39;\n              &#8211;select @cmd &#39;commande&#39;\n              EXEC (@CMD)"},{"id":"text-29","heading":"Text","content":"tronquer la table #filelist"},{"id":"text-30","heading":"Text","content":"récupère BakFile_csr dans @filename"},{"id":"text-31","heading":"Text","content":"fin &#8211; boucle BakFile_csr"},{"id":"text-32","heading":"Text","content":"fermer BakFile_csr\nlibère BakFile_csr"},{"id":"text-33","heading":"Text","content":"déposer table #dirList"},{"id":"text-34","heading":"Text","content":"revenir\nALLER"},{"id":"text-35","heading":"Text","content":"SET QUOTED_IDENTIFIER OFF \nALLER\nSET ANSI_NULLS ON \nALLER"},{"id":"text-36","heading":"Text","content":"Restaure automatiquement tous les fichiers .BAK de la base de données"},{"id":"text-37","heading":"Text","content":"/ ************************************************ ************\nScénario écrit par: Lester A. Policarpio\nAdresse électronique : [email protected]\nDate de création: 3 septembre 2007\n&#8211; = UPDATES = &#8211;"},{"id":"text-38","heading":"Text","content":"17 janvier 2008\n&#8211; Valeur sortie résolue de la variable @restoredb\n&#8211; Résolution du problème &quot;paramètre de longueur non valide&quot;"},{"id":"text-39","heading":"Text","content":"6 mai 2008\n&#8211; Suppression des variables inutilisées\n&#8211; Ajoutez la commande headeronly pour accepter le format de sauvegarde autre que SQL \n  (dbname_db_YYYYYMMDDHHMM.BAK)\n&#8211; Ajouter plus de commentaires"},{"id":"text-40","heading":"Text","content":"12 mai 2008\n&#8211; Accepter les fichiers de sauvegarde avec plusieurs NDF"},{"id":"text-41","heading":"Text","content":"23 mai 2008\n&#8211; Résolution du problème lorsque RESTORE HEADERONLY génère plusieurs valeurs."},{"id":"text-42","heading":"Text","content":"&#8211; = LIMITATIONS = &#8211;\n&#8211; Ce script est testé pour les fichiers de sauvegarde &quot;.BAK&quot; uniquement \n&#8211; Le script doit être modifié si l&#39;extension de sauvegarde n&#39;est pas &quot;.bak&quot;\n************************************************* *********** /\nSET NOCOUNT ON\n&#8211;Drop Tables s&#39;il existe dans la base de données\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;migration_lester&#39;)\nDROP TABLE migration_lester\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;header_lester&#39;)\nDROP TABLE header_lester\ns&#39;il existe (sélectionnez name dans sysobjects où name = &#39;cmdshell_lester&#39;)\nDROP TABLE cmdshell_lester"},{"id":"text-43","heading":"Text","content":"&#8211;Créer des tables \n&#8211; (table cmdshell_lester pour la commande cmdshell)\n&#8211; (table migration_lester pour la commande restore filelistonly)\n&#8211; (table header_lester pour la commande restore headeronly)\nCREATE TABLE cmdshell_lester (fentry varchar (1000))"},{"id":"text-44","heading":"Text","content":"CREATE TABLE migration_lester (LogicalName varchar (1024),\nPhysicalName varchar (4000), tapez char (1), FileGroupName varchar (50),\ntaille réelle, taille réelle)"},{"id":"text-45","heading":"Text","content":"CREATE TABLE header_lester (BackupName varchar (50),\nBackupDescription varchar (100), BackupType int,\nExpirationDate nvarchar (50), Compressed int, Position int,\nDeviceType int, nom d&#39;utilisateur varchar (30), nom de serveur varchar (30),\nDatabaseName varchar (50), DatabaseVersion int,\nDatabaseCreationDate datetime, BackupSize bigint, binaire FirstLsn,\nBinaire LastLsn, binaire CheckpointLsn, binaire DifferentialBasLsn,\nBackupStartDate datetime, BackupFinishDate datetime, SortOrder int,\nCodePage int, UnicodeLocaleid int, UnicodeComparisonStyle int,\nCompatibilityLevel int, SoftwareVendorId int, SoftwareVersionMajor int,\nSoftwareVersionMinor int, SoftwareVersionBuild int,\nNom de la machine varchar (50), Flags int, BindingId nvarchar (50),\nRecoveryForkId nvarchar (50), collation nvarchar (50))"},{"id":"text-46","heading":"Text","content":"&#8211;Déclare les variables\nDECLARE @path varchar (1024), @ restore varchar (1024)\nDECLARE @restoredb varchar (2000), @ extension varchar (1024), @ newpath_ldf varchar (1024)\nDECLARE @pathension varchar (1024), @ newpath_mdf varchar (1024), @ en-tête varchar (500)"},{"id":"text-47","heading":"Text","content":"&#8211;Définir les valeurs sur les variables\nSET @newpath_mdf = &#39;C: &#39; &#8211; nouveau chemin dans lequel vous placerez le mdf\nSET @newpath_ldf = &#39;D: &#39; &#8211;nouveau chemin dans lequel vous placerez le ldf\nSET @path = &#39;D: &#39; &#8211;Path du fichier de sauvegarde\nSET @extension = &#39;BAK&#39;\nSET @pathension = &#39;dir / OD&#39;[email protected]+ &#39;*.&#39;[email protected]"},{"id":"text-48","heading":"Text","content":"&#8211;Insérer la valeur du shell de commande dans la table\nINSERT INTO cmdshell_lester exec master..xp_cmdshell @pathension\n&#8211;Supprimer les données des fichiers de sauvegarde, supprimer les valeurs nulles\nSUPPRIMER DE cmdshell_lester WHERE FEntry NE AIME PAS &#39;% .BAK%&#39; \nDELETE DE cmdshell_lester WHERE FEntry est NULL\n&#8211;Créez un curseur pour analyser tous les fichiers de sauvegarde nécessaires à la génération du script de restauration\nDECLARE @migrate varchar (1024)\nDÉCLARER la migration du CURSEUR POUR\nsélectionnez la sous-chaîne (FEntry, 40,50) sous le nom &#39;FEntry&#39; dans cmdshell_lester \nOPEN migrer\nFETCH NEXT FROM migrate INTO @migrate\nPENDANT QUE (@@ FETCH_STATUS = 0) COMMENCE\n&#8211; Ajout de la fonctionnalité pour obtenir le nom de base du fichier de sauvegarde.\nSET @header = &#39;RESTORE HEADERONLY FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39;\nINSERT INTO exec_lester exec (@header)\n&#8211;Obtenir les noms des mdf et ldf\nset @restore = &#39;RESTORE FILELISTONLY FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39;\nINSERT INTO migration_lester EXEC (@restore)\n&#8211;Mise à jour de la table pour ajouter le nouveau chemin + noms mdf / ldf\nUPDATE migration_lester SET nom physique = inversion (nom physique)\nUPDATE migration_lester SET nom physique = \nsous-chaîne (nom physique, 1, charindex (&#39;&#39;, nom physique) -1)"},{"id":"text-49","heading":"Text","content":"UPDATE migration_lester SET nom physique = @ newpath_mdf + reverse (nom physique) où type = &#39;D&#39;\nUPDATE migration_lester SET nom physique = @ newpath_ldf + reverse (nom physique) où type = &#39;L&#39;\n[email protected]@@@@@@@@@@@@@@@@@@@\n&#8211; Attribuez une valeur à la variable @restoredb pour contenir le script de base de données de restauration\nIF (select count (*) from migration_lester) = 2\nCOMMENCER\nSET @restoredb = &#39;RESTORE DATABASE&#39; + (sélectionnez top 1 DatabaseName dans header_lester)\n+ &#39;FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39; + &#39;WITH MOVE&#39; + &#39;&#39; &#39;&#39;\n+ (sélectionnez le nom logique de migration_lester où type = &#39;D&#39;) + &#39;&#39; &#39;&#39;\n+ &#39;TO&#39; + &#39;&#39; &#39;+ (sélectionnez le nom physique dans migration_lester WHERE nom physique tel que&#39;% mdf% &#39;)\n+ &#39;&#39; &#39;&#39; + &#39;, MOVE&#39; + &#39;&#39; &#39;&#39; + (sélectionnez le nom logique de migration_lester où type = &#39;L&#39;)\n+ &#39;&#39; &#39;&#39; + &#39;TO&#39; + &#39;&#39; &#39;&#39; + (sélectionnez le nom physique dans migration_lester \nWHERE nom physique comme &#39;% ldf%&#39;) + &#39;&#39; &#39;&#39;\nprint (@restoredb) \nFIN"},{"id":"text-50","heading":"Text","content":"IF (sélectionnez le nombre (*) dans migration_lester)&gt; 2\nCOMMENCER\nSET @restoredb = \n&#39;RESTORE DATABASE&#39; + (sélectionnez top 1 DatabaseName dans header_lester) +\n&#39;FROM DISK =&#39; + &#39;&#39; &#39;&#39;[email protected][email protected]+ &#39;&#39; &#39;&#39; + &#39;WITH MOVE&#39;\nDECLARE @multiple varchar (1000), @ physical varchar (1000)\nDÉCLARER PLUSIEURS CURSEURS POUR\nSélectionnez un nom logique, un nom physique dans le fichier migration_lester.\nOUVERT multiple\nFETCH NEXT FROM multiple INTO @ multiple, @ physical\nPENDANT (@@ FETCH_STATUS = 0)\nCOMMENCER\nENSEMBLE @[email protected]+ &#39;&#39; &#39;&#39;[email protected]+ &#39;&#39; &#39;&#39; + &#39;TO&#39; + &#39;&#39; &#39;&#39;[email protected]+ &#39;&#39; &#39;&#39; + &#39;,&#39; + &#39;MOVE&#39; + &#39;&#39;\nFETCH NEXT FROM multiple INTO @ multiple, @ physical\nFIN\nFermer plusieurs\nDEALLOCATE multiple\nSET @restoredb = sous-chaîne (@ restoreb, 1, len (@restoredb) -5)\nprint (@restoredb)\nFIN"},{"id":"text-51","heading":"Text","content":"[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n&#8211; Lancez print @restoredb pour voir les bases de données à restaurer\n&#8211; Lorsque vous êtes prêt, exécutez exec (@restoredb)\n&#8211; EXEC (@restoredb)"},{"id":"text-52","heading":"Text","content":"[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n&#8211; Effacer les données à l&#39;intérieur des tables pour laisser la place à la prochaine \n&#8211;set d&#39;informations à mettre dans la variable @restoredb \nTRUNCATE TABLE migration_lester\nTRUNCATE TABLE header_lester\nFETCH NEXT FROM migrate INTO @migrate\nFIN\nFERMER la migration\nDEALLOCATE migrate\n[email protected]@@@@@@@@@@@@@@@@@@@"},{"id":"text-53","heading":"Text","content":"&#8211;Drop Tables \nDROP TABLE migration_lester\nDROP TABLE cmdshell_lester\nDROP TABLE header_lester"},{"id":"text-54","heading":"Text","content":"====================================="},{"id":"text-55","heading":"Text","content":"Je reçois des erreurs sur ce second &#8230; Msg 213, niveau 16, état 7, ligne 1\nLe nom de colonne ou le nombre de valeurs fournies ne correspond pas à la définition de la table."},{"id":"text-56","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":"https://tutos-gameserver.fr/wp-content/uploads/2019/05/1070_NewsletterImage.png"},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2019/05/03/script-simple-pour-sauvegarder-toutes-les-bases-de-donnees-sql-server-serveur-dimpression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/script-simple-pour-sauvegarder-toutes-les-bases-de-donnees-sql-server-serveur-dimpression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/05/03/script-simple-pour-sauvegarder-toutes-les-bases-de-donnees-sql-server-serveur-dimpression/llm.json","type":"application/json"},{"rel":"llm-manifest","href":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","type":"application/json"}],"http_headers":{"X-LLM-Friendly":"1","X-LLM-Schema":"1.1.0","Content-Security-Policy":"default-src 'none'; img-src * data:; style-src 'unsafe-inline'"},"license":"CC BY-ND 4.0","attribution_required":true,"allow_cors":false}