{"version":"1.1","schema_version":"1.1.0","plugin_version":"1.1.2","url":"https://tutos-gameserver.fr/2019/10/16/comment-creer-un-script-des-mappages-dutilisateurs-pour-les-connexions-utilisateurs-serveur-dimpression/","llm_html_url":"https://tutos-gameserver.fr/2019/10/16/comment-creer-un-script-des-mappages-dutilisateurs-pour-les-connexions-utilisateurs-serveur-dimpression/llm","llm_json_url":"https://tutos-gameserver.fr/2019/10/16/comment-creer-un-script-des-mappages-dutilisateurs-pour-les-connexions-utilisateurs-serveur-dimpression/llm.json","manifest_url":"https://tutos-gameserver.fr/llm-endpoints-manifest.json","language":"fr-FR","locale":"fr_FR","title":"Comment créer un script des mappages d&#39;utilisateurs pour les connexions  Utilisateurs?\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-10-16T13:11:14+00:00","modified_at":"2019-10-16T13:11:14+00:00","word_count":4387,"reading_time_seconds":1317,"summary":"Vous ne savez pas si c&#39;est exactement ce dont vous avez besoin, mais jetez un coup d&#39;œil: / * ============================================= =============================================== ===================== * / / * = Documentation d&#39;audit d&#39;audit de sécurité d&#39;instance = * / / * ============================================= =============================================== ===================== * / / * Date de création: 28/12/2011  Par: VikingDBA  Modifications:  08/07/2012 Modifié pour [&hellip;]","summary_points":["Vous ne savez pas si c&#39;est exactement ce dont vous avez besoin, mais jetez un coup d&#39;œil:\n/ * ============================================= =============================================== ===================== * /\n/ * = Documentation d&#39;audit d&#39;audit de sécurité d&#39;instance = * /\n/ * ============================================= =============================================== ===================== * /\n/ * Date de création: 28/12/2011\n Par: VikingDBA\n Modifications:\n 08/07/2012 Modifié pour faire aussi des autorisations au niveau du serveur (comme VIEW ANY DATABASE, ou VIEW SERVER STATE)\n 01/09/2013 Changement pour imprimer les scripts afin de créer les instructions CREATE ROLE et CREATE USER\n 31/01/2013 Modifié pour imprimer les instructions de niveau serveur et les instructions pour définir les valeurs par défaut\nbases de données pour les utilisateurs\n \nDépendances:\n Ce script dépend des éléments suivants pour exister:\n aucun\n\n Sommaire:\n Ce script crée la documentation de toutes les bases de données d’une instance, y compris les autorisations au niveau du serveur et le rôle de la base de données.","autorisations et autorisations individuelles des objets de base de données.","Notez que le fait de changer les ensembles @outputtype = 1 pour columnar (style de rapport) et que la valeur 2 crée les instructions d&#39;affectation\n\n REMARQUE: s&#39;exécute pour toutes les bases de données, sauf si une base de données spécifique est utilisée dans la clause WHERE ci-dessous.","Consultez également la section Variables à définir par l&#39;utilisateur ci-dessous pour savoir si des variables doivent être définies."],"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":"1888f6de2a9184e0f2867828a1b852e9","plain_text":"Vous ne savez pas si c&#39;est exactement ce dont vous avez besoin, mais jetez un coup d&#39;œil:\n/ * ============================================= =============================================== ===================== * /\n/ * = Documentation d&#39;audit d&#39;audit de sécurité d&#39;instance = * /\n/ * ============================================= =============================================== ===================== * /\n/ * Date de création: 28/12/2011\n Par: VikingDBA\n Modifications:\n 08/07/2012 Modifié pour faire aussi des autorisations au niveau du serveur (comme VIEW ANY DATABASE, ou VIEW SERVER STATE)\n 01/09/2013 Changement pour imprimer les scripts afin de créer les instructions CREATE ROLE et CREATE USER\n 31/01/2013 Modifié pour imprimer les instructions de niveau serveur et les instructions pour définir les valeurs par défaut\nbases de données pour les utilisateurs\n \nDépendances:\n Ce script dépend des éléments suivants pour exister:\n aucun\n\n Sommaire:\n Ce script crée la documentation de toutes les bases de données d’une instance, y compris les autorisations au niveau du serveur et le rôle de la base de données.\n autorisations et autorisations individuelles des objets de base de données.\n\nNotez que le fait de changer les ensembles @outputtype = 1 pour columnar (style de rapport) et que la valeur 2 crée les instructions d&#39;affectation\n\n REMARQUE: s&#39;exécute pour toutes les bases de données, sauf si une base de données spécifique est utilisée dans la clause WHERE ci-dessous.\n Consultez également la section Variables à définir par l&#39;utilisateur ci-dessous pour savoir si des variables doivent être définies.\n* /\n\nUtilisez MASTER\n\nSET NOCOUNT ON\n\n\n/ * ============================================= =============================================== ================== * /\n- Audit de sécurité pour les rôles de serveur\nDECLARE @sr varchar (100)\nDECLARE @mn varchar (150)\nDECLARE @cmd varchar (4000)\nDECLARE @ col1nm varchar (200)\nDECLARE @ col2nm varchar (200)\nDECLARE @ col3nm varchar (200)\nDECLARE @ col4nm varchar (200)\nDECLARE @ col5nm varchar (200)\nDECLARE @ col6nm varchar (200)\nDECLARE @ col7nm varchar (200)\nDECLARE @ col8nm varchar (200)\nDECLARE @ col9nm varchar (200)\nDECLARE @ col10nm varchar (200)\nDECLARE @ col11nm varchar (200)\nDECLARE @ col12nm varchar (200)\nDECLARE @ col13nm varchar (200)\nDECLARE @ col14nm varchar (200)\nDECLARE @ col15nm varchar (200)\nDECLARE @ col16nm varchar (200)\nDECLARE @ col17nm varchar (200)\nDECLARE @ col18nm varchar (200)\nDECLARE @ col19nm varchar (200)\nDECLARE @ col20nm varchar (200)\nDECLARE @ col1len int\nDECLARE @ col2len int\nDECLARE @ col3len int\nDECLARE @ col4len int\nDECLARE @ col5len int\nDECLARE @ col6len int\nDECLARE @ col7len int\nDECLARE @ col8len int\nDECLARE @ col9len int\nDECLARE @ col10len int\nDECLARE @ col11len int\nDECLARE @ col12len int\nDECLARE @ col13len int\nDECLARE @ col14len int\nDECLARE @ col15len int\nDECLARE @ col16len int\nDECLARE @ col17len int\nDECLARE @ col18len int\nDECLARE @ col19len int\nDECLARE @ col20len int\nDECLARE @ col1max int\nDECLARE @ col2max int\nDECLARE @ col3max int\nDECLARE @ col4max int\nDECLARE @ col5max int\nDECLARE @ col6max int\nDECLARE @ col7max int\nDECLARE @ col8max int\nDECLARE @ col9max int\nDECLARE @ col10max int\nDECLARE @ col11max int\nDECLARE @ col12max int\nDECLARE @ col13max int\nDECLARE @ col14max int\nDECLARE @ col15max int\nDECLARE @ col16max int\nDECLARE @ col17max int\nDECLARE @ col18max int\nDECLARE @ col19max int\nDECLARE @ col20max int\nDECLARE @ col1min int\nDECLARE @ col2min int\nDECLARE @ col3min int\nDECLARE @ col4min int\nDECLARE @ col5min int\nDECLARE @ col6min int\nDECLARE @ col7min int\nDECLARE @ col8min int\nDECLARE @ col9min int\nDECLARE @ col10min int\nDECLARE @ col11min int\nDECLARE @ col12min int\nDECLARE @ col13min int\nDECLARE @ col14min int\nDECLARE @ col15min int\nDECLARE @ col16min int\nDECLARE @ col17min int\nDECLARE @ col18min int\nDECLARE @ col19min int\nDECLARE @ col20min int\nDECLARE @rn varchar (200)\nDECLARE @un varchar (200)\nDECLARE @ut varchar (200)\nDECLARE @sd varchar (200)\nDECLARE @pn varchar (200)\nDECLARE @sn varchar (200)\nDÉCLARE @on varchar (200)\nDECLARE @pd varchar (200)\nDÉCLARE @sdmax int\nDECLARE @pnmax int\nDÉCLARE @snmax int\nDÉCLARER @onmax int\nDECLARE @pdmax int\nDECLARE @unmax int\nDECLARE @rnmax int\nDÉCLARE @utmax int\nDECLARE @outputtype int\nDECLARE @prodlevel varchar (25)\nDECLARE @version varchar (250)\nDEClARE @prodver varchar (50)\nDECLARE @edition varchar (50)\nDÉCLARER bit @includeobjlvlperms\nDECLARE @includeroleinfo bit\nDECLARE @includedefaultdb bit\nDECLARE @usnm varchar (128)\nDÉCLARE @ustp varchar (60)\nDECLARE @stdsc varchar (60)\nDECLARE @permnm varchar (128)\nDECLARE @collationname varchar (200)\nDECLARE @lineval varchar (2000)\nDECLARE @loginname varchar (100)\nDECLARE @dbnametouse sysname\n\n/ * ============================================= ============================================== * /\n- Variables paramétrables par l&#39;utilisateur\nSET @outputtype = 1 - 1 = en colonne 2 = instructions d&#39;affectation\nSET @includeobjlvlperms = 1\nSET @includeroleinfo = 1\nSET @includedefaultdb = 1\n/ * ============================================= ============================================== * /\n\nSELECT @ prodlevel = CONVERT (varchar (25), SERVERPROPERTY (&#39;ProductLevel&#39;))\nSELECT @ version = CONVERT (varchar (250), @@ VERSION)\nSELECT @ prodver = CONVERT (varchar (50), SERVERPROPERTY (&#39;ProductVersion&#39;))\nSELECT @ edition = CONVERT (varchar (50), SERVERPROPERTY (&#39;Edition&#39;))\n/ * ============================================= ============================= /\n--Trouver une ligne de démarcation\nDECLARE @lvaltouse varchar (2000)\nDECLARE @lvallength int\nDECLARE @lvalct int\nDECLARE @spotcat int\nDECLARE @spotcatval int\nDECLARE @ lval1 varchar (2000)\nDECLARE @ lval2 varchar (2000)\nDECLARE @ lval3 varchar (2000)\nDECLARE @ lval4 varchar (2000)\nDECLARE @ lval5 varchar (2000)\nDECLARE @ lval6 varchar (2000)\nSET @lvaltouse = @version\nSET @lvallength = LEN (@lvaltouse)\nSET @lvalct = 1\nSET @spotcat = 1\nSET @ lval1 = &#39;&#39;\nSET @ lval2 = &#39;&#39;\nSET @ lval3 = &#39;&#39;\nSET @ lval4 = &#39;&#39;\nSET @ lval5 = &#39;&#39;\nSET @ lval6 = &#39;&#39;\nPENDANT @spotcat &lt;= @lvallength\n COMMENCER\n SET @spotcatval = ASCII (SUBSTRING (@ lvaltouse, @ spotcat, 1))\n if @spotcatval = 10 - valeur recherchée\n SET @lvalct = @lvalct + 1 - défini pour passer à la ligne suivante et commencer à la construire\n else - ajoute à la ligne de valeur actuelle\n COMMENCER\n if @spotcatval &lt;&gt; 9 - valeurs que nous voulons exclure\n COMMENCER\n si @lvalct = 1\n SET @ lval1 = @ lval1 + CHAR (@spotcatval)\n si @lvalct = 2\n SET @ lval2 = @ lval2 + CHAR (@spotcatval)\n si @lvalct = 3\n SET @ lval3 = @ lval3 + CHAR (@spotcatval)\n si @lvalct = 4\n SET @ lval4 = @ lval4 + CHAR (@spotcatval)\n si @lvalct = 5\n SET @ lval5 = @ lval5 + CHAR (@spotcatval)\n si @lvalct = 6\n SET @ lval6 = @ lval6 + CHAR (@spotcatval)\n FIN\n FIN\n SET @spotcat = @spotcat + 1\n FIN\n --PRINT &#39;Ligne à scinder =&#39; + @lvaltouse\n --PRINT &#39;line1 =&#39; + @ lval1\n --PRINT &#39;line2 =&#39; + @ lval2\n --PRINT &#39;line3 =&#39; + @ lval3\n --PRINT &#39;line4 =&#39; + @ lval4\n --PRINT &#39;line5 =&#39; + @ lval5\n --PRINT &#39;line6 =&#39; + @ lval6\n/ * ============================================= ============================== /\nCREATE TABLE #dummyuserassign\n(RecID int IDENTITY,\nLineVal varchar (2000)\n)\n\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nIMPRIMER &#39;Audit de sécurité pour instance de serveur&#39; + CONVERT (varchar (128), @@ nomserveur)\nsi @outputtype = 2\n IMPRIMER &#39;Déclarations d&#39;attribution&#39;\nPRINT &#39;For&#39; + CONVERT (varchar (128), getdate (), 101) + &#39;&#39; + CONVERT (varchar (128), getdate (), 108)\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nPRINT &#39;Version du serveur SQL:&#39; + @ lval1\nIMPRIMER &#39;&#39; + @ lval4\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nPRINT &#39;REMARQUE: veillez à obtenir la liste des connexions à l&#39;aide de la procédure stockée sp_help_revlogin de la base de données master.&#39;\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nIMPRIMER &#39;Paramètres de sécurité du rôle serveur&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;\n\n\n\n\nCREATE TABLE #rolememberdummy\n(ServerRole varchar (100),\nNom du membre varchar (150),\nMemberSID varchar (2000)\n)\nCREATE TABLE #dummyDBPerms\n(StateDesc varchar (200),\n PermName varchar (200),\n SchemaName varchar (200),\n ObjectName varchar (200),\n Nom d&#39;utilisateur varchar (200),\n ObjectType varchar (200),\n Type d&#39;utilisateur varchar (200)\n)\n\n\n- Audit de sécurité\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;sysadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;securityadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;serveradmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;dbcreator&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;diskadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;processadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;setupadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;bulkadmin&#39;\n\n\n\nSET @ col1nm = &#39;Role&#39;\nSET @ col1len = 20\nSET @ col2nm = &#39;&#39;\nSET @ col2len = 8\nSET @ col3nm = &#39;Nom du membre&#39;\nSET @ col3len = 30\nIMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm\nPRINT REPLICATE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICATE (&#39;=&#39;, @ col3len)\n\n\n\n\n\n\n--SELECT CONVERT (varchar (30), ServerRole) en tant que ServerRole, CONVERT (varchar (30), MemberName) AS MemberName FROM #rolememberdummy\nDÉCLARER backupfiles CURSEUR POUR\nSELECT ServerRole, MemberName FROM #rolememberdummy\n\nOPEN backupFiles\n\n- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @sr, @mn\n\nWHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @ col1nm = @sr\n SET @ col1len = 20\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 8\n SET @ col3nm = @mn\n SET @ col3len = 30\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm\n\n\n FETCH NEXT FROM backupFiles INTO @sr, @mn\nFIN\n\nFERMER backupFiles\nDEALLOCATE backupfiles\n\nDROP TABLE #rolememberdummy\n\n\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;\nIMPRIMER &#39;============================================= =============================================== ========= &#39;\nIMPRIMER &#39;Autorisations au niveau du serveur&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;\n\nCREATE TABLE #serverpermdummy\n(Nom d&#39;utilisateur varchar (128),\nType d&#39;utilisateur varchar (60),\nStateDesc varchar (60),\nPermName varchar (128)\n)\n\nINSERT INTO #serverpermdummy\nSELECT l.name comme nom d&#39;utilisateur, l.type_desc AS UserType, p.state_desc AS StateDesc, p.permission_name AS PermName\nFROM sys.server_permissions AS p\nJOIN sys.server_principals AS l ON p.grantee_principal_id = l.principal_id\nWHERE ((nom_autorisation &lt;&gt; &#39;CONNECT SQL&#39; ET nom_autorisation &lt;&gt; &#39;CONNECT&#39;) OU p.state_desc = &#39;DENY&#39;) ET l.type_desc &lt;&gt; &#39;CERTIFICATE_MAPPED_LOGIN&#39; ET l.nom NE PAS LIKE &#39;% # MS_%&#39;\nORDER BY l.principal_id\n\n--SELECT * FROM sys.server_principals\n\nSET @ col1nm = &#39;Nom d&#39;utilisateur&#39;\nSET @ col1len = 20\nSET @ col2nm = &#39;&#39;\nSET @ col2len = 8\nSET @ col3nm = &#39;Type d&#39;utilisateur&#39;\nSET @ col3len = 20\nSET @ col4nm = &#39;&#39;\nSET @ col4len = 8\nSET @ col5nm = &#39;State Desc&#39;\nSET @ col5len = 20\nSET @ col6nm = &#39;&#39;\nSET @ col6len = 8\nSET @ col7nm = &#39;Permission&#39;\nSET @ col7len = 30\n\nSET @ col1min = LEN (@ col1nm)\nSET @ col3min = LEN (@ col3nm)\nSET @ col5min = LEN (@ col5nm)\nSET @ col7min = LEN (@ col7nm)\n\n--Obtenir la longueur de la plus longue occurrence des colonnes\nSELECT @ col1max = ISNULL (MAX (len (LTRIM (RTRIM (UserName)))), 0) FROM #serverpermdummy\nSELECT @ col3max = ISNULL (MAX (len (LTRIM (RTRIM (UserType)))), 0) FROM #serverpermdummy\nSELECT @ col5max = ISNULL (MAX (len (LTRIM (RTRIM (StateDesc)))), 0) FROM #serverpermdummy\nSELECT @ col7max = ISNULL (MAX (len (LTRIM (RTRIM (PermName)))), 0) FROM #serverpermdummy\n\n\n- Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\nif @ col1max &lt;@ col1min SET @ col1len = @ col1min sinon SET @ col1len = @ col1max\nsi @ col3max &lt;@ col3min SET @ col3len = @ col3min sinon SET @ col3len = @ col3max\nsi @ col5max &lt;@ col5min SET @ col5len = @ col5min sinon SET @ col5len = @ col5max\nsi @ col7max &lt;@ col7min SET @ col7len = @ col7min sinon SET @ col7len = @ col7max\n\nsi @outputtype = 1\n COMMENCER\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len -len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm))\n PRINT REPLICATE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICATE (&#39;=&#39;, @ col3len) + SPACE (@ col4len) + REPLICAT (&#39;=&#39;, @ col5len) + SPACE (@ col6len) + REPLICATE (&#39;=&#39;, @ col7len)\n FIN\nautre\n si EXISTS (SELECT ISNULL (UserName, &#39;&#39;) AS UserName, ISNULL (UserType, &#39;&#39;) AS UserType, ISNULL (StateDesc, &#39;&#39;) AS StateDesc, ISNULL (PermName, &#39;&#39;) AS PermName FROM nom_serveurpermdummy)\n IMPRIMER &#39;UTILISER le maître;&#39;\n\n\nDÉCLARER backupfiles CURSEUR POUR\nSELECT ISNULL (UserName, &#39;&#39;) AS UserName, ISNULL (UserType, &#39;&#39;) AS UserType, ISNULL (StateDesc, &#39;&#39;) AS StateDesc, ISNULL (PermName, &#39;&#39;) AS PermName FROM #serverpermdummy\n\nOPEN backupFiles\n\n- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @usnm, @ustp, @stdsc, @permnm\n\n\nWHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @ col1nm = @usnm\n SET @ col2nm = &#39;&#39;\n SET @ col3nm = @ustp\n SET @ col4nm = &#39;&#39;\n SET @ col5nm = @stdsc\n SET @ col6nm = &#39;&#39;\n SET @ col7nm = @permnm\n si @outputtype = 1\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len -len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm))\n autre\n PRINT @stdsc + &#39;&#39; + @permnm + &#39;TO&#39; + @usnm + &#39;;&#39;\n\n\n FETCH NEXT FROM backupFiles INTO @usnm, @ustp, @stdsc, @permnm\nFIN\n\nFERMER backupFiles\nDEALLOCATE backupfiles\n\n\nDROP TABLE #serverpermdummy\n\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;\nIMPRIMER &#39;============================================= =============================================== ========= &#39;\nIMPRIMER &#39;Information par base de données&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;\n\nCREATE TABLE #DummyDBDesc\n(RecID int IDENTITY NOT NULL,\n NomServeur varchar (128) NULL,\n DBName varchar (100) NULL,\n Modèle de restauration varchar (10) NULL,\n CompatibilityLevel varchar (30) NULL,\n ReadWriteDesc varchar (10) NULL\n)\nCREATE TABLE #dummyDBRoles\n(RoleName varchar (200),\n Nom d&#39;utilisateur varchar (200),\n Type d&#39;utilisateur varchar (200)\n)\n\nCREATE TABLE #dummyrolelist\n(Nom de rôle varchar (200)\n)\n\nCREATE TABLE #dummyDBUsers\n(Nom d&#39;utilisateur varchar (200),\n Type d&#39;utilisateur varchar (200)\n)\nINSERT INTO #DummyDBDesc\nsélectionnez CONVERT (varchar (128), @@ nom_serveur) AS ServerName, CONVERT (varchar (100), nom) en tant que DBName, CONVERT (varchar (10), recovery_model_desc) en tant que RecoveryModel, --database Base,\nCASE niveau_compatibilité\nWHEN 80 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2000 *&#39;\nWHEN 90 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2005&#39;\nWHEN 100 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2008&#39;\nWHEN 105 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2008 R2&#39;\nWHEN 110 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2012&#39;\nELSE CONVERT (varchar (4), niveau_compatibilité)\nEND AS CompatibilityLevel,\nCASE is_read_only\nQUAND 0 ALORS CONVERTIR (varchar (10), &#39;RW&#39;)\nELSE CONVERT (varchar (10), &#39;R&#39;)\nFIN comme ReadWriteDesc\nFROM sys.databases\nWHERE nom NOT IN (&#39;tempdb&#39;, &#39;master&#39;, &#39;msdb&#39;, &#39;model&#39;) et nom NOT LIKE &#39;% ReportServer%&#39; AND state = 0\n--AND name = &#39;MyDatabase&#39;\nORDRE PAR NOM\n\n\nDÉCLARER backupfiles CURSEUR POUR\n SELECT DBName, RecoveryModel, CompatibilityLevel, ReadWriteDesc FROM #DummyDBDesc ORDER BY DBName\nOPEN backupFiles\n\nDECLARE @dbn varchar (100)\nDECLARE @rm varchar (10)\nDECLARE @cl varchar (30)\nDECLARE @rwd varchar (10)\n\n\n- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @dbn, @rm, @cl, @rwd\n\nWHILE @@ FETCH_STATUS = 0\nCOMMENCER\n\nIMPRIMER &#39;Nom de la base de données:&#39; + @dbn\n PRINT &#39;Modèle de récupération:&#39; + @rm\n PRINT &#39;Niveau de compatibilité:&#39; + @cl\n IMPRIMER &#39;Lecture / Ecriture:&#39; + @rwd\n IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n \n\n/ * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur l&#39;utilisateur de la base de données * /\n \n--Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBUsers\n\n - Obtenez les rôles pour cette base de données et chargez-les dans la table temporaire\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBUsers SELECT CONVERT (varchar (100), nom) AS UserName, CONVERT (varchar (100), type_desc) en tant que UserType FROM sys.database_principals WHERE (type = &#39;&#39; &#39;&#39; &#39;OU type =&#39; &#39;&#39; &#39;&#39; OU type = &#39;&#39; G &#39;&#39;) AND is_fixed_role = 0 AND (nom NOT IN (&#39;&#39; guest &#39;&#39;, &#39;&#39; dbo &#39;&#39;, &#39;&#39; INFORMATION_SCHEMA &#39;&#39;, &#39;&#39; sys &#39;&#39;))\n --PRINT @cmd\n EXEC (@cmd)\n\n--Obtenir la longueur de la plus longue occurrence des colonnes\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBUsers\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBUsers\n\n - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @unmax &lt;25 SET @unmax = 25\n si @utmax &lt;25 SET @utmax = 25\n \n--Définissez et imprimez les en-têtes de colonne pour les informations de rôle.\n SET @ col1nm = &#39;Nom d&#39;utilisateur&#39;\n SET @ col1len = @unmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;UserType&#39;\n SET @ col3len = @utmax\n IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm))\nESPACE D&#39;IMPRESSION (10) + REPLIQUE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLIQUE (&#39;=&#39;, @ col3len)\n\n DÉCLARER backupFiles2 CURSOR FOR\nSELECT UserName, UserType FROM #dummyDBUsers ORDER BY UserName\n\n OPEN backupFiles2\n\n- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @un, @ut\n\n WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Définissez et imprimez les détails de la ligne pour les informations de rôle.\n SET @ col1nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col3nm = SUBSTRING (@ ut, 1, @ utmax)\n\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm))\n\nFETCH NEXT FROM backupFiles2 INTO @un, @ut\n FIN\n\nFERMER backupFiles2\nDEALLOCATE backupFiles2\n \nIMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n \nif @outputtype = 2 - crée les instructions pour affecter un utilisateur à cette base de données\n COMMENCER\n TRUNCATE TABLE #dummyuserassign\n\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyuserassign select DISTINCT\n CASE members.type_desc\nQUAND &#39;&#39; WINDOWS_USER &#39;&#39;\nALORS &#39;&#39; CREATE USER [''+ members.name + ''] POUR CONNEXION [''+ members.name+ '']&#39;&#39; + &#39;&#39; WITH DEFAULT_SCHEMA =['' + members.default_schema_name + '']&#39;&#39;\nQUAND &#39;&#39; SQL_USER &#39;&#39;\n ALORS &#39;&#39; CREATE USER [''+ members.name + ''] POUR CONNEXION [''+ members.name+ '']&#39;&#39; + &#39;&#39; WITH DEFAULT_SCHEMA =['' + members.default_schema_name + '']&#39;&#39;\n END AS CreateUser\n à partir de membres sys.database_principals\n jointure interne sys.database_role_members drm\n sur members.principal_id = drm.member_principal_id\n rejoindre des rôles sys.database_principals\n sur drm.role_principal_id = roles.principal_id\n où membres.nom &lt;&gt; &#39;&#39; dbo &#39;&#39;\n ORDER BY CreateUser &#39;\n --PRINT @cmd\n EXEC (@cmd)\n\n\nsi existe (SELECT * FROM #dummyuserassign)\n COMMENCER\n IMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n FIN\n DÉCLARER myCursorVariable3 CURSOR FOR\nSELECT LineVal FROM #dummyuserassign ORDER BY RecID\n\n OUVRIR myCursorVariable3\n\n- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable3 INTO @lineval\n\n WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nIMPRIMER @lineval\n\n FETCH NEXT FROM myCursorVariable3 INTO @lineval\n FIN\n\nFERMER myCursorVariable3\nDEALLOCATE myCursorVariable3\nFIN\n \n\n\nsi @includeroleinfo = 1\n COMMENCER\n / * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur le rôle * /\n SELECT @collationname = nom_collection FROM master.sys.databases WHERE nom = @dbn\n si @collationname EST NULL\n print &#39;null for&#39; + @dbn\n\n si @collationname EST NULL\n SET @collationname = (SELECT nom_collection FROM maître.sys.databases WHERE nom = &#39;maître&#39;)\n\n SET @cmd = &#39;ALTER TABLE #dummyrolelist ALTER COLUMN Nom du rôle varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN RoleName varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN Nom d&#39;utilisateur varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN Type d&#39;utilisateur varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\n\n--Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBRoles\n\n - Obtenez les rôles pour cette base de données et chargez-les dans la table temporaire\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBRoles sélectionnez CONVERT (varchar (200), roles.name) en tant que NomRôle, CONVERT (varchar (200), members.name) AS NomUtilisateur, CONVERT (varchar (200), members.type_desc) AS UserType de sys.database_principals membres internes rejoindre sys.database_role_members drm sur members.principal_id = drm.member_principal_id rejoindre interne sys.database_principals rôles sur drm.role_principal_id = roles.principal_id où members.name &lt;&gt; &#39;&#39; &#39;&#39; dbo &#39;&#39;, ORDER BY membres\n --PRINT @cmd\n EXEC (@cmd)\n\n- Ajoutez maintenant les rôles présents dans la base de données auxquels aucune personne ne leur a été affectée (ceux déjà présents dans la table temporaire)\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBRoles SELECT CONVERT (varchar (200), nom) AS NameName, &#39;&#39; --none-- &#39;&#39; As UserName, &#39;&#39; &#39;&#39; AS UserType FROM sys.database_principals WHERE type = &#39;&#39; R &#39;&#39; et is_fixed_role = 0 et nom &lt;&gt; &#39;&#39; public &#39;&#39; AND (nom NOT IN (SELECT NomRôle FROM #dummyDBRoles)) &#39;\n --PRINT @cmd\n EXEC (@cmd)\n\n- obtenez maintenant une liste des rôles de base de données créés et imprimez-les sous forme d&#39;instructions CREATE ROLE\n si @outputtype = 2\n COMMENCER\n TRUNCATE TABLE #dummyrolelist\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyrolelist SELECT nom FROM sys.database_principals WHERE type = &#39;&#39; R &#39;&#39; AND nom &lt;&gt; &#39;&#39; public &#39;&#39; AND is_fixed_role = 0 &#39;\n --PRINT @cmd\n EXEC (@cmd)\nIMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n DÉCLARER myCursorVariable4 CURSOR FOR\nSELECT NomRôle FROM #dummyrolelist\n\nOUVRIR myCursorVariable4\n\n - Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable4 INTO @rn\n\n WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @cmd = &#39;CREATE ROLE&#39; + @rn\n IMPRIMER @cmd\n\n\nFETCH NEXT FROM myCursorVariable4 INTO @rn\n FIN\n\nFERMER myCursorVariable4\n DEALLOCATE myCursorVariable4\n FIN\n\n --Obtenir la longueur de la plus longue occurrence des colonnes\n SELECT @rnmax = ISNULL (MAX (len (Nom du rôle)), 0) FROM #dummyDBRoles\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBRoles\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBRoles\n\n - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @rnmax &lt;25 SET @rnmax = 25\n si @unmax &lt;25 SET @unmax = 25\n si @utmax &lt;25 SET @utmax = 25\n\n --Définissez et imprimez les en-têtes de colonne pour les informations de rôle\n SET @ col1nm = &#39;NomRôle&#39;\n SET @ col1len = @rnmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;Nom d&#39;utilisateur&#39;\n SET @ col3len = @unmax\n SET @ col4nm = &#39;&#39;\n SET @ col4len = 5\n SET @ col5nm = &#39;UserType&#39;\n SET @ col5len = @utmax\n IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\nESPACE D&#39;IMPRESSION (10) + REPLIQUÉ (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICAT (&#39;=&#39;, @ col3len) + ESPACE (@ col4len) + REPLICAT (&#39;=&#39;, @ col5len)\n\n - Imprimez le script pour définir le contexte de la base de données\n si @outputtype = 2\n COMMENCER\n IMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n FIN\n\n --statement pour obtenir tous les rôles pour cette base de données\n --SELECT nom FROM sys.database_principals WHERE type = &#39;R&#39; et is_fixed_role = 0 et nom &lt;&gt; &#39;public&#39;\n --peut utiliser le script des instructions CREATE ROLE\n\n - Maintenant, parcourez les rôles\n DÉCLARER backupFiles2 CURSOR FOR\nSELECT Nom de rôle, Nom d&#39;utilisateur, Type d&#39;utilisateur FROM #dummyDBRoles ORDER BY Nom de rôle\n\n OPEN backupFiles2\n\n- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @rn, @un, @ut\n\nWHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Définissez et imprimez les détails de la ligne pour les informations de rôle.\n SET @ col1nm = SUBSTRING (@ rn, 1, @ rnmax)\n SET @ col3nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col5nm = SUBSTRING (@ ut, 1, @ utmax)\n si @outputtype = 1\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\nsi @outputtype = 2\n COMMENCER\n if @ col3nm &lt;&gt; &#39;--none--&#39;\n PRINT &#39;exec sp_addrolemember [' + @col1nm + '], [' + @col3nm + '] --Usertype = &#39;+ @ col5nm\n autre\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\n FIN\n\n FETCH NEXT FROM backupFiles2 INTO @rn, @un, @ut\nFIN\n\nFERMER backupFiles2\nDEALLOCATE backupFiles2\n\n IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n FIN\n\n \nsi @includeobjlvlperms = 1\n COMMENCER\n / * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur les autorisations de niveau objet * /\n --Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBPerms\n\n - Obtenir les autorisations pour cette base de données et charger dans la table temporaire\n - Je suis sûr que certaines de ces pièces sont venues d&#39;ailleurs. Mes appologies à l&#39;initiateur.\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBPerms &#39;\n SET @cmd = @cmd + &#39;select p.state_desc, p.permission_name, s.name, o.name, u.name, CASE o.type WHEN&#39; &#39;P&#39; &#39;THEN&#39; &#39;SPROC&#39; &#39;\n QUAND &#39;&#39; V &#39;&#39; ALORS &#39;&#39; View &#39;&#39;\n QUAND &#39;&#39; U &#39;&#39; ALORS &#39;&#39; Table &#39;&#39;\n QUAND &#39;&#39; FN &#39;&#39; ALORS &#39;&#39; Fonction (détartreur) &#39;&#39;\n QUAND &#39;&#39; TF &#39;&#39; THEN &#39;&#39; Fonction (valeur de table) &#39;&#39;\n ELSE o.type_desc END AS ObjectType,\n CONVERT (varchar (200), u.type_desc) AS UserType\n de sys.database_permissions p\njointure interne sys.objects o sur p.major_id = o.object_id\njointure interne sys.schemas s sur s.schema_id = o.schema_id\njointure interne sys.database_principals u sur p.grantee_principal_id = u.principal_id\n ORDER BY o.type, o.name collate Latin1_general_CI_AS, u.name collate Latin1_general_CI_AS &#39;\n --PRINT @cmd\n EXEC (@cmd)\n\n--Obtenir la longueur de la plus longue occurrence de chacune des colonnes\n SELECT @sdmax = ISNULL (MAX (len (StateDesc)), 0) FROM #dummyDBPerms\n SELECT @pnmax = ISNULL (MAX (len (PermName)), 0) FROM #dummyDBPerms\n SELECT @snmax = ISNULL (MAX (len (SchemaName)), 0) FROM #dummyDBPerms\n SELECT @onmax = ISNULL (MAX (len (ObjectName)), 0) FROM #dummyDBPerms\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBPerms\n SELECT @pdmax = ISNULL (MAX (len (ObjectType)), 0) FROM #dummyDBPerms\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBPerms\n\n - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @sdmax &lt;15 SET @sdmax = 15\n si @pnmax &lt;15 SET @pnmax = 15\n si @snmax &lt;10 SET @snmax = 10\n si @onmax &lt;15 SET @onmax = 15\n si @unmax &lt;15 SET @unmax = 15\n si @pdmax &lt;15 SET @pdmax = 15 --ObjectType\n si @utmax &lt;15 SET @utmax = 15 --UserType\n\n --Placez et imprimez les en-têtes de colonne pour les informations de permissions\n SET @ col1nm = &#39;StateDesc&#39;\n SET @ col1len = @sdmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;PermName&#39;\n SET @ col3len = @pnmax\n SET @ col4nm = &#39;&#39;\n SET @ col4len = 5\n SET @ col5nm = &#39;Schema&#39;\n SET @ col5len = @snmax\n SET @ col6nm = &#39;&#39;\n SET @ col6len = 5\n SET @ col7nm = &#39;Object&#39;\n SET @ col7len = @onmax\n SET @ col8nm = &#39;&#39;\n SET @ col8len = 5\n SET @ col9nm = &#39;Utilisateur&#39;\n SET @ col9len = @unmax\n SET @ col10nm = &#39;&#39;\n SET @ col10len = 5\n SET @ col11nm = &#39;ObjectType&#39;\n SET @ col11len = @pdmax\n SET @ col12nm = &#39;&#39;\n SET @ col12len = 5\n SET @ col13nm = &#39;UserType&#39;\n SET @ col13len = @utmax\n\n IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm)) + ESPACE (@ col8len) + @ col9nm + ESPACE (@ col9len-len ( @ col9nm)) + ESPACE (@ col10len) + @ col11nm + ESPACE (@ col11len-len (@ col11nm)) + ESPACE (@ col12len) + @ col13nm + ESPACE (@ col13len-len (@ col13nm))\n ESPACE D&#39;IMPRESSION (10) + REPLIQUE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLIQUE (&#39;=&#39;, @ col3len) + ESPACE (@ col4len) + REPLIQUE (&#39;=&#39;, @ col5len) + ESPACE ( @ col6len) + REPLICATE (&#39;=&#39;, @ col7len) + SPACE (@ col8len) + REPLICATE (&#39;=&#39;, @ col9len) + SPACE (@ col10len) + REPLICATE (&#39;=&#39;, @ col11len) + SPACE (@ col12len ) + REPLICATE (&#39;=&#39;, @ col13len)\n\n --Consultez les autorisations pour cette base de données, formatez-les et imprimez-les\n DÉCLARER backupFiles2 CURSOR FOR\nSELECT StateDesc, PermName, SchemaName, ObjectName, UserName, ObjectType, UserType FROM #dummyDBPerms ORDER BY Schemaname, ObjectName, UserName\n\n OPEN backupFiles2\n\n- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @sd, @pn, @sn, @on, @un, @pd, @ut\n\n WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Placez et imprimez les détails de la ligne pour les informations sur les autorisations\n SET @ col1nm = SUBSTRING (@ sd, 1, @ sdmax)\n SET @ col3nm = SUBSTRING (@ pn, 1, @ pnmax)\n SET @ col5nm = SUBSTRING (@ sn, 1, @ snmax)\n SET @ col7nm = SUBSTRING (@ on, 1, @ onmax)\n SET @ col9nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col11nm = SUBSTRING (@ pd, 1, @ pdmax)\n SET @ col13nm = SUBSTRING (@ ut, 1, @ utmax)\n\n --imprime l&#39;enregistrement de détail pour les permissions\n si @outputtype = 1\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm)) + ESPACE (@ col8len) + @ col9nm + ESPACE (@ col9len-len ( @ col9nm)) + ESPACE (@ col10len) + @ col11nm + ESPACE (@ col11len-len (@ col11nm)) + ESPACE (@ col12len) + @ col13nm + ESPACE (@ col13len-len (@ col13nm))\n si @outputtype = 2\n PRINT @ col1nm + &#39;&#39; + @ col3nm + &#39;ON [' + @col5nm + '].[' + @col7nm + '] À [' + @col9nm + '] --ObjectType = &#39;+ @ col11nm +&#39; UserType = &#39;+ @ col13nm\n\n\n FETCH NEXT FROM backupFiles2 INTO @sd, @pn, @sn, @on, @un, @ pd, @ ut\n FIN\n\nFERMER backupFiles2\nDEALLOCATE backupFiles2\n\n IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n\n FIN\n\n\n si @outputtype = 2 ET @includedefaultdb = 1\n COMMENCER\n if EXISTS (nom SELECT de master.sys.server_Principals WHERE, saisissez (&#39;G&#39;, &#39;S&#39;, &#39;U&#39;) ET default_database_name = @dbn)\n COMMENCER\n IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n PRINT &#39;- Voici les noms d&#39;utilisateur et leurs paramètres de base de données par défaut&#39;\n IMPRESSION &#39; &#39;\n\n DÉCLARER CURSEUR myCursorVariable pour\nSELECT nom, default_database_name comme DefaultDB\nFROM master.sys.server_Principals\nWHERE saisissez (&#39;G&#39;, &#39;S&#39;, &#39;U&#39;) ET default_database_name = @dbn\n ORDRE PAR NOM\n\n OPEN myCursorVariable\n\n- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable INTO @loginname, @dbnametouse\n\n WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nIMPRIMER &#39;ALTER LOGIN [' + @loginname + '] WITH DEFAULT_DATABASE = &#39;+ @dbnametouse\n\n FETCH NEXT FROM myCursorVariable INTO @loginname, @dbnametouse\n FIN\n\nFERMER myCursorVariable\nDEALLOCATE myCursorVariable\n\nIMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n FIN\n FIN\n\n\n\n\nIMPRIMER &#39;============================================= =============================================== ========= &#39;\n \n--Obtenir le prochain nom de base de données et informations à utiliser dans la boucle de base de données\n FETCH NEXT FROM backupFiles INTO @dbn, @rm, @cl, @rwd\nFIN\n\nFERMER backupFiles\nDEALLOCATE backupfiles\n\n/ * ============================================= ============================================== /\n--Dispose des tables temporaires\nDROP TABLE #DummyDBDesc\nDROP TABLE #dummyDBRoles\nDROP TABLE #dummyDBUsers\nDROP TABLE #dummyDBPerms\nDROP TABLE #dummyuserassign\nDROP TABLE #dummyrolelist\n\nRÉGLER NOCOUNT \n\nClick to rate this post!\r\n                                   \r\n                               [Total: 0  Average: 0]","paragraphs":["Vous ne savez pas si c&#39;est exactement ce dont vous avez besoin, mais jetez un coup d&#39;œil:\n/ * ============================================= =============================================== ===================== * /\n/ * = Documentation d&#39;audit d&#39;audit de sécurité d&#39;instance = * /\n/ * ============================================= =============================================== ===================== * /\n/ * Date de création: 28/12/2011\n Par: VikingDBA\n Modifications:\n 08/07/2012 Modifié pour faire aussi des autorisations au niveau du serveur (comme VIEW ANY DATABASE, ou VIEW SERVER STATE)\n 01/09/2013 Changement pour imprimer les scripts afin de créer les instructions CREATE ROLE et CREATE USER\n 31/01/2013 Modifié pour imprimer les instructions de niveau serveur et les instructions pour définir les valeurs par défaut\nbases de données pour les utilisateurs\n \nDépendances:\n Ce script dépend des éléments suivants pour exister:\n aucun"," Sommaire:\n Ce script crée la documentation de toutes les bases de données d’une instance, y compris les autorisations au niveau du serveur et le rôle de la base de données.\n autorisations et autorisations individuelles des objets de base de données.","Notez que le fait de changer les ensembles @outputtype = 1 pour columnar (style de rapport) et que la valeur 2 crée les instructions d&#39;affectation"," REMARQUE: s&#39;exécute pour toutes les bases de données, sauf si une base de données spécifique est utilisée dans la clause WHERE ci-dessous.\n Consultez également la section Variables à définir par l&#39;utilisateur ci-dessous pour savoir si des variables doivent être définies.\n* /","Utilisez MASTER","SET NOCOUNT ON","/ * ============================================= =============================================== ================== * /\n- Audit de sécurité pour les rôles de serveur\nDECLARE @sr varchar (100)\nDECLARE @mn varchar (150)\nDECLARE @cmd varchar (4000)\nDECLARE @ col1nm varchar (200)\nDECLARE @ col2nm varchar (200)\nDECLARE @ col3nm varchar (200)\nDECLARE @ col4nm varchar (200)\nDECLARE @ col5nm varchar (200)\nDECLARE @ col6nm varchar (200)\nDECLARE @ col7nm varchar (200)\nDECLARE @ col8nm varchar (200)\nDECLARE @ col9nm varchar (200)\nDECLARE @ col10nm varchar (200)\nDECLARE @ col11nm varchar (200)\nDECLARE @ col12nm varchar (200)\nDECLARE @ col13nm varchar (200)\nDECLARE @ col14nm varchar (200)\nDECLARE @ col15nm varchar (200)\nDECLARE @ col16nm varchar (200)\nDECLARE @ col17nm varchar (200)\nDECLARE @ col18nm varchar (200)\nDECLARE @ col19nm varchar (200)\nDECLARE @ col20nm varchar (200)\nDECLARE @ col1len int\nDECLARE @ col2len int\nDECLARE @ col3len int\nDECLARE @ col4len int\nDECLARE @ col5len int\nDECLARE @ col6len int\nDECLARE @ col7len int\nDECLARE @ col8len int\nDECLARE @ col9len int\nDECLARE @ col10len int\nDECLARE @ col11len int\nDECLARE @ col12len int\nDECLARE @ col13len int\nDECLARE @ col14len int\nDECLARE @ col15len int\nDECLARE @ col16len int\nDECLARE @ col17len int\nDECLARE @ col18len int\nDECLARE @ col19len int\nDECLARE @ col20len int\nDECLARE @ col1max int\nDECLARE @ col2max int\nDECLARE @ col3max int\nDECLARE @ col4max int\nDECLARE @ col5max int\nDECLARE @ col6max int\nDECLARE @ col7max int\nDECLARE @ col8max int\nDECLARE @ col9max int\nDECLARE @ col10max int\nDECLARE @ col11max int\nDECLARE @ col12max int\nDECLARE @ col13max int\nDECLARE @ col14max int\nDECLARE @ col15max int\nDECLARE @ col16max int\nDECLARE @ col17max int\nDECLARE @ col18max int\nDECLARE @ col19max int\nDECLARE @ col20max int\nDECLARE @ col1min int\nDECLARE @ col2min int\nDECLARE @ col3min int\nDECLARE @ col4min int\nDECLARE @ col5min int\nDECLARE @ col6min int\nDECLARE @ col7min int\nDECLARE @ col8min int\nDECLARE @ col9min int\nDECLARE @ col10min int\nDECLARE @ col11min int\nDECLARE @ col12min int\nDECLARE @ col13min int\nDECLARE @ col14min int\nDECLARE @ col15min int\nDECLARE @ col16min int\nDECLARE @ col17min int\nDECLARE @ col18min int\nDECLARE @ col19min int\nDECLARE @ col20min int\nDECLARE @rn varchar (200)\nDECLARE @un varchar (200)\nDECLARE @ut varchar (200)\nDECLARE @sd varchar (200)\nDECLARE @pn varchar (200)\nDECLARE @sn varchar (200)\nDÉCLARE @on varchar (200)\nDECLARE @pd varchar (200)\nDÉCLARE @sdmax int\nDECLARE @pnmax int\nDÉCLARE @snmax int\nDÉCLARER @onmax int\nDECLARE @pdmax int\nDECLARE @unmax int\nDECLARE @rnmax int\nDÉCLARE @utmax int\nDECLARE @outputtype int\nDECLARE @prodlevel varchar (25)\nDECLARE @version varchar (250)\nDEClARE @prodver varchar (50)\nDECLARE @edition varchar (50)\nDÉCLARER bit @includeobjlvlperms\nDECLARE @includeroleinfo bit\nDECLARE @includedefaultdb bit\nDECLARE @usnm varchar (128)\nDÉCLARE @ustp varchar (60)\nDECLARE @stdsc varchar (60)\nDECLARE @permnm varchar (128)\nDECLARE @collationname varchar (200)\nDECLARE @lineval varchar (2000)\nDECLARE @loginname varchar (100)\nDECLARE @dbnametouse sysname","/ * ============================================= ============================================== * /\n- Variables paramétrables par l&#39;utilisateur\nSET @outputtype = 1 - 1 = en colonne 2 = instructions d&#39;affectation\nSET @includeobjlvlperms = 1\nSET @includeroleinfo = 1\nSET @includedefaultdb = 1\n/ * ============================================= ============================================== * /","SELECT @ prodlevel = CONVERT (varchar (25), SERVERPROPERTY (&#39;ProductLevel&#39;))\nSELECT @ version = CONVERT (varchar (250), @@ VERSION)\nSELECT @ prodver = CONVERT (varchar (50), SERVERPROPERTY (&#39;ProductVersion&#39;))\nSELECT @ edition = CONVERT (varchar (50), SERVERPROPERTY (&#39;Edition&#39;))\n/ * ============================================= ============================= /\n--Trouver une ligne de démarcation\nDECLARE @lvaltouse varchar (2000)\nDECLARE @lvallength int\nDECLARE @lvalct int\nDECLARE @spotcat int\nDECLARE @spotcatval int\nDECLARE @ lval1 varchar (2000)\nDECLARE @ lval2 varchar (2000)\nDECLARE @ lval3 varchar (2000)\nDECLARE @ lval4 varchar (2000)\nDECLARE @ lval5 varchar (2000)\nDECLARE @ lval6 varchar (2000)\nSET @lvaltouse = @version\nSET @lvallength = LEN (@lvaltouse)\nSET @lvalct = 1\nSET @spotcat = 1\nSET @ lval1 = &#39;&#39;\nSET @ lval2 = &#39;&#39;\nSET @ lval3 = &#39;&#39;\nSET @ lval4 = &#39;&#39;\nSET @ lval5 = &#39;&#39;\nSET @ lval6 = &#39;&#39;\nPENDANT @spotcat &lt;= @lvallength\n COMMENCER\n SET @spotcatval = ASCII (SUBSTRING (@ lvaltouse, @ spotcat, 1))\n if @spotcatval = 10 - valeur recherchée\n SET @lvalct = @lvalct + 1 - défini pour passer à la ligne suivante et commencer à la construire\n else - ajoute à la ligne de valeur actuelle\n COMMENCER\n if @spotcatval &lt;&gt; 9 - valeurs que nous voulons exclure\n COMMENCER\n si @lvalct = 1\n SET @ lval1 = @ lval1 + CHAR (@spotcatval)\n si @lvalct = 2\n SET @ lval2 = @ lval2 + CHAR (@spotcatval)\n si @lvalct = 3\n SET @ lval3 = @ lval3 + CHAR (@spotcatval)\n si @lvalct = 4\n SET @ lval4 = @ lval4 + CHAR (@spotcatval)\n si @lvalct = 5\n SET @ lval5 = @ lval5 + CHAR (@spotcatval)\n si @lvalct = 6\n SET @ lval6 = @ lval6 + CHAR (@spotcatval)\n FIN\n FIN\n SET @spotcat = @spotcat + 1\n FIN\n --PRINT &#39;Ligne à scinder =&#39; + @lvaltouse\n --PRINT &#39;line1 =&#39; + @ lval1\n --PRINT &#39;line2 =&#39; + @ lval2\n --PRINT &#39;line3 =&#39; + @ lval3\n --PRINT &#39;line4 =&#39; + @ lval4\n --PRINT &#39;line5 =&#39; + @ lval5\n --PRINT &#39;line6 =&#39; + @ lval6\n/ * ============================================= ============================== /\nCREATE TABLE #dummyuserassign\n(RecID int IDENTITY,\nLineVal varchar (2000)\n)","IMPRIMER &#39;============================================= =============================================== =========== &#39;\nIMPRIMER &#39;Audit de sécurité pour instance de serveur&#39; + CONVERT (varchar (128), @@ nomserveur)\nsi @outputtype = 2\n IMPRIMER &#39;Déclarations d&#39;attribution&#39;\nPRINT &#39;For&#39; + CONVERT (varchar (128), getdate (), 101) + &#39;&#39; + CONVERT (varchar (128), getdate (), 108)\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nPRINT &#39;Version du serveur SQL:&#39; + @ lval1\nIMPRIMER &#39;&#39; + @ lval4\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nPRINT &#39;REMARQUE: veillez à obtenir la liste des connexions à l&#39;aide de la procédure stockée sp_help_revlogin de la base de données master.&#39;\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nIMPRIMER &#39;Paramètres de sécurité du rôle serveur&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;","CREATE TABLE #rolememberdummy\n(ServerRole varchar (100),\nNom du membre varchar (150),\nMemberSID varchar (2000)\n)\nCREATE TABLE #dummyDBPerms\n(StateDesc varchar (200),\n PermName varchar (200),\n SchemaName varchar (200),\n ObjectName varchar (200),\n Nom d&#39;utilisateur varchar (200),\n ObjectType varchar (200),\n Type d&#39;utilisateur varchar (200)\n)","- Audit de sécurité\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;sysadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;securityadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;serveradmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;dbcreator&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;diskadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;processadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;setupadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;bulkadmin&#39;","SET @ col1nm = &#39;Role&#39;\nSET @ col1len = 20\nSET @ col2nm = &#39;&#39;\nSET @ col2len = 8\nSET @ col3nm = &#39;Nom du membre&#39;\nSET @ col3len = 30\nIMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm\nPRINT REPLICATE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICATE (&#39;=&#39;, @ col3len)","--SELECT CONVERT (varchar (30), ServerRole) en tant que ServerRole, CONVERT (varchar (30), MemberName) AS MemberName FROM #rolememberdummy\nDÉCLARER backupfiles CURSEUR POUR\nSELECT ServerRole, MemberName FROM #rolememberdummy","OPEN backupFiles","- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @sr, @mn","WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @ col1nm = @sr\n SET @ col1len = 20\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 8\n SET @ col3nm = @mn\n SET @ col3len = 30\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm"," FETCH NEXT FROM backupFiles INTO @sr, @mn\nFIN","FERMER backupFiles\nDEALLOCATE backupfiles","DROP TABLE #rolememberdummy","IMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;\nIMPRIMER &#39;============================================= =============================================== ========= &#39;\nIMPRIMER &#39;Autorisations au niveau du serveur&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;","CREATE TABLE #serverpermdummy\n(Nom d&#39;utilisateur varchar (128),\nType d&#39;utilisateur varchar (60),\nStateDesc varchar (60),\nPermName varchar (128)\n)","INSERT INTO #serverpermdummy\nSELECT l.name comme nom d&#39;utilisateur, l.type_desc AS UserType, p.state_desc AS StateDesc, p.permission_name AS PermName\nFROM sys.server_permissions AS p\nJOIN sys.server_principals AS l ON p.grantee_principal_id = l.principal_id\nWHERE ((nom_autorisation &lt;&gt; &#39;CONNECT SQL&#39; ET nom_autorisation &lt;&gt; &#39;CONNECT&#39;) OU p.state_desc = &#39;DENY&#39;) ET l.type_desc &lt;&gt; &#39;CERTIFICATE_MAPPED_LOGIN&#39; ET l.nom NE PAS LIKE &#39;% # MS_%&#39;\nORDER BY l.principal_id","--SELECT * FROM sys.server_principals","SET @ col1nm = &#39;Nom d&#39;utilisateur&#39;\nSET @ col1len = 20\nSET @ col2nm = &#39;&#39;\nSET @ col2len = 8\nSET @ col3nm = &#39;Type d&#39;utilisateur&#39;\nSET @ col3len = 20\nSET @ col4nm = &#39;&#39;\nSET @ col4len = 8\nSET @ col5nm = &#39;State Desc&#39;\nSET @ col5len = 20\nSET @ col6nm = &#39;&#39;\nSET @ col6len = 8\nSET @ col7nm = &#39;Permission&#39;\nSET @ col7len = 30","SET @ col1min = LEN (@ col1nm)\nSET @ col3min = LEN (@ col3nm)\nSET @ col5min = LEN (@ col5nm)\nSET @ col7min = LEN (@ col7nm)","--Obtenir la longueur de la plus longue occurrence des colonnes\nSELECT @ col1max = ISNULL (MAX (len (LTRIM (RTRIM (UserName)))), 0) FROM #serverpermdummy\nSELECT @ col3max = ISNULL (MAX (len (LTRIM (RTRIM (UserType)))), 0) FROM #serverpermdummy\nSELECT @ col5max = ISNULL (MAX (len (LTRIM (RTRIM (StateDesc)))), 0) FROM #serverpermdummy\nSELECT @ col7max = ISNULL (MAX (len (LTRIM (RTRIM (PermName)))), 0) FROM #serverpermdummy","- Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\nif @ col1max &lt;@ col1min SET @ col1len = @ col1min sinon SET @ col1len = @ col1max\nsi @ col3max &lt;@ col3min SET @ col3len = @ col3min sinon SET @ col3len = @ col3max\nsi @ col5max &lt;@ col5min SET @ col5len = @ col5min sinon SET @ col5len = @ col5max\nsi @ col7max &lt;@ col7min SET @ col7len = @ col7min sinon SET @ col7len = @ col7max","si @outputtype = 1\n COMMENCER\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len -len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm))\n PRINT REPLICATE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICATE (&#39;=&#39;, @ col3len) + SPACE (@ col4len) + REPLICAT (&#39;=&#39;, @ col5len) + SPACE (@ col6len) + REPLICATE (&#39;=&#39;, @ col7len)\n FIN\nautre\n si EXISTS (SELECT ISNULL (UserName, &#39;&#39;) AS UserName, ISNULL (UserType, &#39;&#39;) AS UserType, ISNULL (StateDesc, &#39;&#39;) AS StateDesc, ISNULL (PermName, &#39;&#39;) AS PermName FROM nom_serveurpermdummy)\n IMPRIMER &#39;UTILISER le maître;&#39;","DÉCLARER backupfiles CURSEUR POUR\nSELECT ISNULL (UserName, &#39;&#39;) AS UserName, ISNULL (UserType, &#39;&#39;) AS UserType, ISNULL (StateDesc, &#39;&#39;) AS StateDesc, ISNULL (PermName, &#39;&#39;) AS PermName FROM #serverpermdummy","OPEN backupFiles","- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @usnm, @ustp, @stdsc, @permnm","WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @ col1nm = @usnm\n SET @ col2nm = &#39;&#39;\n SET @ col3nm = @ustp\n SET @ col4nm = &#39;&#39;\n SET @ col5nm = @stdsc\n SET @ col6nm = &#39;&#39;\n SET @ col7nm = @permnm\n si @outputtype = 1\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len -len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm))\n autre\n PRINT @stdsc + &#39;&#39; + @permnm + &#39;TO&#39; + @usnm + &#39;;&#39;"," FETCH NEXT FROM backupFiles INTO @usnm, @ustp, @stdsc, @permnm\nFIN","FERMER backupFiles\nDEALLOCATE backupfiles","DROP TABLE #serverpermdummy","IMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;\nIMPRIMER &#39;============================================= =============================================== ========= &#39;\nIMPRIMER &#39;Information par base de données&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;","CREATE TABLE #DummyDBDesc\n(RecID int IDENTITY NOT NULL,\n NomServeur varchar (128) NULL,\n DBName varchar (100) NULL,\n Modèle de restauration varchar (10) NULL,\n CompatibilityLevel varchar (30) NULL,\n ReadWriteDesc varchar (10) NULL\n)\nCREATE TABLE #dummyDBRoles\n(RoleName varchar (200),\n Nom d&#39;utilisateur varchar (200),\n Type d&#39;utilisateur varchar (200)\n)","CREATE TABLE #dummyrolelist\n(Nom de rôle varchar (200)\n)","CREATE TABLE #dummyDBUsers\n(Nom d&#39;utilisateur varchar (200),\n Type d&#39;utilisateur varchar (200)\n)\nINSERT INTO #DummyDBDesc\nsélectionnez CONVERT (varchar (128), @@ nom_serveur) AS ServerName, CONVERT (varchar (100), nom) en tant que DBName, CONVERT (varchar (10), recovery_model_desc) en tant que RecoveryModel, --database Base,\nCASE niveau_compatibilité\nWHEN 80 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2000 *&#39;\nWHEN 90 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2005&#39;\nWHEN 100 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2008&#39;\nWHEN 105 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2008 R2&#39;\nWHEN 110 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2012&#39;\nELSE CONVERT (varchar (4), niveau_compatibilité)\nEND AS CompatibilityLevel,\nCASE is_read_only\nQUAND 0 ALORS CONVERTIR (varchar (10), &#39;RW&#39;)\nELSE CONVERT (varchar (10), &#39;R&#39;)\nFIN comme ReadWriteDesc\nFROM sys.databases\nWHERE nom NOT IN (&#39;tempdb&#39;, &#39;master&#39;, &#39;msdb&#39;, &#39;model&#39;) et nom NOT LIKE &#39;% ReportServer%&#39; AND state = 0\n--AND name = &#39;MyDatabase&#39;\nORDRE PAR NOM","DÉCLARER backupfiles CURSEUR POUR\n SELECT DBName, RecoveryModel, CompatibilityLevel, ReadWriteDesc FROM #DummyDBDesc ORDER BY DBName\nOPEN backupFiles","DECLARE @dbn varchar (100)\nDECLARE @rm varchar (10)\nDECLARE @cl varchar (30)\nDECLARE @rwd varchar (10)","- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @dbn, @rm, @cl, @rwd","WHILE @@ FETCH_STATUS = 0\nCOMMENCER","IMPRIMER &#39;Nom de la base de données:&#39; + @dbn\n PRINT &#39;Modèle de récupération:&#39; + @rm\n PRINT &#39;Niveau de compatibilité:&#39; + @cl\n IMPRIMER &#39;Lecture / Ecriture:&#39; + @rwd\n IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n ","/ * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur l&#39;utilisateur de la base de données * /\n \n--Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBUsers"," - Obtenez les rôles pour cette base de données et chargez-les dans la table temporaire\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBUsers SELECT CONVERT (varchar (100), nom) AS UserName, CONVERT (varchar (100), type_desc) en tant que UserType FROM sys.database_principals WHERE (type = &#39;&#39; &#39;&#39; &#39;OU type =&#39; &#39;&#39; &#39;&#39; OU type = &#39;&#39; G &#39;&#39;) AND is_fixed_role = 0 AND (nom NOT IN (&#39;&#39; guest &#39;&#39;, &#39;&#39; dbo &#39;&#39;, &#39;&#39; INFORMATION_SCHEMA &#39;&#39;, &#39;&#39; sys &#39;&#39;))\n --PRINT @cmd\n EXEC (@cmd)","--Obtenir la longueur de la plus longue occurrence des colonnes\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBUsers\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBUsers"," - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @unmax &lt;25 SET @unmax = 25\n si @utmax &lt;25 SET @utmax = 25\n \n--Définissez et imprimez les en-têtes de colonne pour les informations de rôle.\n SET @ col1nm = &#39;Nom d&#39;utilisateur&#39;\n SET @ col1len = @unmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;UserType&#39;\n SET @ col3len = @utmax\n IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm))\nESPACE D&#39;IMPRESSION (10) + REPLIQUE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLIQUE (&#39;=&#39;, @ col3len)"," DÉCLARER backupFiles2 CURSOR FOR\nSELECT UserName, UserType FROM #dummyDBUsers ORDER BY UserName"," OPEN backupFiles2","- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @un, @ut"," WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Définissez et imprimez les détails de la ligne pour les informations de rôle.\n SET @ col1nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col3nm = SUBSTRING (@ ut, 1, @ utmax)"," ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm))","FETCH NEXT FROM backupFiles2 INTO @un, @ut\n FIN","FERMER backupFiles2\nDEALLOCATE backupFiles2\n \nIMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n \nif @outputtype = 2 - crée les instructions pour affecter un utilisateur à cette base de données\n COMMENCER\n TRUNCATE TABLE #dummyuserassign"," SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyuserassign select DISTINCT\n CASE members.type_desc\nQUAND &#39;&#39; WINDOWS_USER &#39;&#39;\nALORS &#39;&#39; CREATE USER [''+ members.name + ''] POUR CONNEXION [''+ members.name+ '']&#39;&#39; + &#39;&#39; WITH DEFAULT_SCHEMA =['' + members.default_schema_name + '']&#39;&#39;\nQUAND &#39;&#39; SQL_USER &#39;&#39;\n ALORS &#39;&#39; CREATE USER [''+ members.name + ''] POUR CONNEXION [''+ members.name+ '']&#39;&#39; + &#39;&#39; WITH DEFAULT_SCHEMA =['' + members.default_schema_name + '']&#39;&#39;\n END AS CreateUser\n à partir de membres sys.database_principals\n jointure interne sys.database_role_members drm\n sur members.principal_id = drm.member_principal_id\n rejoindre des rôles sys.database_principals\n sur drm.role_principal_id = roles.principal_id\n où membres.nom &lt;&gt; &#39;&#39; dbo &#39;&#39;\n ORDER BY CreateUser &#39;\n --PRINT @cmd\n EXEC (@cmd)","si existe (SELECT * FROM #dummyuserassign)\n COMMENCER\n IMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n FIN\n DÉCLARER myCursorVariable3 CURSOR FOR\nSELECT LineVal FROM #dummyuserassign ORDER BY RecID"," OUVRIR myCursorVariable3","- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable3 INTO @lineval"," WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nIMPRIMER @lineval"," FETCH NEXT FROM myCursorVariable3 INTO @lineval\n FIN","FERMER myCursorVariable3\nDEALLOCATE myCursorVariable3\nFIN\n ","si @includeroleinfo = 1\n COMMENCER\n / * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur le rôle * /\n SELECT @collationname = nom_collection FROM master.sys.databases WHERE nom = @dbn\n si @collationname EST NULL\n print &#39;null for&#39; + @dbn"," si @collationname EST NULL\n SET @collationname = (SELECT nom_collection FROM maître.sys.databases WHERE nom = &#39;maître&#39;)"," SET @cmd = &#39;ALTER TABLE #dummyrolelist ALTER COLUMN Nom du rôle varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN RoleName varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN Nom d&#39;utilisateur varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN Type d&#39;utilisateur varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)","--Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBRoles"," - Obtenez les rôles pour cette base de données et chargez-les dans la table temporaire\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBRoles sélectionnez CONVERT (varchar (200), roles.name) en tant que NomRôle, CONVERT (varchar (200), members.name) AS NomUtilisateur, CONVERT (varchar (200), members.type_desc) AS UserType de sys.database_principals membres internes rejoindre sys.database_role_members drm sur members.principal_id = drm.member_principal_id rejoindre interne sys.database_principals rôles sur drm.role_principal_id = roles.principal_id où members.name &lt;&gt; &#39;&#39; &#39;&#39; dbo &#39;&#39;, ORDER BY membres\n --PRINT @cmd\n EXEC (@cmd)","- Ajoutez maintenant les rôles présents dans la base de données auxquels aucune personne ne leur a été affectée (ceux déjà présents dans la table temporaire)\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBRoles SELECT CONVERT (varchar (200), nom) AS NameName, &#39;&#39; --none-- &#39;&#39; As UserName, &#39;&#39; &#39;&#39; AS UserType FROM sys.database_principals WHERE type = &#39;&#39; R &#39;&#39; et is_fixed_role = 0 et nom &lt;&gt; &#39;&#39; public &#39;&#39; AND (nom NOT IN (SELECT NomRôle FROM #dummyDBRoles)) &#39;\n --PRINT @cmd\n EXEC (@cmd)","- obtenez maintenant une liste des rôles de base de données créés et imprimez-les sous forme d&#39;instructions CREATE ROLE\n si @outputtype = 2\n COMMENCER\n TRUNCATE TABLE #dummyrolelist\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyrolelist SELECT nom FROM sys.database_principals WHERE type = &#39;&#39; R &#39;&#39; AND nom &lt;&gt; &#39;&#39; public &#39;&#39; AND is_fixed_role = 0 &#39;\n --PRINT @cmd\n EXEC (@cmd)\nIMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n DÉCLARER myCursorVariable4 CURSOR FOR\nSELECT NomRôle FROM #dummyrolelist","OUVRIR myCursorVariable4"," - Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable4 INTO @rn"," WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @cmd = &#39;CREATE ROLE&#39; + @rn\n IMPRIMER @cmd","FETCH NEXT FROM myCursorVariable4 INTO @rn\n FIN","FERMER myCursorVariable4\n DEALLOCATE myCursorVariable4\n FIN"," --Obtenir la longueur de la plus longue occurrence des colonnes\n SELECT @rnmax = ISNULL (MAX (len (Nom du rôle)), 0) FROM #dummyDBRoles\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBRoles\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBRoles"," - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @rnmax &lt;25 SET @rnmax = 25\n si @unmax &lt;25 SET @unmax = 25\n si @utmax &lt;25 SET @utmax = 25"," --Définissez et imprimez les en-têtes de colonne pour les informations de rôle\n SET @ col1nm = &#39;NomRôle&#39;\n SET @ col1len = @rnmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;Nom d&#39;utilisateur&#39;\n SET @ col3len = @unmax\n SET @ col4nm = &#39;&#39;\n SET @ col4len = 5\n SET @ col5nm = &#39;UserType&#39;\n SET @ col5len = @utmax\n IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\nESPACE D&#39;IMPRESSION (10) + REPLIQUÉ (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICAT (&#39;=&#39;, @ col3len) + ESPACE (@ col4len) + REPLICAT (&#39;=&#39;, @ col5len)"," - Imprimez le script pour définir le contexte de la base de données\n si @outputtype = 2\n COMMENCER\n IMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n FIN"," --statement pour obtenir tous les rôles pour cette base de données\n --SELECT nom FROM sys.database_principals WHERE type = &#39;R&#39; et is_fixed_role = 0 et nom &lt;&gt; &#39;public&#39;\n --peut utiliser le script des instructions CREATE ROLE"," - Maintenant, parcourez les rôles\n DÉCLARER backupFiles2 CURSOR FOR\nSELECT Nom de rôle, Nom d&#39;utilisateur, Type d&#39;utilisateur FROM #dummyDBRoles ORDER BY Nom de rôle"," OPEN backupFiles2","- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @rn, @un, @ut","WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Définissez et imprimez les détails de la ligne pour les informations de rôle.\n SET @ col1nm = SUBSTRING (@ rn, 1, @ rnmax)\n SET @ col3nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col5nm = SUBSTRING (@ ut, 1, @ utmax)\n si @outputtype = 1\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\nsi @outputtype = 2\n COMMENCER\n if @ col3nm &lt;&gt; &#39;--none--&#39;\n PRINT &#39;exec sp_addrolemember [' + @col1nm + '], [' + @col3nm + '] --Usertype = &#39;+ @ col5nm\n autre\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\n FIN"," FETCH NEXT FROM backupFiles2 INTO @rn, @un, @ut\nFIN","FERMER backupFiles2\nDEALLOCATE backupFiles2"," IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n FIN"," \nsi @includeobjlvlperms = 1\n COMMENCER\n / * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur les autorisations de niveau objet * /\n --Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBPerms"," - Obtenir les autorisations pour cette base de données et charger dans la table temporaire\n - Je suis sûr que certaines de ces pièces sont venues d&#39;ailleurs. Mes appologies à l&#39;initiateur.\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBPerms &#39;\n SET @cmd = @cmd + &#39;select p.state_desc, p.permission_name, s.name, o.name, u.name, CASE o.type WHEN&#39; &#39;P&#39; &#39;THEN&#39; &#39;SPROC&#39; &#39;\n QUAND &#39;&#39; V &#39;&#39; ALORS &#39;&#39; View &#39;&#39;\n QUAND &#39;&#39; U &#39;&#39; ALORS &#39;&#39; Table &#39;&#39;\n QUAND &#39;&#39; FN &#39;&#39; ALORS &#39;&#39; Fonction (détartreur) &#39;&#39;\n QUAND &#39;&#39; TF &#39;&#39; THEN &#39;&#39; Fonction (valeur de table) &#39;&#39;\n ELSE o.type_desc END AS ObjectType,\n CONVERT (varchar (200), u.type_desc) AS UserType\n de sys.database_permissions p\njointure interne sys.objects o sur p.major_id = o.object_id\njointure interne sys.schemas s sur s.schema_id = o.schema_id\njointure interne sys.database_principals u sur p.grantee_principal_id = u.principal_id\n ORDER BY o.type, o.name collate Latin1_general_CI_AS, u.name collate Latin1_general_CI_AS &#39;\n --PRINT @cmd\n EXEC (@cmd)","--Obtenir la longueur de la plus longue occurrence de chacune des colonnes\n SELECT @sdmax = ISNULL (MAX (len (StateDesc)), 0) FROM #dummyDBPerms\n SELECT @pnmax = ISNULL (MAX (len (PermName)), 0) FROM #dummyDBPerms\n SELECT @snmax = ISNULL (MAX (len (SchemaName)), 0) FROM #dummyDBPerms\n SELECT @onmax = ISNULL (MAX (len (ObjectName)), 0) FROM #dummyDBPerms\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBPerms\n SELECT @pdmax = ISNULL (MAX (len (ObjectType)), 0) FROM #dummyDBPerms\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBPerms"," - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @sdmax &lt;15 SET @sdmax = 15\n si @pnmax &lt;15 SET @pnmax = 15\n si @snmax &lt;10 SET @snmax = 10\n si @onmax &lt;15 SET @onmax = 15\n si @unmax &lt;15 SET @unmax = 15\n si @pdmax &lt;15 SET @pdmax = 15 --ObjectType\n si @utmax &lt;15 SET @utmax = 15 --UserType"," --Placez et imprimez les en-têtes de colonne pour les informations de permissions\n SET @ col1nm = &#39;StateDesc&#39;\n SET @ col1len = @sdmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;PermName&#39;\n SET @ col3len = @pnmax\n SET @ col4nm = &#39;&#39;\n SET @ col4len = 5\n SET @ col5nm = &#39;Schema&#39;\n SET @ col5len = @snmax\n SET @ col6nm = &#39;&#39;\n SET @ col6len = 5\n SET @ col7nm = &#39;Object&#39;\n SET @ col7len = @onmax\n SET @ col8nm = &#39;&#39;\n SET @ col8len = 5\n SET @ col9nm = &#39;Utilisateur&#39;\n SET @ col9len = @unmax\n SET @ col10nm = &#39;&#39;\n SET @ col10len = 5\n SET @ col11nm = &#39;ObjectType&#39;\n SET @ col11len = @pdmax\n SET @ col12nm = &#39;&#39;\n SET @ col12len = 5\n SET @ col13nm = &#39;UserType&#39;\n SET @ col13len = @utmax"," IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm)) + ESPACE (@ col8len) + @ col9nm + ESPACE (@ col9len-len ( @ col9nm)) + ESPACE (@ col10len) + @ col11nm + ESPACE (@ col11len-len (@ col11nm)) + ESPACE (@ col12len) + @ col13nm + ESPACE (@ col13len-len (@ col13nm))\n ESPACE D&#39;IMPRESSION (10) + REPLIQUE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLIQUE (&#39;=&#39;, @ col3len) + ESPACE (@ col4len) + REPLIQUE (&#39;=&#39;, @ col5len) + ESPACE ( @ col6len) + REPLICATE (&#39;=&#39;, @ col7len) + SPACE (@ col8len) + REPLICATE (&#39;=&#39;, @ col9len) + SPACE (@ col10len) + REPLICATE (&#39;=&#39;, @ col11len) + SPACE (@ col12len ) + REPLICATE (&#39;=&#39;, @ col13len)"," --Consultez les autorisations pour cette base de données, formatez-les et imprimez-les\n DÉCLARER backupFiles2 CURSOR FOR\nSELECT StateDesc, PermName, SchemaName, ObjectName, UserName, ObjectType, UserType FROM #dummyDBPerms ORDER BY Schemaname, ObjectName, UserName"," OPEN backupFiles2","- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @sd, @pn, @sn, @on, @un, @pd, @ut"," WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Placez et imprimez les détails de la ligne pour les informations sur les autorisations\n SET @ col1nm = SUBSTRING (@ sd, 1, @ sdmax)\n SET @ col3nm = SUBSTRING (@ pn, 1, @ pnmax)\n SET @ col5nm = SUBSTRING (@ sn, 1, @ snmax)\n SET @ col7nm = SUBSTRING (@ on, 1, @ onmax)\n SET @ col9nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col11nm = SUBSTRING (@ pd, 1, @ pdmax)\n SET @ col13nm = SUBSTRING (@ ut, 1, @ utmax)"," --imprime l&#39;enregistrement de détail pour les permissions\n si @outputtype = 1\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm)) + ESPACE (@ col8len) + @ col9nm + ESPACE (@ col9len-len ( @ col9nm)) + ESPACE (@ col10len) + @ col11nm + ESPACE (@ col11len-len (@ col11nm)) + ESPACE (@ col12len) + @ col13nm + ESPACE (@ col13len-len (@ col13nm))\n si @outputtype = 2\n PRINT @ col1nm + &#39;&#39; + @ col3nm + &#39;ON [' + @col5nm + '].[' + @col7nm + '] À [' + @col9nm + '] --ObjectType = &#39;+ @ col11nm +&#39; UserType = &#39;+ @ col13nm"," FETCH NEXT FROM backupFiles2 INTO @sd, @pn, @sn, @on, @un, @ pd, @ ut\n FIN","FERMER backupFiles2\nDEALLOCATE backupFiles2"," IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;"," FIN"," si @outputtype = 2 ET @includedefaultdb = 1\n COMMENCER\n if EXISTS (nom SELECT de master.sys.server_Principals WHERE, saisissez (&#39;G&#39;, &#39;S&#39;, &#39;U&#39;) ET default_database_name = @dbn)\n COMMENCER\n IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n PRINT &#39;- Voici les noms d&#39;utilisateur et leurs paramètres de base de données par défaut&#39;\n IMPRESSION &#39; &#39;"," DÉCLARER CURSEUR myCursorVariable pour\nSELECT nom, default_database_name comme DefaultDB\nFROM master.sys.server_Principals\nWHERE saisissez (&#39;G&#39;, &#39;S&#39;, &#39;U&#39;) ET default_database_name = @dbn\n ORDRE PAR NOM"," OPEN myCursorVariable","- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable INTO @loginname, @dbnametouse"," WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nIMPRIMER &#39;ALTER LOGIN [' + @loginname + '] WITH DEFAULT_DATABASE = &#39;+ @dbnametouse"," FETCH NEXT FROM myCursorVariable INTO @loginname, @dbnametouse\n FIN","FERMER myCursorVariable\nDEALLOCATE myCursorVariable","IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n FIN\n FIN","IMPRIMER &#39;============================================= =============================================== ========= &#39;\n \n--Obtenir le prochain nom de base de données et informations à utiliser dans la boucle de base de données\n FETCH NEXT FROM backupFiles INTO @dbn, @rm, @cl, @rwd\nFIN","FERMER backupFiles\nDEALLOCATE backupfiles","/ * ============================================= ============================================== /\n--Dispose des tables temporaires\nDROP TABLE #DummyDBDesc\nDROP TABLE #dummyDBRoles\nDROP TABLE #dummyDBUsers\nDROP TABLE #dummyDBPerms\nDROP TABLE #dummyuserassign\nDROP TABLE #dummyrolelist","RÉGLER NOCOUNT","Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"],"content_blocks":[{"id":"text-1","type":"text","heading":"","plain_text":"Vous ne savez pas si c&#39;est exactement ce dont vous avez besoin, mais jetez un coup d&#39;œil:\n/ * ============================================= =============================================== ===================== * /\n/ * = Documentation d&#39;audit d&#39;audit de sécurité d&#39;instance = * /\n/ * ============================================= =============================================== ===================== * /\n/ * Date de création: 28/12/2011\n Par: VikingDBA\n Modifications:\n 08/07/2012 Modifié pour faire aussi des autorisations au niveau du serveur (comme VIEW ANY DATABASE, ou VIEW SERVER STATE)\n 01/09/2013 Changement pour imprimer les scripts afin de créer les instructions CREATE ROLE et CREATE USER\n 31/01/2013 Modifié pour imprimer les instructions de niveau serveur et les instructions pour définir les valeurs par défaut\nbases de données pour les utilisateurs\n \nDépendances:\n Ce script dépend des éléments suivants pour exister:\n aucun","html":"<p>Vous ne savez pas si c&#039;est exactement ce dont vous avez besoin, mais jetez un coup d&#039;œil:\n/ * ============================================= =============================================== ===================== * /\n/ * = Documentation d&#039;audit d&#039;audit de sécurité d&#039;instance = * /\n/ * ============================================= =============================================== ===================== * /\n/ * Date de création: 28/12/2011\n Par: VikingDBA\n Modifications:\n 08/07/2012 Modifié pour faire aussi des autorisations au niveau du serveur (comme VIEW ANY DATABASE, ou VIEW SERVER STATE)\n 01/09/2013 Changement pour imprimer les scripts afin de créer les instructions CREATE ROLE et CREATE USER\n 31/01/2013 Modifié pour imprimer les instructions de niveau serveur et les instructions pour définir les valeurs par défaut\nbases de données pour les utilisateurs\n \nDépendances:\n Ce script dépend des éléments suivants pour exister:\n aucun</p>"},{"id":"text-2","type":"text","heading":"","plain_text":" Sommaire:\n Ce script crée la documentation de toutes les bases de données d’une instance, y compris les autorisations au niveau du serveur et le rôle de la base de données.\n autorisations et autorisations individuelles des objets de base de données.","html":"<p> Sommaire:\n Ce script crée la documentation de toutes les bases de données d’une instance, y compris les autorisations au niveau du serveur et le rôle de la base de données.\n autorisations et autorisations individuelles des objets de base de données.</p>"},{"id":"text-3","type":"text","heading":"","plain_text":"Notez que le fait de changer les ensembles @outputtype = 1 pour columnar (style de rapport) et que la valeur 2 crée les instructions d&#39;affectation","html":"<p>Notez que le fait de changer les ensembles @outputtype = 1 pour columnar (style de rapport) et que la valeur 2 crée les instructions d&#039;affectation</p>"},{"id":"text-4","type":"text","heading":"","plain_text":" REMARQUE: s&#39;exécute pour toutes les bases de données, sauf si une base de données spécifique est utilisée dans la clause WHERE ci-dessous.\n Consultez également la section Variables à définir par l&#39;utilisateur ci-dessous pour savoir si des variables doivent être définies.\n* /","html":"<p> REMARQUE: s&#039;exécute pour toutes les bases de données, sauf si une base de données spécifique est utilisée dans la clause WHERE ci-dessous.\n Consultez également la section Variables à définir par l&#039;utilisateur ci-dessous pour savoir si des variables doivent être définies.\n* /</p>"},{"id":"text-5","type":"text","heading":"","plain_text":"Utilisez MASTER","html":"<p>Utilisez MASTER</p>"},{"id":"text-6","type":"text","heading":"","plain_text":"SET NOCOUNT ON","html":"<p>SET NOCOUNT ON</p>"},{"id":"text-7","type":"text","heading":"","plain_text":"/ * ============================================= =============================================== ================== * /\n- Audit de sécurité pour les rôles de serveur\nDECLARE @sr varchar (100)\nDECLARE @mn varchar (150)\nDECLARE @cmd varchar (4000)\nDECLARE @ col1nm varchar (200)\nDECLARE @ col2nm varchar (200)\nDECLARE @ col3nm varchar (200)\nDECLARE @ col4nm varchar (200)\nDECLARE @ col5nm varchar (200)\nDECLARE @ col6nm varchar (200)\nDECLARE @ col7nm varchar (200)\nDECLARE @ col8nm varchar (200)\nDECLARE @ col9nm varchar (200)\nDECLARE @ col10nm varchar (200)\nDECLARE @ col11nm varchar (200)\nDECLARE @ col12nm varchar (200)\nDECLARE @ col13nm varchar (200)\nDECLARE @ col14nm varchar (200)\nDECLARE @ col15nm varchar (200)\nDECLARE @ col16nm varchar (200)\nDECLARE @ col17nm varchar (200)\nDECLARE @ col18nm varchar (200)\nDECLARE @ col19nm varchar (200)\nDECLARE @ col20nm varchar (200)\nDECLARE @ col1len int\nDECLARE @ col2len int\nDECLARE @ col3len int\nDECLARE @ col4len int\nDECLARE @ col5len int\nDECLARE @ col6len int\nDECLARE @ col7len int\nDECLARE @ col8len int\nDECLARE @ col9len int\nDECLARE @ col10len int\nDECLARE @ col11len int\nDECLARE @ col12len int\nDECLARE @ col13len int\nDECLARE @ col14len int\nDECLARE @ col15len int\nDECLARE @ col16len int\nDECLARE @ col17len int\nDECLARE @ col18len int\nDECLARE @ col19len int\nDECLARE @ col20len int\nDECLARE @ col1max int\nDECLARE @ col2max int\nDECLARE @ col3max int\nDECLARE @ col4max int\nDECLARE @ col5max int\nDECLARE @ col6max int\nDECLARE @ col7max int\nDECLARE @ col8max int\nDECLARE @ col9max int\nDECLARE @ col10max int\nDECLARE @ col11max int\nDECLARE @ col12max int\nDECLARE @ col13max int\nDECLARE @ col14max int\nDECLARE @ col15max int\nDECLARE @ col16max int\nDECLARE @ col17max int\nDECLARE @ col18max int\nDECLARE @ col19max int\nDECLARE @ col20max int\nDECLARE @ col1min int\nDECLARE @ col2min int\nDECLARE @ col3min int\nDECLARE @ col4min int\nDECLARE @ col5min int\nDECLARE @ col6min int\nDECLARE @ col7min int\nDECLARE @ col8min int\nDECLARE @ col9min int\nDECLARE @ col10min int\nDECLARE @ col11min int\nDECLARE @ col12min int\nDECLARE @ col13min int\nDECLARE @ col14min int\nDECLARE @ col15min int\nDECLARE @ col16min int\nDECLARE @ col17min int\nDECLARE @ col18min int\nDECLARE @ col19min int\nDECLARE @ col20min int\nDECLARE @rn varchar (200)\nDECLARE @un varchar (200)\nDECLARE @ut varchar (200)\nDECLARE @sd varchar (200)\nDECLARE @pn varchar (200)\nDECLARE @sn varchar (200)\nDÉCLARE @on varchar (200)\nDECLARE @pd varchar (200)\nDÉCLARE @sdmax int\nDECLARE @pnmax int\nDÉCLARE @snmax int\nDÉCLARER @onmax int\nDECLARE @pdmax int\nDECLARE @unmax int\nDECLARE @rnmax int\nDÉCLARE @utmax int\nDECLARE @outputtype int\nDECLARE @prodlevel varchar (25)\nDECLARE @version varchar (250)\nDEClARE @prodver varchar (50)\nDECLARE @edition varchar (50)\nDÉCLARER bit @includeobjlvlperms\nDECLARE @includeroleinfo bit\nDECLARE @includedefaultdb bit\nDECLARE @usnm varchar (128)\nDÉCLARE @ustp varchar (60)\nDECLARE @stdsc varchar (60)\nDECLARE @permnm varchar (128)\nDECLARE @collationname varchar (200)\nDECLARE @lineval varchar (2000)\nDECLARE @loginname varchar (100)\nDECLARE @dbnametouse sysname","html":"<p>/ * ============================================= =============================================== ================== * /\n- Audit de sécurité pour les rôles de serveur\nDECLARE @sr varchar (100)\nDECLARE @mn varchar (150)\nDECLARE @cmd varchar (4000)\nDECLARE @ col1nm varchar (200)\nDECLARE @ col2nm varchar (200)\nDECLARE @ col3nm varchar (200)\nDECLARE @ col4nm varchar (200)\nDECLARE @ col5nm varchar (200)\nDECLARE @ col6nm varchar (200)\nDECLARE @ col7nm varchar (200)\nDECLARE @ col8nm varchar (200)\nDECLARE @ col9nm varchar (200)\nDECLARE @ col10nm varchar (200)\nDECLARE @ col11nm varchar (200)\nDECLARE @ col12nm varchar (200)\nDECLARE @ col13nm varchar (200)\nDECLARE @ col14nm varchar (200)\nDECLARE @ col15nm varchar (200)\nDECLARE @ col16nm varchar (200)\nDECLARE @ col17nm varchar (200)\nDECLARE @ col18nm varchar (200)\nDECLARE @ col19nm varchar (200)\nDECLARE @ col20nm varchar (200)\nDECLARE @ col1len int\nDECLARE @ col2len int\nDECLARE @ col3len int\nDECLARE @ col4len int\nDECLARE @ col5len int\nDECLARE @ col6len int\nDECLARE @ col7len int\nDECLARE @ col8len int\nDECLARE @ col9len int\nDECLARE @ col10len int\nDECLARE @ col11len int\nDECLARE @ col12len int\nDECLARE @ col13len int\nDECLARE @ col14len int\nDECLARE @ col15len int\nDECLARE @ col16len int\nDECLARE @ col17len int\nDECLARE @ col18len int\nDECLARE @ col19len int\nDECLARE @ col20len int\nDECLARE @ col1max int\nDECLARE @ col2max int\nDECLARE @ col3max int\nDECLARE @ col4max int\nDECLARE @ col5max int\nDECLARE @ col6max int\nDECLARE @ col7max int\nDECLARE @ col8max int\nDECLARE @ col9max int\nDECLARE @ col10max int\nDECLARE @ col11max int\nDECLARE @ col12max int\nDECLARE @ col13max int\nDECLARE @ col14max int\nDECLARE @ col15max int\nDECLARE @ col16max int\nDECLARE @ col17max int\nDECLARE @ col18max int\nDECLARE @ col19max int\nDECLARE @ col20max int\nDECLARE @ col1min int\nDECLARE @ col2min int\nDECLARE @ col3min int\nDECLARE @ col4min int\nDECLARE @ col5min int\nDECLARE @ col6min int\nDECLARE @ col7min int\nDECLARE @ col8min int\nDECLARE @ col9min int\nDECLARE @ col10min int\nDECLARE @ col11min int\nDECLARE @ col12min int\nDECLARE @ col13min int\nDECLARE @ col14min int\nDECLARE @ col15min int\nDECLARE @ col16min int\nDECLARE @ col17min int\nDECLARE @ col18min int\nDECLARE @ col19min int\nDECLARE @ col20min int\nDECLARE @rn varchar (200)\nDECLARE @un varchar (200)\nDECLARE @ut varchar (200)\nDECLARE @sd varchar (200)\nDECLARE @pn varchar (200)\nDECLARE @sn varchar (200)\nDÉCLARE @on varchar (200)\nDECLARE @pd varchar (200)\nDÉCLARE @sdmax int\nDECLARE @pnmax int\nDÉCLARE @snmax int\nDÉCLARER @onmax int\nDECLARE @pdmax int\nDECLARE @unmax int\nDECLARE @rnmax int\nDÉCLARE @utmax int\nDECLARE @outputtype int\nDECLARE @prodlevel varchar (25)\nDECLARE @version varchar (250)\nDEClARE @prodver varchar (50)\nDECLARE @edition varchar (50)\nDÉCLARER bit @includeobjlvlperms\nDECLARE @includeroleinfo bit\nDECLARE @includedefaultdb bit\nDECLARE @usnm varchar (128)\nDÉCLARE @ustp varchar (60)\nDECLARE @stdsc varchar (60)\nDECLARE @permnm varchar (128)\nDECLARE @collationname varchar (200)\nDECLARE @lineval varchar (2000)\nDECLARE @loginname varchar (100)\nDECLARE @dbnametouse sysname</p>"},{"id":"text-8","type":"text","heading":"","plain_text":"/ * ============================================= ============================================== * /\n- Variables paramétrables par l&#39;utilisateur\nSET @outputtype = 1 - 1 = en colonne 2 = instructions d&#39;affectation\nSET @includeobjlvlperms = 1\nSET @includeroleinfo = 1\nSET @includedefaultdb = 1\n/ * ============================================= ============================================== * /","html":"<p>/ * ============================================= ============================================== * /\n- Variables paramétrables par l&#039;utilisateur\nSET @outputtype = 1 - 1 = en colonne 2 = instructions d&#039;affectation\nSET @includeobjlvlperms = 1\nSET @includeroleinfo = 1\nSET @includedefaultdb = 1\n/ * ============================================= ============================================== * /</p>"},{"id":"text-9","type":"text","heading":"","plain_text":"SELECT @ prodlevel = CONVERT (varchar (25), SERVERPROPERTY (&#39;ProductLevel&#39;))\nSELECT @ version = CONVERT (varchar (250), @@ VERSION)\nSELECT @ prodver = CONVERT (varchar (50), SERVERPROPERTY (&#39;ProductVersion&#39;))\nSELECT @ edition = CONVERT (varchar (50), SERVERPROPERTY (&#39;Edition&#39;))\n/ * ============================================= ============================= /\n--Trouver une ligne de démarcation\nDECLARE @lvaltouse varchar (2000)\nDECLARE @lvallength int\nDECLARE @lvalct int\nDECLARE @spotcat int\nDECLARE @spotcatval int\nDECLARE @ lval1 varchar (2000)\nDECLARE @ lval2 varchar (2000)\nDECLARE @ lval3 varchar (2000)\nDECLARE @ lval4 varchar (2000)\nDECLARE @ lval5 varchar (2000)\nDECLARE @ lval6 varchar (2000)\nSET @lvaltouse = @version\nSET @lvallength = LEN (@lvaltouse)\nSET @lvalct = 1\nSET @spotcat = 1\nSET @ lval1 = &#39;&#39;\nSET @ lval2 = &#39;&#39;\nSET @ lval3 = &#39;&#39;\nSET @ lval4 = &#39;&#39;\nSET @ lval5 = &#39;&#39;\nSET @ lval6 = &#39;&#39;\nPENDANT @spotcat &lt;= @lvallength\n COMMENCER\n SET @spotcatval = ASCII (SUBSTRING (@ lvaltouse, @ spotcat, 1))\n if @spotcatval = 10 - valeur recherchée\n SET @lvalct = @lvalct + 1 - défini pour passer à la ligne suivante et commencer à la construire\n else - ajoute à la ligne de valeur actuelle\n COMMENCER\n if @spotcatval &lt;&gt; 9 - valeurs que nous voulons exclure\n COMMENCER\n si @lvalct = 1\n SET @ lval1 = @ lval1 + CHAR (@spotcatval)\n si @lvalct = 2\n SET @ lval2 = @ lval2 + CHAR (@spotcatval)\n si @lvalct = 3\n SET @ lval3 = @ lval3 + CHAR (@spotcatval)\n si @lvalct = 4\n SET @ lval4 = @ lval4 + CHAR (@spotcatval)\n si @lvalct = 5\n SET @ lval5 = @ lval5 + CHAR (@spotcatval)\n si @lvalct = 6\n SET @ lval6 = @ lval6 + CHAR (@spotcatval)\n FIN\n FIN\n SET @spotcat = @spotcat + 1\n FIN\n --PRINT &#39;Ligne à scinder =&#39; + @lvaltouse\n --PRINT &#39;line1 =&#39; + @ lval1\n --PRINT &#39;line2 =&#39; + @ lval2\n --PRINT &#39;line3 =&#39; + @ lval3\n --PRINT &#39;line4 =&#39; + @ lval4\n --PRINT &#39;line5 =&#39; + @ lval5\n --PRINT &#39;line6 =&#39; + @ lval6\n/ * ============================================= ============================== /\nCREATE TABLE #dummyuserassign\n(RecID int IDENTITY,\nLineVal varchar (2000)\n)","html":"<p>SELECT @ prodlevel = CONVERT (varchar (25), SERVERPROPERTY (&#039;ProductLevel&#039;))\nSELECT @ version = CONVERT (varchar (250), @@ VERSION)\nSELECT @ prodver = CONVERT (varchar (50), SERVERPROPERTY (&#039;ProductVersion&#039;))\nSELECT @ edition = CONVERT (varchar (50), SERVERPROPERTY (&#039;Edition&#039;))\n/ * ============================================= ============================= /\n--Trouver une ligne de démarcation\nDECLARE @lvaltouse varchar (2000)\nDECLARE @lvallength int\nDECLARE @lvalct int\nDECLARE @spotcat int\nDECLARE @spotcatval int\nDECLARE @ lval1 varchar (2000)\nDECLARE @ lval2 varchar (2000)\nDECLARE @ lval3 varchar (2000)\nDECLARE @ lval4 varchar (2000)\nDECLARE @ lval5 varchar (2000)\nDECLARE @ lval6 varchar (2000)\nSET @lvaltouse = @version\nSET @lvallength = LEN (@lvaltouse)\nSET @lvalct = 1\nSET @spotcat = 1\nSET @ lval1 = &#039;&#039;\nSET @ lval2 = &#039;&#039;\nSET @ lval3 = &#039;&#039;\nSET @ lval4 = &#039;&#039;\nSET @ lval5 = &#039;&#039;\nSET @ lval6 = &#039;&#039;\nPENDANT @spotcat &lt;= @lvallength\n COMMENCER\n SET @spotcatval = ASCII (SUBSTRING (@ lvaltouse, @ spotcat, 1))\n if @spotcatval = 10 - valeur recherchée\n SET @lvalct = @lvalct + 1 - défini pour passer à la ligne suivante et commencer à la construire\n else - ajoute à la ligne de valeur actuelle\n COMMENCER\n if @spotcatval &lt;&gt; 9 - valeurs que nous voulons exclure\n COMMENCER\n si @lvalct = 1\n SET @ lval1 = @ lval1 + CHAR (@spotcatval)\n si @lvalct = 2\n SET @ lval2 = @ lval2 + CHAR (@spotcatval)\n si @lvalct = 3\n SET @ lval3 = @ lval3 + CHAR (@spotcatval)\n si @lvalct = 4\n SET @ lval4 = @ lval4 + CHAR (@spotcatval)\n si @lvalct = 5\n SET @ lval5 = @ lval5 + CHAR (@spotcatval)\n si @lvalct = 6\n SET @ lval6 = @ lval6 + CHAR (@spotcatval)\n FIN\n FIN\n SET @spotcat = @spotcat + 1\n FIN\n --PRINT &#039;Ligne à scinder =&#039; + @lvaltouse\n --PRINT &#039;line1 =&#039; + @ lval1\n --PRINT &#039;line2 =&#039; + @ lval2\n --PRINT &#039;line3 =&#039; + @ lval3\n --PRINT &#039;line4 =&#039; + @ lval4\n --PRINT &#039;line5 =&#039; + @ lval5\n --PRINT &#039;line6 =&#039; + @ lval6\n/ * ============================================= ============================== /\nCREATE TABLE #dummyuserassign\n(RecID int IDENTITY,\nLineVal varchar (2000)\n)</p>"},{"id":"text-10","type":"text","heading":"","plain_text":"IMPRIMER &#39;============================================= =============================================== =========== &#39;\nIMPRIMER &#39;Audit de sécurité pour instance de serveur&#39; + CONVERT (varchar (128), @@ nomserveur)\nsi @outputtype = 2\n IMPRIMER &#39;Déclarations d&#39;attribution&#39;\nPRINT &#39;For&#39; + CONVERT (varchar (128), getdate (), 101) + &#39;&#39; + CONVERT (varchar (128), getdate (), 108)\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nPRINT &#39;Version du serveur SQL:&#39; + @ lval1\nIMPRIMER &#39;&#39; + @ lval4\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nPRINT &#39;REMARQUE: veillez à obtenir la liste des connexions à l&#39;aide de la procédure stockée sp_help_revlogin de la base de données master.&#39;\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nIMPRIMER &#39;Paramètres de sécurité du rôle serveur&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;","html":"<p>IMPRIMER &#039;============================================= =============================================== =========== &#039;\nIMPRIMER &#039;Audit de sécurité pour instance de serveur&#039; + CONVERT (varchar (128), @@ nomserveur)\nsi @outputtype = 2\n IMPRIMER &#039;Déclarations d&#039;attribution&#039;\nPRINT &#039;For&#039; + CONVERT (varchar (128), getdate (), 101) + &#039;&#039; + CONVERT (varchar (128), getdate (), 108)\nIMPRIMER &#039;============================================= =============================================== =========== &#039;\nPRINT &#039;Version du serveur SQL:&#039; + @ lval1\nIMPRIMER &#039;&#039; + @ lval4\nIMPRIMER &#039;============================================= =============================================== =========== &#039;\nPRINT &#039;REMARQUE: veillez à obtenir la liste des connexions à l&#039;aide de la procédure stockée sp_help_revlogin de la base de données master.&#039;\nIMPRIMER &#039;============================================= =============================================== =========== &#039;\nIMPRIMER &#039;Paramètres de sécurité du rôle serveur&#039;\nIMPRESSION &#039; &#039;\nIMPRESSION &#039; &#039;</p>"},{"id":"text-11","type":"text","heading":"","plain_text":"CREATE TABLE #rolememberdummy\n(ServerRole varchar (100),\nNom du membre varchar (150),\nMemberSID varchar (2000)\n)\nCREATE TABLE #dummyDBPerms\n(StateDesc varchar (200),\n PermName varchar (200),\n SchemaName varchar (200),\n ObjectName varchar (200),\n Nom d&#39;utilisateur varchar (200),\n ObjectType varchar (200),\n Type d&#39;utilisateur varchar (200)\n)","html":"<p>CREATE TABLE #rolememberdummy\n(ServerRole varchar (100),\nNom du membre varchar (150),\nMemberSID varchar (2000)\n)\nCREATE TABLE #dummyDBPerms\n(StateDesc varchar (200),\n PermName varchar (200),\n SchemaName varchar (200),\n ObjectName varchar (200),\n Nom d&#039;utilisateur varchar (200),\n ObjectType varchar (200),\n Type d&#039;utilisateur varchar (200)\n)</p>"},{"id":"text-12","type":"text","heading":"","plain_text":"- Audit de sécurité\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;sysadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;securityadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;serveradmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;dbcreator&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;diskadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;processadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;setupadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;bulkadmin&#39;","html":"<p>- Audit de sécurité\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#039;sysadmin&#039;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#039;securityadmin&#039;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#039;serveradmin&#039;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#039;dbcreator&#039;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#039;diskadmin&#039;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#039;processadmin&#039;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#039;setupadmin&#039;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#039;bulkadmin&#039;</p>"},{"id":"text-13","type":"text","heading":"","plain_text":"SET @ col1nm = &#39;Role&#39;\nSET @ col1len = 20\nSET @ col2nm = &#39;&#39;\nSET @ col2len = 8\nSET @ col3nm = &#39;Nom du membre&#39;\nSET @ col3len = 30\nIMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm\nPRINT REPLICATE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICATE (&#39;=&#39;, @ col3len)","html":"<p>SET @ col1nm = &#039;Role&#039;\nSET @ col1len = 20\nSET @ col2nm = &#039;&#039;\nSET @ col2len = 8\nSET @ col3nm = &#039;Nom du membre&#039;\nSET @ col3len = 30\nIMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm\nPRINT REPLICATE (&#039;=&#039;, @ col1len) + ESPACE (@ col2len) + REPLICATE (&#039;=&#039;, @ col3len)</p>"},{"id":"text-14","type":"text","heading":"","plain_text":"--SELECT CONVERT (varchar (30), ServerRole) en tant que ServerRole, CONVERT (varchar (30), MemberName) AS MemberName FROM #rolememberdummy\nDÉCLARER backupfiles CURSEUR POUR\nSELECT ServerRole, MemberName FROM #rolememberdummy","html":"<p>--SELECT CONVERT (varchar (30), ServerRole) en tant que ServerRole, CONVERT (varchar (30), MemberName) AS MemberName FROM #rolememberdummy\nDÉCLARER backupfiles CURSEUR POUR\nSELECT ServerRole, MemberName FROM #rolememberdummy</p>"},{"id":"text-15","type":"text","heading":"","plain_text":"OPEN backupFiles","html":"<p>OPEN backupFiles</p>"},{"id":"text-16","type":"text","heading":"","plain_text":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @sr, @mn","html":"<p>- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @sr, @mn</p>"},{"id":"text-17","type":"text","heading":"","plain_text":"WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @ col1nm = @sr\n SET @ col1len = 20\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 8\n SET @ col3nm = @mn\n SET @ col3len = 30\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm","html":"<p>WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @ col1nm = @sr\n SET @ col1len = 20\n SET @ col2nm = &#039;&#039;\n SET @ col2len = 8\n SET @ col3nm = @mn\n SET @ col3len = 30\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm</p>"},{"id":"text-18","type":"text","heading":"","plain_text":" FETCH NEXT FROM backupFiles INTO @sr, @mn\nFIN","html":"<p> FETCH NEXT FROM backupFiles INTO @sr, @mn\nFIN</p>"},{"id":"text-19","type":"text","heading":"","plain_text":"FERMER backupFiles\nDEALLOCATE backupfiles","html":"<p>FERMER backupFiles\nDEALLOCATE backupfiles</p>"},{"id":"text-20","type":"text","heading":"","plain_text":"DROP TABLE #rolememberdummy","html":"<p>DROP TABLE #rolememberdummy</p>"},{"id":"text-21","type":"text","heading":"","plain_text":"IMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;\nIMPRIMER &#39;============================================= =============================================== ========= &#39;\nIMPRIMER &#39;Autorisations au niveau du serveur&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;","html":"<p>IMPRESSION &#039; &#039;\nIMPRESSION &#039; &#039;\nIMPRIMER &#039;============================================= =============================================== ========= &#039;\nIMPRIMER &#039;Autorisations au niveau du serveur&#039;\nIMPRESSION &#039; &#039;\nIMPRESSION &#039; &#039;</p>"},{"id":"text-22","type":"text","heading":"","plain_text":"CREATE TABLE #serverpermdummy\n(Nom d&#39;utilisateur varchar (128),\nType d&#39;utilisateur varchar (60),\nStateDesc varchar (60),\nPermName varchar (128)\n)","html":"<p>CREATE TABLE #serverpermdummy\n(Nom d&#039;utilisateur varchar (128),\nType d&#039;utilisateur varchar (60),\nStateDesc varchar (60),\nPermName varchar (128)\n)</p>"},{"id":"text-23","type":"text","heading":"","plain_text":"INSERT INTO #serverpermdummy\nSELECT l.name comme nom d&#39;utilisateur, l.type_desc AS UserType, p.state_desc AS StateDesc, p.permission_name AS PermName\nFROM sys.server_permissions AS p\nJOIN sys.server_principals AS l ON p.grantee_principal_id = l.principal_id\nWHERE ((nom_autorisation &lt;&gt; &#39;CONNECT SQL&#39; ET nom_autorisation &lt;&gt; &#39;CONNECT&#39;) OU p.state_desc = &#39;DENY&#39;) ET l.type_desc &lt;&gt; &#39;CERTIFICATE_MAPPED_LOGIN&#39; ET l.nom NE PAS LIKE &#39;% # MS_%&#39;\nORDER BY l.principal_id","html":"<p>INSERT INTO #serverpermdummy\nSELECT l.name comme nom d&#039;utilisateur, l.type_desc AS UserType, p.state_desc AS StateDesc, p.permission_name AS PermName\nFROM sys.server_permissions AS p\nJOIN sys.server_principals AS l ON p.grantee_principal_id = l.principal_id\nWHERE ((nom_autorisation &lt;&gt; &#039;CONNECT SQL&#039; ET nom_autorisation &lt;&gt; &#039;CONNECT&#039;) OU p.state_desc = &#039;DENY&#039;) ET l.type_desc &lt;&gt; &#039;CERTIFICATE_MAPPED_LOGIN&#039; ET l.nom NE PAS LIKE &#039;% # MS_%&#039;\nORDER BY l.principal_id</p>"},{"id":"text-24","type":"text","heading":"","plain_text":"--SELECT * FROM sys.server_principals","html":"<p>--SELECT * FROM sys.server_principals</p>"},{"id":"text-25","type":"text","heading":"","plain_text":"SET @ col1nm = &#39;Nom d&#39;utilisateur&#39;\nSET @ col1len = 20\nSET @ col2nm = &#39;&#39;\nSET @ col2len = 8\nSET @ col3nm = &#39;Type d&#39;utilisateur&#39;\nSET @ col3len = 20\nSET @ col4nm = &#39;&#39;\nSET @ col4len = 8\nSET @ col5nm = &#39;State Desc&#39;\nSET @ col5len = 20\nSET @ col6nm = &#39;&#39;\nSET @ col6len = 8\nSET @ col7nm = &#39;Permission&#39;\nSET @ col7len = 30","html":"<p>SET @ col1nm = &#039;Nom d&#039;utilisateur&#039;\nSET @ col1len = 20\nSET @ col2nm = &#039;&#039;\nSET @ col2len = 8\nSET @ col3nm = &#039;Type d&#039;utilisateur&#039;\nSET @ col3len = 20\nSET @ col4nm = &#039;&#039;\nSET @ col4len = 8\nSET @ col5nm = &#039;State Desc&#039;\nSET @ col5len = 20\nSET @ col6nm = &#039;&#039;\nSET @ col6len = 8\nSET @ col7nm = &#039;Permission&#039;\nSET @ col7len = 30</p>"},{"id":"text-26","type":"text","heading":"","plain_text":"SET @ col1min = LEN (@ col1nm)\nSET @ col3min = LEN (@ col3nm)\nSET @ col5min = LEN (@ col5nm)\nSET @ col7min = LEN (@ col7nm)","html":"<p>SET @ col1min = LEN (@ col1nm)\nSET @ col3min = LEN (@ col3nm)\nSET @ col5min = LEN (@ col5nm)\nSET @ col7min = LEN (@ col7nm)</p>"},{"id":"text-27","type":"text","heading":"","plain_text":"--Obtenir la longueur de la plus longue occurrence des colonnes\nSELECT @ col1max = ISNULL (MAX (len (LTRIM (RTRIM (UserName)))), 0) FROM #serverpermdummy\nSELECT @ col3max = ISNULL (MAX (len (LTRIM (RTRIM (UserType)))), 0) FROM #serverpermdummy\nSELECT @ col5max = ISNULL (MAX (len (LTRIM (RTRIM (StateDesc)))), 0) FROM #serverpermdummy\nSELECT @ col7max = ISNULL (MAX (len (LTRIM (RTRIM (PermName)))), 0) FROM #serverpermdummy","html":"<p>--Obtenir la longueur de la plus longue occurrence des colonnes\nSELECT @ col1max = ISNULL (MAX (len (LTRIM (RTRIM (UserName)))), 0) FROM #serverpermdummy\nSELECT @ col3max = ISNULL (MAX (len (LTRIM (RTRIM (UserType)))), 0) FROM #serverpermdummy\nSELECT @ col5max = ISNULL (MAX (len (LTRIM (RTRIM (StateDesc)))), 0) FROM #serverpermdummy\nSELECT @ col7max = ISNULL (MAX (len (LTRIM (RTRIM (PermName)))), 0) FROM #serverpermdummy</p>"},{"id":"text-28","type":"text","heading":"","plain_text":"- Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\nif @ col1max &lt;@ col1min SET @ col1len = @ col1min sinon SET @ col1len = @ col1max\nsi @ col3max &lt;@ col3min SET @ col3len = @ col3min sinon SET @ col3len = @ col3max\nsi @ col5max &lt;@ col5min SET @ col5len = @ col5min sinon SET @ col5len = @ col5max\nsi @ col7max &lt;@ col7min SET @ col7len = @ col7min sinon SET @ col7len = @ col7max","html":"<p>- Définissez des valeurs minimales pour que la colonne ne s&#039;imprime pas rapidement\nif @ col1max &lt;@ col1min SET @ col1len = @ col1min sinon SET @ col1len = @ col1max\nsi @ col3max &lt;@ col3min SET @ col3len = @ col3min sinon SET @ col3len = @ col3max\nsi @ col5max &lt;@ col5min SET @ col5len = @ col5min sinon SET @ col5len = @ col5max\nsi @ col7max &lt;@ col7min SET @ col7len = @ col7min sinon SET @ col7len = @ col7max</p>"},{"id":"text-29","type":"text","heading":"","plain_text":"si @outputtype = 1\n COMMENCER\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len -len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm))\n PRINT REPLICATE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICATE (&#39;=&#39;, @ col3len) + SPACE (@ col4len) + REPLICAT (&#39;=&#39;, @ col5len) + SPACE (@ col6len) + REPLICATE (&#39;=&#39;, @ col7len)\n FIN\nautre\n si EXISTS (SELECT ISNULL (UserName, &#39;&#39;) AS UserName, ISNULL (UserType, &#39;&#39;) AS UserType, ISNULL (StateDesc, &#39;&#39;) AS StateDesc, ISNULL (PermName, &#39;&#39;) AS PermName FROM nom_serveurpermdummy)\n IMPRIMER &#39;UTILISER le maître;&#39;","html":"<p>si @outputtype = 1\n COMMENCER\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len -len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm))\n PRINT REPLICATE (&#039;=&#039;, @ col1len) + ESPACE (@ col2len) + REPLICATE (&#039;=&#039;, @ col3len) + SPACE (@ col4len) + REPLICAT (&#039;=&#039;, @ col5len) + SPACE (@ col6len) + REPLICATE (&#039;=&#039;, @ col7len)\n FIN\nautre\n si EXISTS (SELECT ISNULL (UserName, &#039;&#039;) AS UserName, ISNULL (UserType, &#039;&#039;) AS UserType, ISNULL (StateDesc, &#039;&#039;) AS StateDesc, ISNULL (PermName, &#039;&#039;) AS PermName FROM nom_serveurpermdummy)\n IMPRIMER &#039;UTILISER le maître;&#039;</p>"},{"id":"text-30","type":"text","heading":"","plain_text":"DÉCLARER backupfiles CURSEUR POUR\nSELECT ISNULL (UserName, &#39;&#39;) AS UserName, ISNULL (UserType, &#39;&#39;) AS UserType, ISNULL (StateDesc, &#39;&#39;) AS StateDesc, ISNULL (PermName, &#39;&#39;) AS PermName FROM #serverpermdummy","html":"<p>DÉCLARER backupfiles CURSEUR POUR\nSELECT ISNULL (UserName, &#039;&#039;) AS UserName, ISNULL (UserType, &#039;&#039;) AS UserType, ISNULL (StateDesc, &#039;&#039;) AS StateDesc, ISNULL (PermName, &#039;&#039;) AS PermName FROM #serverpermdummy</p>"},{"id":"text-31","type":"text","heading":"","plain_text":"OPEN backupFiles","html":"<p>OPEN backupFiles</p>"},{"id":"text-32","type":"text","heading":"","plain_text":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @usnm, @ustp, @stdsc, @permnm","html":"<p>- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @usnm, @ustp, @stdsc, @permnm</p>"},{"id":"text-33","type":"text","heading":"","plain_text":"WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @ col1nm = @usnm\n SET @ col2nm = &#39;&#39;\n SET @ col3nm = @ustp\n SET @ col4nm = &#39;&#39;\n SET @ col5nm = @stdsc\n SET @ col6nm = &#39;&#39;\n SET @ col7nm = @permnm\n si @outputtype = 1\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len -len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm))\n autre\n PRINT @stdsc + &#39;&#39; + @permnm + &#39;TO&#39; + @usnm + &#39;;&#39;","html":"<p>WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @ col1nm = @usnm\n SET @ col2nm = &#039;&#039;\n SET @ col3nm = @ustp\n SET @ col4nm = &#039;&#039;\n SET @ col5nm = @stdsc\n SET @ col6nm = &#039;&#039;\n SET @ col7nm = @permnm\n si @outputtype = 1\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len -len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm))\n autre\n PRINT @stdsc + &#039;&#039; + @permnm + &#039;TO&#039; + @usnm + &#039;;&#039;</p>"},{"id":"text-34","type":"text","heading":"","plain_text":" FETCH NEXT FROM backupFiles INTO @usnm, @ustp, @stdsc, @permnm\nFIN","html":"<p> FETCH NEXT FROM backupFiles INTO @usnm, @ustp, @stdsc, @permnm\nFIN</p>"},{"id":"text-35","type":"text","heading":"","plain_text":"FERMER backupFiles\nDEALLOCATE backupfiles","html":"<p>FERMER backupFiles\nDEALLOCATE backupfiles</p>"},{"id":"text-36","type":"text","heading":"","plain_text":"DROP TABLE #serverpermdummy","html":"<p>DROP TABLE #serverpermdummy</p>"},{"id":"text-37","type":"text","heading":"","plain_text":"IMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;\nIMPRIMER &#39;============================================= =============================================== ========= &#39;\nIMPRIMER &#39;Information par base de données&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;","html":"<p>IMPRESSION &#039; &#039;\nIMPRESSION &#039; &#039;\nIMPRIMER &#039;============================================= =============================================== ========= &#039;\nIMPRIMER &#039;Information par base de données&#039;\nIMPRESSION &#039; &#039;\nIMPRESSION &#039; &#039;</p>"},{"id":"text-38","type":"text","heading":"","plain_text":"CREATE TABLE #DummyDBDesc\n(RecID int IDENTITY NOT NULL,\n NomServeur varchar (128) NULL,\n DBName varchar (100) NULL,\n Modèle de restauration varchar (10) NULL,\n CompatibilityLevel varchar (30) NULL,\n ReadWriteDesc varchar (10) NULL\n)\nCREATE TABLE #dummyDBRoles\n(RoleName varchar (200),\n Nom d&#39;utilisateur varchar (200),\n Type d&#39;utilisateur varchar (200)\n)","html":"<p>CREATE TABLE #DummyDBDesc\n(RecID int IDENTITY NOT NULL,\n NomServeur varchar (128) NULL,\n DBName varchar (100) NULL,\n Modèle de restauration varchar (10) NULL,\n CompatibilityLevel varchar (30) NULL,\n ReadWriteDesc varchar (10) NULL\n)\nCREATE TABLE #dummyDBRoles\n(RoleName varchar (200),\n Nom d&#039;utilisateur varchar (200),\n Type d&#039;utilisateur varchar (200)\n)</p>"},{"id":"text-39","type":"text","heading":"","plain_text":"CREATE TABLE #dummyrolelist\n(Nom de rôle varchar (200)\n)","html":"<p>CREATE TABLE #dummyrolelist\n(Nom de rôle varchar (200)\n)</p>"},{"id":"text-40","type":"text","heading":"","plain_text":"CREATE TABLE #dummyDBUsers\n(Nom d&#39;utilisateur varchar (200),\n Type d&#39;utilisateur varchar (200)\n)\nINSERT INTO #DummyDBDesc\nsélectionnez CONVERT (varchar (128), @@ nom_serveur) AS ServerName, CONVERT (varchar (100), nom) en tant que DBName, CONVERT (varchar (10), recovery_model_desc) en tant que RecoveryModel, --database Base,\nCASE niveau_compatibilité\nWHEN 80 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2000 *&#39;\nWHEN 90 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2005&#39;\nWHEN 100 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2008&#39;\nWHEN 105 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2008 R2&#39;\nWHEN 110 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2012&#39;\nELSE CONVERT (varchar (4), niveau_compatibilité)\nEND AS CompatibilityLevel,\nCASE is_read_only\nQUAND 0 ALORS CONVERTIR (varchar (10), &#39;RW&#39;)\nELSE CONVERT (varchar (10), &#39;R&#39;)\nFIN comme ReadWriteDesc\nFROM sys.databases\nWHERE nom NOT IN (&#39;tempdb&#39;, &#39;master&#39;, &#39;msdb&#39;, &#39;model&#39;) et nom NOT LIKE &#39;% ReportServer%&#39; AND state = 0\n--AND name = &#39;MyDatabase&#39;\nORDRE PAR NOM","html":"<p>CREATE TABLE #dummyDBUsers\n(Nom d&#039;utilisateur varchar (200),\n Type d&#039;utilisateur varchar (200)\n)\nINSERT INTO #DummyDBDesc\nsélectionnez CONVERT (varchar (128), @@ nom_serveur) AS ServerName, CONVERT (varchar (100), nom) en tant que DBName, CONVERT (varchar (10), recovery_model_desc) en tant que RecoveryModel, --database Base,\nCASE niveau_compatibilité\nWHEN 80 THEN CONVERT (varchar (4), niveau_compatibilité) + &#039;- SQL 2000 *&#039;\nWHEN 90 THEN CONVERT (varchar (4), niveau_compatibilité) + &#039;- SQL 2005&#039;\nWHEN 100 THEN CONVERT (varchar (4), niveau_compatibilité) + &#039;- SQL 2008&#039;\nWHEN 105 THEN CONVERT (varchar (4), niveau_compatibilité) + &#039;- SQL 2008 R2&#039;\nWHEN 110 THEN CONVERT (varchar (4), niveau_compatibilité) + &#039;- SQL 2012&#039;\nELSE CONVERT (varchar (4), niveau_compatibilité)\nEND AS CompatibilityLevel,\nCASE is_read_only\nQUAND 0 ALORS CONVERTIR (varchar (10), &#039;RW&#039;)\nELSE CONVERT (varchar (10), &#039;R&#039;)\nFIN comme ReadWriteDesc\nFROM sys.databases\nWHERE nom NOT IN (&#039;tempdb&#039;, &#039;master&#039;, &#039;msdb&#039;, &#039;model&#039;) et nom NOT LIKE &#039;% ReportServer%&#039; AND state = 0\n--AND name = &#039;MyDatabase&#039;\nORDRE PAR NOM</p>"},{"id":"text-41","type":"text","heading":"","plain_text":"DÉCLARER backupfiles CURSEUR POUR\n SELECT DBName, RecoveryModel, CompatibilityLevel, ReadWriteDesc FROM #DummyDBDesc ORDER BY DBName\nOPEN backupFiles","html":"<p>DÉCLARER backupfiles CURSEUR POUR\n SELECT DBName, RecoveryModel, CompatibilityLevel, ReadWriteDesc FROM #DummyDBDesc ORDER BY DBName\nOPEN backupFiles</p>"},{"id":"text-42","type":"text","heading":"","plain_text":"DECLARE @dbn varchar (100)\nDECLARE @rm varchar (10)\nDECLARE @cl varchar (30)\nDECLARE @rwd varchar (10)","html":"<p>DECLARE @dbn varchar (100)\nDECLARE @rm varchar (10)\nDECLARE @cl varchar (30)\nDECLARE @rwd varchar (10)</p>"},{"id":"text-43","type":"text","heading":"","plain_text":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @dbn, @rm, @cl, @rwd","html":"<p>- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @dbn, @rm, @cl, @rwd</p>"},{"id":"text-44","type":"text","heading":"","plain_text":"WHILE @@ FETCH_STATUS = 0\nCOMMENCER","html":"<p>WHILE @@ FETCH_STATUS = 0\nCOMMENCER</p>"},{"id":"text-45","type":"text","heading":"","plain_text":"IMPRIMER &#39;Nom de la base de données:&#39; + @dbn\n PRINT &#39;Modèle de récupération:&#39; + @rm\n PRINT &#39;Niveau de compatibilité:&#39; + @cl\n IMPRIMER &#39;Lecture / Ecriture:&#39; + @rwd\n IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n ","html":"<p>IMPRIMER &#039;Nom de la base de données:&#039; + @dbn\n PRINT &#039;Modèle de récupération:&#039; + @rm\n PRINT &#039;Niveau de compatibilité:&#039; + @cl\n IMPRIMER &#039;Lecture / Ecriture:&#039; + @rwd\n IMPRESSION &#039; &#039;\n IMPRESSION &#039; &#039;\n </p>"},{"id":"text-46","type":"text","heading":"","plain_text":"/ * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur l&#39;utilisateur de la base de données * /\n \n--Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBUsers","html":"<p>/ * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur l&#039;utilisateur de la base de données * /\n \n--Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBUsers</p>"},{"id":"text-47","type":"text","heading":"","plain_text":" - Obtenez les rôles pour cette base de données et chargez-les dans la table temporaire\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBUsers SELECT CONVERT (varchar (100), nom) AS UserName, CONVERT (varchar (100), type_desc) en tant que UserType FROM sys.database_principals WHERE (type = &#39;&#39; &#39;&#39; &#39;OU type =&#39; &#39;&#39; &#39;&#39; OU type = &#39;&#39; G &#39;&#39;) AND is_fixed_role = 0 AND (nom NOT IN (&#39;&#39; guest &#39;&#39;, &#39;&#39; dbo &#39;&#39;, &#39;&#39; INFORMATION_SCHEMA &#39;&#39;, &#39;&#39; sys &#39;&#39;))\n --PRINT @cmd\n EXEC (@cmd)","html":"<p> - Obtenez les rôles pour cette base de données et chargez-les dans la table temporaire\n SET @cmd = &#039;USE [&#039; + @dbn + &#039;]; INSERT INTO #dummyDBUsers SELECT CONVERT (varchar (100), nom) AS UserName, CONVERT (varchar (100), type_desc) en tant que UserType FROM sys.database_principals WHERE (type = &#039;&#039; &#039;&#039; &#039;OU type =&#039; &#039;&#039; &#039;&#039; OU type = &#039;&#039; G &#039;&#039;) AND is_fixed_role = 0 AND (nom NOT IN (&#039;&#039; guest &#039;&#039;, &#039;&#039; dbo &#039;&#039;, &#039;&#039; INFORMATION_SCHEMA &#039;&#039;, &#039;&#039; sys &#039;&#039;))\n --PRINT @cmd\n EXEC (@cmd)</p>"},{"id":"text-48","type":"text","heading":"","plain_text":"--Obtenir la longueur de la plus longue occurrence des colonnes\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBUsers\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBUsers","html":"<p>--Obtenir la longueur de la plus longue occurrence des colonnes\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBUsers\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBUsers</p>"},{"id":"text-49","type":"text","heading":"","plain_text":" - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @unmax &lt;25 SET @unmax = 25\n si @utmax &lt;25 SET @utmax = 25\n \n--Définissez et imprimez les en-têtes de colonne pour les informations de rôle.\n SET @ col1nm = &#39;Nom d&#39;utilisateur&#39;\n SET @ col1len = @unmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;UserType&#39;\n SET @ col3len = @utmax\n IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm))\nESPACE D&#39;IMPRESSION (10) + REPLIQUE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLIQUE (&#39;=&#39;, @ col3len)","html":"<p> - Définissez des valeurs minimales pour que la colonne ne s&#039;imprime pas rapidement\n si @unmax &lt;25 SET @unmax = 25\n si @utmax &lt;25 SET @utmax = 25\n \n--Définissez et imprimez les en-têtes de colonne pour les informations de rôle.\n SET @ col1nm = &#039;Nom d&#039;utilisateur&#039;\n SET @ col1len = @unmax\n SET @ col2nm = &#039;&#039;\n SET @ col2len = 5\n SET @ col3nm = &#039;UserType&#039;\n SET @ col3len = @utmax\n IMPRESSION &#039; &#039;\n ESPACE D&#039;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm))\nESPACE D&#039;IMPRESSION (10) + REPLIQUE (&#039;=&#039;, @ col1len) + ESPACE (@ col2len) + REPLIQUE (&#039;=&#039;, @ col3len)</p>"},{"id":"text-50","type":"text","heading":"","plain_text":" DÉCLARER backupFiles2 CURSOR FOR\nSELECT UserName, UserType FROM #dummyDBUsers ORDER BY UserName","html":"<p> DÉCLARER backupFiles2 CURSOR FOR\nSELECT UserName, UserType FROM #dummyDBUsers ORDER BY UserName</p>"},{"id":"text-51","type":"text","heading":"","plain_text":" OPEN backupFiles2","html":"<p> OPEN backupFiles2</p>"},{"id":"text-52","type":"text","heading":"","plain_text":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @un, @ut","html":"<p>- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @un, @ut</p>"},{"id":"text-53","type":"text","heading":"","plain_text":" WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Définissez et imprimez les détails de la ligne pour les informations de rôle.\n SET @ col1nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col3nm = SUBSTRING (@ ut, 1, @ utmax)","html":"<p> WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Définissez et imprimez les détails de la ligne pour les informations de rôle.\n SET @ col1nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col3nm = SUBSTRING (@ ut, 1, @ utmax)</p>"},{"id":"text-54","type":"text","heading":"","plain_text":" ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm))","html":"<p> ESPACE D&#039;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm))</p>"},{"id":"text-55","type":"text","heading":"","plain_text":"FETCH NEXT FROM backupFiles2 INTO @un, @ut\n FIN","html":"<p>FETCH NEXT FROM backupFiles2 INTO @un, @ut\n FIN</p>"},{"id":"text-56","type":"text","heading":"","plain_text":"FERMER backupFiles2\nDEALLOCATE backupFiles2\n \nIMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n \nif @outputtype = 2 - crée les instructions pour affecter un utilisateur à cette base de données\n COMMENCER\n TRUNCATE TABLE #dummyuserassign","html":"<p>FERMER backupFiles2\nDEALLOCATE backupFiles2\n \nIMPRESSION &#039; &#039;\n IMPRESSION &#039; &#039;\n \nif @outputtype = 2 - crée les instructions pour affecter un utilisateur à cette base de données\n COMMENCER\n TRUNCATE TABLE #dummyuserassign</p>"},{"id":"text-57","type":"text","heading":"","plain_text":" SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyuserassign select DISTINCT\n CASE members.type_desc\nQUAND &#39;&#39; WINDOWS_USER &#39;&#39;\nALORS &#39;&#39; CREATE USER [''+ members.name + ''] POUR CONNEXION [''+ members.name+ '']&#39;&#39; + &#39;&#39; WITH DEFAULT_SCHEMA =['' + members.default_schema_name + '']&#39;&#39;\nQUAND &#39;&#39; SQL_USER &#39;&#39;\n ALORS &#39;&#39; CREATE USER [''+ members.name + ''] POUR CONNEXION [''+ members.name+ '']&#39;&#39; + &#39;&#39; WITH DEFAULT_SCHEMA =['' + members.default_schema_name + '']&#39;&#39;\n END AS CreateUser\n à partir de membres sys.database_principals\n jointure interne sys.database_role_members drm\n sur members.principal_id = drm.member_principal_id\n rejoindre des rôles sys.database_principals\n sur drm.role_principal_id = roles.principal_id\n où membres.nom &lt;&gt; &#39;&#39; dbo &#39;&#39;\n ORDER BY CreateUser &#39;\n --PRINT @cmd\n EXEC (@cmd)","html":"<p> SET @cmd = &#039;USE [&#039; + @dbn + &#039;]; INSERT INTO #dummyuserassign select DISTINCT\n CASE members.type_desc\nQUAND &#039;&#039; WINDOWS_USER &#039;&#039;\nALORS &#039;&#039; CREATE USER [&#039;&#039;+ members.name + &#039;&#039;] POUR CONNEXION [&#039;&#039;+ members.name+ &#039;&#039;]&#039;&#039; + &#039;&#039; WITH DEFAULT_SCHEMA =[&#039;&#039; + members.default_schema_name + &#039;&#039;]&#039;&#039;\nQUAND &#039;&#039; SQL_USER &#039;&#039;\n ALORS &#039;&#039; CREATE USER [&#039;&#039;+ members.name + &#039;&#039;] POUR CONNEXION [&#039;&#039;+ members.name+ &#039;&#039;]&#039;&#039; + &#039;&#039; WITH DEFAULT_SCHEMA =[&#039;&#039; + members.default_schema_name + &#039;&#039;]&#039;&#039;\n END AS CreateUser\n à partir de membres sys.database_principals\n jointure interne sys.database_role_members drm\n sur members.principal_id = drm.member_principal_id\n rejoindre des rôles sys.database_principals\n sur drm.role_principal_id = roles.principal_id\n où membres.nom &lt;&gt; &#039;&#039; dbo &#039;&#039;\n ORDER BY CreateUser &#039;\n --PRINT @cmd\n EXEC (@cmd)</p>"},{"id":"text-58","type":"text","heading":"","plain_text":"si existe (SELECT * FROM #dummyuserassign)\n COMMENCER\n IMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n FIN\n DÉCLARER myCursorVariable3 CURSOR FOR\nSELECT LineVal FROM #dummyuserassign ORDER BY RecID","html":"<p>si existe (SELECT * FROM #dummyuserassign)\n COMMENCER\n IMPRIMER &#039;UTILISATION&#039; + @dbn\n IMPRIMEZ &#039;GO&#039;\n IMPRESSION &#039; &#039;\n FIN\n DÉCLARER myCursorVariable3 CURSOR FOR\nSELECT LineVal FROM #dummyuserassign ORDER BY RecID</p>"},{"id":"text-59","type":"text","heading":"","plain_text":" OUVRIR myCursorVariable3","html":"<p> OUVRIR myCursorVariable3</p>"},{"id":"text-60","type":"text","heading":"","plain_text":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable3 INTO @lineval","html":"<p>- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable3 INTO @lineval</p>"},{"id":"text-61","type":"text","heading":"","plain_text":" WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nIMPRIMER @lineval","html":"<p> WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nIMPRIMER @lineval</p>"},{"id":"text-62","type":"text","heading":"","plain_text":" FETCH NEXT FROM myCursorVariable3 INTO @lineval\n FIN","html":"<p> FETCH NEXT FROM myCursorVariable3 INTO @lineval\n FIN</p>"},{"id":"text-63","type":"text","heading":"","plain_text":"FERMER myCursorVariable3\nDEALLOCATE myCursorVariable3\nFIN\n ","html":"<p>FERMER myCursorVariable3\nDEALLOCATE myCursorVariable3\nFIN\n </p>"},{"id":"text-64","type":"text","heading":"","plain_text":"si @includeroleinfo = 1\n COMMENCER\n / * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur le rôle * /\n SELECT @collationname = nom_collection FROM master.sys.databases WHERE nom = @dbn\n si @collationname EST NULL\n print &#39;null for&#39; + @dbn","html":"<p>si @includeroleinfo = 1\n COMMENCER\n / * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur le rôle * /\n SELECT @collationname = nom_collection FROM master.sys.databases WHERE nom = @dbn\n si @collationname EST NULL\n print &#039;null for&#039; + @dbn</p>"},{"id":"text-65","type":"text","heading":"","plain_text":" si @collationname EST NULL\n SET @collationname = (SELECT nom_collection FROM maître.sys.databases WHERE nom = &#39;maître&#39;)","html":"<p> si @collationname EST NULL\n SET @collationname = (SELECT nom_collection FROM maître.sys.databases WHERE nom = &#039;maître&#039;)</p>"},{"id":"text-66","type":"text","heading":"","plain_text":" SET @cmd = &#39;ALTER TABLE #dummyrolelist ALTER COLUMN Nom du rôle varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN RoleName varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN Nom d&#39;utilisateur varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN Type d&#39;utilisateur varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)","html":"<p> SET @cmd = &#039;ALTER TABLE #dummyrolelist ALTER COLUMN Nom du rôle varchar (200) COLLATE&#039; + @collationname + &#039;NULL&#039;\n EXEC (@cmd)\nSET @cmd = &#039;ALTER TABLE #dummyDBRoles ALTER COLUMN RoleName varchar (200) COLLATE&#039; + @collationname + &#039;NULL&#039;\n EXEC (@cmd)\nSET @cmd = &#039;ALTER TABLE #dummyDBRoles ALTER COLUMN Nom d&#039;utilisateur varchar (200) COLLATE&#039; + @collationname + &#039;NULL&#039;\n EXEC (@cmd)\nSET @cmd = &#039;ALTER TABLE #dummyDBRoles ALTER COLUMN Type d&#039;utilisateur varchar (200) COLLATE&#039; + @collationname + &#039;NULL&#039;\n EXEC (@cmd)</p>"},{"id":"text-67","type":"text","heading":"","plain_text":"--Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBRoles","html":"<p>--Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBRoles</p>"},{"id":"text-68","type":"text","heading":"","plain_text":" - Obtenez les rôles pour cette base de données et chargez-les dans la table temporaire\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBRoles sélectionnez CONVERT (varchar (200), roles.name) en tant que NomRôle, CONVERT (varchar (200), members.name) AS NomUtilisateur, CONVERT (varchar (200), members.type_desc) AS UserType de sys.database_principals membres internes rejoindre sys.database_role_members drm sur members.principal_id = drm.member_principal_id rejoindre interne sys.database_principals rôles sur drm.role_principal_id = roles.principal_id où members.name &lt;&gt; &#39;&#39; &#39;&#39; dbo &#39;&#39;, ORDER BY membres\n --PRINT @cmd\n EXEC (@cmd)","html":"<p> - Obtenez les rôles pour cette base de données et chargez-les dans la table temporaire\n SET @cmd = &#039;USE [&#039; + @dbn + &#039;]; INSERT INTO #dummyDBRoles sélectionnez CONVERT (varchar (200), roles.name) en tant que NomRôle, CONVERT (varchar (200), members.name) AS NomUtilisateur, CONVERT (varchar (200), members.type_desc) AS UserType de sys.database_principals membres internes rejoindre sys.database_role_members drm sur members.principal_id = drm.member_principal_id rejoindre interne sys.database_principals rôles sur drm.role_principal_id = roles.principal_id où members.name &lt;&gt; &#039;&#039; &#039;&#039; dbo &#039;&#039;, ORDER BY membres\n --PRINT @cmd\n EXEC (@cmd)</p>"},{"id":"text-69","type":"text","heading":"","plain_text":"- Ajoutez maintenant les rôles présents dans la base de données auxquels aucune personne ne leur a été affectée (ceux déjà présents dans la table temporaire)\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBRoles SELECT CONVERT (varchar (200), nom) AS NameName, &#39;&#39; --none-- &#39;&#39; As UserName, &#39;&#39; &#39;&#39; AS UserType FROM sys.database_principals WHERE type = &#39;&#39; R &#39;&#39; et is_fixed_role = 0 et nom &lt;&gt; &#39;&#39; public &#39;&#39; AND (nom NOT IN (SELECT NomRôle FROM #dummyDBRoles)) &#39;\n --PRINT @cmd\n EXEC (@cmd)","html":"<p>- Ajoutez maintenant les rôles présents dans la base de données auxquels aucune personne ne leur a été affectée (ceux déjà présents dans la table temporaire)\n SET @cmd = &#039;USE [&#039; + @dbn + &#039;]; INSERT INTO #dummyDBRoles SELECT CONVERT (varchar (200), nom) AS NameName, &#039;&#039; --none-- &#039;&#039; As UserName, &#039;&#039; &#039;&#039; AS UserType FROM sys.database_principals WHERE type = &#039;&#039; R &#039;&#039; et is_fixed_role = 0 et nom &lt;&gt; &#039;&#039; public &#039;&#039; AND (nom NOT IN (SELECT NomRôle FROM #dummyDBRoles)) &#039;\n --PRINT @cmd\n EXEC (@cmd)</p>"},{"id":"text-70","type":"text","heading":"","plain_text":"- obtenez maintenant une liste des rôles de base de données créés et imprimez-les sous forme d&#39;instructions CREATE ROLE\n si @outputtype = 2\n COMMENCER\n TRUNCATE TABLE #dummyrolelist\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyrolelist SELECT nom FROM sys.database_principals WHERE type = &#39;&#39; R &#39;&#39; AND nom &lt;&gt; &#39;&#39; public &#39;&#39; AND is_fixed_role = 0 &#39;\n --PRINT @cmd\n EXEC (@cmd)\nIMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n DÉCLARER myCursorVariable4 CURSOR FOR\nSELECT NomRôle FROM #dummyrolelist","html":"<p>- obtenez maintenant une liste des rôles de base de données créés et imprimez-les sous forme d&#039;instructions CREATE ROLE\n si @outputtype = 2\n COMMENCER\n TRUNCATE TABLE #dummyrolelist\n SET @cmd = &#039;USE [&#039; + @dbn + &#039;]; INSERT INTO #dummyrolelist SELECT nom FROM sys.database_principals WHERE type = &#039;&#039; R &#039;&#039; AND nom &lt;&gt; &#039;&#039; public &#039;&#039; AND is_fixed_role = 0 &#039;\n --PRINT @cmd\n EXEC (@cmd)\nIMPRIMER &#039;UTILISATION&#039; + @dbn\n IMPRIMEZ &#039;GO&#039;\n IMPRESSION &#039; &#039;\n DÉCLARER myCursorVariable4 CURSOR FOR\nSELECT NomRôle FROM #dummyrolelist</p>"},{"id":"text-71","type":"text","heading":"","plain_text":"OUVRIR myCursorVariable4","html":"<p>OUVRIR myCursorVariable4</p>"},{"id":"text-72","type":"text","heading":"","plain_text":" - Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable4 INTO @rn","html":"<p> - Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable4 INTO @rn</p>"},{"id":"text-73","type":"text","heading":"","plain_text":" WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @cmd = &#39;CREATE ROLE&#39; + @rn\n IMPRIMER @cmd","html":"<p> WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @cmd = &#039;CREATE ROLE&#039; + @rn\n IMPRIMER @cmd</p>"},{"id":"text-74","type":"text","heading":"","plain_text":"FETCH NEXT FROM myCursorVariable4 INTO @rn\n FIN","html":"<p>FETCH NEXT FROM myCursorVariable4 INTO @rn\n FIN</p>"},{"id":"text-75","type":"text","heading":"","plain_text":"FERMER myCursorVariable4\n DEALLOCATE myCursorVariable4\n FIN","html":"<p>FERMER myCursorVariable4\n DEALLOCATE myCursorVariable4\n FIN</p>"},{"id":"text-76","type":"text","heading":"","plain_text":" --Obtenir la longueur de la plus longue occurrence des colonnes\n SELECT @rnmax = ISNULL (MAX (len (Nom du rôle)), 0) FROM #dummyDBRoles\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBRoles\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBRoles","html":"<p> --Obtenir la longueur de la plus longue occurrence des colonnes\n SELECT @rnmax = ISNULL (MAX (len (Nom du rôle)), 0) FROM #dummyDBRoles\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBRoles\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBRoles</p>"},{"id":"text-77","type":"text","heading":"","plain_text":" - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @rnmax &lt;25 SET @rnmax = 25\n si @unmax &lt;25 SET @unmax = 25\n si @utmax &lt;25 SET @utmax = 25","html":"<p> - Définissez des valeurs minimales pour que la colonne ne s&#039;imprime pas rapidement\n si @rnmax &lt;25 SET @rnmax = 25\n si @unmax &lt;25 SET @unmax = 25\n si @utmax &lt;25 SET @utmax = 25</p>"},{"id":"text-78","type":"text","heading":"","plain_text":" --Définissez et imprimez les en-têtes de colonne pour les informations de rôle\n SET @ col1nm = &#39;NomRôle&#39;\n SET @ col1len = @rnmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;Nom d&#39;utilisateur&#39;\n SET @ col3len = @unmax\n SET @ col4nm = &#39;&#39;\n SET @ col4len = 5\n SET @ col5nm = &#39;UserType&#39;\n SET @ col5len = @utmax\n IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\nESPACE D&#39;IMPRESSION (10) + REPLIQUÉ (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICAT (&#39;=&#39;, @ col3len) + ESPACE (@ col4len) + REPLICAT (&#39;=&#39;, @ col5len)","html":"<p> --Définissez et imprimez les en-têtes de colonne pour les informations de rôle\n SET @ col1nm = &#039;NomRôle&#039;\n SET @ col1len = @rnmax\n SET @ col2nm = &#039;&#039;\n SET @ col2len = 5\n SET @ col3nm = &#039;Nom d&#039;utilisateur&#039;\n SET @ col3len = @unmax\n SET @ col4nm = &#039;&#039;\n SET @ col4len = 5\n SET @ col5nm = &#039;UserType&#039;\n SET @ col5len = @utmax\n IMPRESSION &#039; &#039;\n ESPACE D&#039;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\nESPACE D&#039;IMPRESSION (10) + REPLIQUÉ (&#039;=&#039;, @ col1len) + ESPACE (@ col2len) + REPLICAT (&#039;=&#039;, @ col3len) + ESPACE (@ col4len) + REPLICAT (&#039;=&#039;, @ col5len)</p>"},{"id":"text-79","type":"text","heading":"","plain_text":" - Imprimez le script pour définir le contexte de la base de données\n si @outputtype = 2\n COMMENCER\n IMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n FIN","html":"<p> - Imprimez le script pour définir le contexte de la base de données\n si @outputtype = 2\n COMMENCER\n IMPRIMER &#039;UTILISATION&#039; + @dbn\n IMPRIMEZ &#039;GO&#039;\n IMPRESSION &#039; &#039;\n FIN</p>"},{"id":"text-80","type":"text","heading":"","plain_text":" --statement pour obtenir tous les rôles pour cette base de données\n --SELECT nom FROM sys.database_principals WHERE type = &#39;R&#39; et is_fixed_role = 0 et nom &lt;&gt; &#39;public&#39;\n --peut utiliser le script des instructions CREATE ROLE","html":"<p> --statement pour obtenir tous les rôles pour cette base de données\n --SELECT nom FROM sys.database_principals WHERE type = &#039;R&#039; et is_fixed_role = 0 et nom &lt;&gt; &#039;public&#039;\n --peut utiliser le script des instructions CREATE ROLE</p>"},{"id":"text-81","type":"text","heading":"","plain_text":" - Maintenant, parcourez les rôles\n DÉCLARER backupFiles2 CURSOR FOR\nSELECT Nom de rôle, Nom d&#39;utilisateur, Type d&#39;utilisateur FROM #dummyDBRoles ORDER BY Nom de rôle","html":"<p> - Maintenant, parcourez les rôles\n DÉCLARER backupFiles2 CURSOR FOR\nSELECT Nom de rôle, Nom d&#039;utilisateur, Type d&#039;utilisateur FROM #dummyDBRoles ORDER BY Nom de rôle</p>"},{"id":"text-82","type":"text","heading":"","plain_text":" OPEN backupFiles2","html":"<p> OPEN backupFiles2</p>"},{"id":"text-83","type":"text","heading":"","plain_text":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @rn, @un, @ut","html":"<p>- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @rn, @un, @ut</p>"},{"id":"text-84","type":"text","heading":"","plain_text":"WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Définissez et imprimez les détails de la ligne pour les informations de rôle.\n SET @ col1nm = SUBSTRING (@ rn, 1, @ rnmax)\n SET @ col3nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col5nm = SUBSTRING (@ ut, 1, @ utmax)\n si @outputtype = 1\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\nsi @outputtype = 2\n COMMENCER\n if @ col3nm &lt;&gt; &#39;--none--&#39;\n PRINT &#39;exec sp_addrolemember [' + @col1nm + '], [' + @col3nm + '] --Usertype = &#39;+ @ col5nm\n autre\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\n FIN","html":"<p>WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Définissez et imprimez les détails de la ligne pour les informations de rôle.\n SET @ col1nm = SUBSTRING (@ rn, 1, @ rnmax)\n SET @ col3nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col5nm = SUBSTRING (@ ut, 1, @ utmax)\n si @outputtype = 1\n ESPACE D&#039;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\nsi @outputtype = 2\n COMMENCER\n if @ col3nm &lt;&gt; &#039;--none--&#039;\n PRINT &#039;exec sp_addrolemember [&#039; + @col1nm + &#039;], [&#039; + @col3nm + &#039;] --Usertype = &#039;+ @ col5nm\n autre\n ESPACE D&#039;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\n FIN</p>"},{"id":"text-85","type":"text","heading":"","plain_text":" FETCH NEXT FROM backupFiles2 INTO @rn, @un, @ut\nFIN","html":"<p> FETCH NEXT FROM backupFiles2 INTO @rn, @un, @ut\nFIN</p>"},{"id":"text-86","type":"text","heading":"","plain_text":"FERMER backupFiles2\nDEALLOCATE backupFiles2","html":"<p>FERMER backupFiles2\nDEALLOCATE backupFiles2</p>"},{"id":"text-87","type":"text","heading":"","plain_text":" IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n FIN","html":"<p> IMPRESSION &#039; &#039;\n IMPRESSION &#039; &#039;\n FIN</p>"},{"id":"text-88","type":"text","heading":"","plain_text":" \nsi @includeobjlvlperms = 1\n COMMENCER\n / * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur les autorisations de niveau objet * /\n --Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBPerms","html":"<p> \nsi @includeobjlvlperms = 1\n COMMENCER\n / * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur les autorisations de niveau objet * /\n --Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBPerms</p>"},{"id":"text-89","type":"text","heading":"","plain_text":" - Obtenir les autorisations pour cette base de données et charger dans la table temporaire\n - Je suis sûr que certaines de ces pièces sont venues d&#39;ailleurs. Mes appologies à l&#39;initiateur.\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBPerms &#39;\n SET @cmd = @cmd + &#39;select p.state_desc, p.permission_name, s.name, o.name, u.name, CASE o.type WHEN&#39; &#39;P&#39; &#39;THEN&#39; &#39;SPROC&#39; &#39;\n QUAND &#39;&#39; V &#39;&#39; ALORS &#39;&#39; View &#39;&#39;\n QUAND &#39;&#39; U &#39;&#39; ALORS &#39;&#39; Table &#39;&#39;\n QUAND &#39;&#39; FN &#39;&#39; ALORS &#39;&#39; Fonction (détartreur) &#39;&#39;\n QUAND &#39;&#39; TF &#39;&#39; THEN &#39;&#39; Fonction (valeur de table) &#39;&#39;\n ELSE o.type_desc END AS ObjectType,\n CONVERT (varchar (200), u.type_desc) AS UserType\n de sys.database_permissions p\njointure interne sys.objects o sur p.major_id = o.object_id\njointure interne sys.schemas s sur s.schema_id = o.schema_id\njointure interne sys.database_principals u sur p.grantee_principal_id = u.principal_id\n ORDER BY o.type, o.name collate Latin1_general_CI_AS, u.name collate Latin1_general_CI_AS &#39;\n --PRINT @cmd\n EXEC (@cmd)","html":"<p> - Obtenir les autorisations pour cette base de données et charger dans la table temporaire\n - Je suis sûr que certaines de ces pièces sont venues d&#039;ailleurs. Mes appologies à l&#039;initiateur.\n SET @cmd = &#039;USE [&#039; + @dbn + &#039;]; INSERT INTO #dummyDBPerms &#039;\n SET @cmd = @cmd + &#039;select p.state_desc, p.permission_name, s.name, o.name, u.name, CASE o.type WHEN&#039; &#039;P&#039; &#039;THEN&#039; &#039;SPROC&#039; &#039;\n QUAND &#039;&#039; V &#039;&#039; ALORS &#039;&#039; View &#039;&#039;\n QUAND &#039;&#039; U &#039;&#039; ALORS &#039;&#039; Table &#039;&#039;\n QUAND &#039;&#039; FN &#039;&#039; ALORS &#039;&#039; Fonction (détartreur) &#039;&#039;\n QUAND &#039;&#039; TF &#039;&#039; THEN &#039;&#039; Fonction (valeur de table) &#039;&#039;\n ELSE o.type_desc END AS ObjectType,\n CONVERT (varchar (200), u.type_desc) AS UserType\n de sys.database_permissions p\njointure interne sys.objects o sur p.major_id = o.object_id\njointure interne sys.schemas s sur s.schema_id = o.schema_id\njointure interne sys.database_principals u sur p.grantee_principal_id = u.principal_id\n ORDER BY o.type, o.name collate Latin1_general_CI_AS, u.name collate Latin1_general_CI_AS &#039;\n --PRINT @cmd\n EXEC (@cmd)</p>"},{"id":"text-90","type":"text","heading":"","plain_text":"--Obtenir la longueur de la plus longue occurrence de chacune des colonnes\n SELECT @sdmax = ISNULL (MAX (len (StateDesc)), 0) FROM #dummyDBPerms\n SELECT @pnmax = ISNULL (MAX (len (PermName)), 0) FROM #dummyDBPerms\n SELECT @snmax = ISNULL (MAX (len (SchemaName)), 0) FROM #dummyDBPerms\n SELECT @onmax = ISNULL (MAX (len (ObjectName)), 0) FROM #dummyDBPerms\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBPerms\n SELECT @pdmax = ISNULL (MAX (len (ObjectType)), 0) FROM #dummyDBPerms\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBPerms","html":"<p>--Obtenir la longueur de la plus longue occurrence de chacune des colonnes\n SELECT @sdmax = ISNULL (MAX (len (StateDesc)), 0) FROM #dummyDBPerms\n SELECT @pnmax = ISNULL (MAX (len (PermName)), 0) FROM #dummyDBPerms\n SELECT @snmax = ISNULL (MAX (len (SchemaName)), 0) FROM #dummyDBPerms\n SELECT @onmax = ISNULL (MAX (len (ObjectName)), 0) FROM #dummyDBPerms\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBPerms\n SELECT @pdmax = ISNULL (MAX (len (ObjectType)), 0) FROM #dummyDBPerms\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBPerms</p>"},{"id":"text-91","type":"text","heading":"","plain_text":" - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @sdmax &lt;15 SET @sdmax = 15\n si @pnmax &lt;15 SET @pnmax = 15\n si @snmax &lt;10 SET @snmax = 10\n si @onmax &lt;15 SET @onmax = 15\n si @unmax &lt;15 SET @unmax = 15\n si @pdmax &lt;15 SET @pdmax = 15 --ObjectType\n si @utmax &lt;15 SET @utmax = 15 --UserType","html":"<p> - Définissez des valeurs minimales pour que la colonne ne s&#039;imprime pas rapidement\n si @sdmax &lt;15 SET @sdmax = 15\n si @pnmax &lt;15 SET @pnmax = 15\n si @snmax &lt;10 SET @snmax = 10\n si @onmax &lt;15 SET @onmax = 15\n si @unmax &lt;15 SET @unmax = 15\n si @pdmax &lt;15 SET @pdmax = 15 --ObjectType\n si @utmax &lt;15 SET @utmax = 15 --UserType</p>"},{"id":"text-92","type":"text","heading":"","plain_text":" --Placez et imprimez les en-têtes de colonne pour les informations de permissions\n SET @ col1nm = &#39;StateDesc&#39;\n SET @ col1len = @sdmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;PermName&#39;\n SET @ col3len = @pnmax\n SET @ col4nm = &#39;&#39;\n SET @ col4len = 5\n SET @ col5nm = &#39;Schema&#39;\n SET @ col5len = @snmax\n SET @ col6nm = &#39;&#39;\n SET @ col6len = 5\n SET @ col7nm = &#39;Object&#39;\n SET @ col7len = @onmax\n SET @ col8nm = &#39;&#39;\n SET @ col8len = 5\n SET @ col9nm = &#39;Utilisateur&#39;\n SET @ col9len = @unmax\n SET @ col10nm = &#39;&#39;\n SET @ col10len = 5\n SET @ col11nm = &#39;ObjectType&#39;\n SET @ col11len = @pdmax\n SET @ col12nm = &#39;&#39;\n SET @ col12len = 5\n SET @ col13nm = &#39;UserType&#39;\n SET @ col13len = @utmax","html":"<p> --Placez et imprimez les en-têtes de colonne pour les informations de permissions\n SET @ col1nm = &#039;StateDesc&#039;\n SET @ col1len = @sdmax\n SET @ col2nm = &#039;&#039;\n SET @ col2len = 5\n SET @ col3nm = &#039;PermName&#039;\n SET @ col3len = @pnmax\n SET @ col4nm = &#039;&#039;\n SET @ col4len = 5\n SET @ col5nm = &#039;Schema&#039;\n SET @ col5len = @snmax\n SET @ col6nm = &#039;&#039;\n SET @ col6len = 5\n SET @ col7nm = &#039;Object&#039;\n SET @ col7len = @onmax\n SET @ col8nm = &#039;&#039;\n SET @ col8len = 5\n SET @ col9nm = &#039;Utilisateur&#039;\n SET @ col9len = @unmax\n SET @ col10nm = &#039;&#039;\n SET @ col10len = 5\n SET @ col11nm = &#039;ObjectType&#039;\n SET @ col11len = @pdmax\n SET @ col12nm = &#039;&#039;\n SET @ col12len = 5\n SET @ col13nm = &#039;UserType&#039;\n SET @ col13len = @utmax</p>"},{"id":"text-93","type":"text","heading":"","plain_text":" IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm)) + ESPACE (@ col8len) + @ col9nm + ESPACE (@ col9len-len ( @ col9nm)) + ESPACE (@ col10len) + @ col11nm + ESPACE (@ col11len-len (@ col11nm)) + ESPACE (@ col12len) + @ col13nm + ESPACE (@ col13len-len (@ col13nm))\n ESPACE D&#39;IMPRESSION (10) + REPLIQUE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLIQUE (&#39;=&#39;, @ col3len) + ESPACE (@ col4len) + REPLIQUE (&#39;=&#39;, @ col5len) + ESPACE ( @ col6len) + REPLICATE (&#39;=&#39;, @ col7len) + SPACE (@ col8len) + REPLICATE (&#39;=&#39;, @ col9len) + SPACE (@ col10len) + REPLICATE (&#39;=&#39;, @ col11len) + SPACE (@ col12len ) + REPLICATE (&#39;=&#39;, @ col13len)","html":"<p> IMPRESSION &#039; &#039;\n ESPACE D&#039;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm)) + ESPACE (@ col8len) + @ col9nm + ESPACE (@ col9len-len ( @ col9nm)) + ESPACE (@ col10len) + @ col11nm + ESPACE (@ col11len-len (@ col11nm)) + ESPACE (@ col12len) + @ col13nm + ESPACE (@ col13len-len (@ col13nm))\n ESPACE D&#039;IMPRESSION (10) + REPLIQUE (&#039;=&#039;, @ col1len) + ESPACE (@ col2len) + REPLIQUE (&#039;=&#039;, @ col3len) + ESPACE (@ col4len) + REPLIQUE (&#039;=&#039;, @ col5len) + ESPACE ( @ col6len) + REPLICATE (&#039;=&#039;, @ col7len) + SPACE (@ col8len) + REPLICATE (&#039;=&#039;, @ col9len) + SPACE (@ col10len) + REPLICATE (&#039;=&#039;, @ col11len) + SPACE (@ col12len ) + REPLICATE (&#039;=&#039;, @ col13len)</p>"},{"id":"text-94","type":"text","heading":"","plain_text":" --Consultez les autorisations pour cette base de données, formatez-les et imprimez-les\n DÉCLARER backupFiles2 CURSOR FOR\nSELECT StateDesc, PermName, SchemaName, ObjectName, UserName, ObjectType, UserType FROM #dummyDBPerms ORDER BY Schemaname, ObjectName, UserName","html":"<p> --Consultez les autorisations pour cette base de données, formatez-les et imprimez-les\n DÉCLARER backupFiles2 CURSOR FOR\nSELECT StateDesc, PermName, SchemaName, ObjectName, UserName, ObjectType, UserType FROM #dummyDBPerms ORDER BY Schemaname, ObjectName, UserName</p>"},{"id":"text-95","type":"text","heading":"","plain_text":" OPEN backupFiles2","html":"<p> OPEN backupFiles2</p>"},{"id":"text-96","type":"text","heading":"","plain_text":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @sd, @pn, @sn, @on, @un, @pd, @ut","html":"<p>- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @sd, @pn, @sn, @on, @un, @pd, @ut</p>"},{"id":"text-97","type":"text","heading":"","plain_text":" WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Placez et imprimez les détails de la ligne pour les informations sur les autorisations\n SET @ col1nm = SUBSTRING (@ sd, 1, @ sdmax)\n SET @ col3nm = SUBSTRING (@ pn, 1, @ pnmax)\n SET @ col5nm = SUBSTRING (@ sn, 1, @ snmax)\n SET @ col7nm = SUBSTRING (@ on, 1, @ onmax)\n SET @ col9nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col11nm = SUBSTRING (@ pd, 1, @ pdmax)\n SET @ col13nm = SUBSTRING (@ ut, 1, @ utmax)","html":"<p> WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Placez et imprimez les détails de la ligne pour les informations sur les autorisations\n SET @ col1nm = SUBSTRING (@ sd, 1, @ sdmax)\n SET @ col3nm = SUBSTRING (@ pn, 1, @ pnmax)\n SET @ col5nm = SUBSTRING (@ sn, 1, @ snmax)\n SET @ col7nm = SUBSTRING (@ on, 1, @ onmax)\n SET @ col9nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col11nm = SUBSTRING (@ pd, 1, @ pdmax)\n SET @ col13nm = SUBSTRING (@ ut, 1, @ utmax)</p>"},{"id":"text-98","type":"text","heading":"","plain_text":" --imprime l&#39;enregistrement de détail pour les permissions\n si @outputtype = 1\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm)) + ESPACE (@ col8len) + @ col9nm + ESPACE (@ col9len-len ( @ col9nm)) + ESPACE (@ col10len) + @ col11nm + ESPACE (@ col11len-len (@ col11nm)) + ESPACE (@ col12len) + @ col13nm + ESPACE (@ col13len-len (@ col13nm))\n si @outputtype = 2\n PRINT @ col1nm + &#39;&#39; + @ col3nm + &#39;ON [' + @col5nm + '].[' + @col7nm + '] À [' + @col9nm + '] --ObjectType = &#39;+ @ col11nm +&#39; UserType = &#39;+ @ col13nm","html":"<p> --imprime l&#039;enregistrement de détail pour les permissions\n si @outputtype = 1\n ESPACE D&#039;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm)) + ESPACE (@ col8len) + @ col9nm + ESPACE (@ col9len-len ( @ col9nm)) + ESPACE (@ col10len) + @ col11nm + ESPACE (@ col11len-len (@ col11nm)) + ESPACE (@ col12len) + @ col13nm + ESPACE (@ col13len-len (@ col13nm))\n si @outputtype = 2\n PRINT @ col1nm + &#039;&#039; + @ col3nm + &#039;ON [&#039; + @col5nm + &#039;].[&#039; + @col7nm + &#039;] À [&#039; + @col9nm + &#039;] --ObjectType = &#039;+ @ col11nm +&#039; UserType = &#039;+ @ col13nm</p>"},{"id":"text-99","type":"text","heading":"","plain_text":" FETCH NEXT FROM backupFiles2 INTO @sd, @pn, @sn, @on, @un, @ pd, @ ut\n FIN","html":"<p> FETCH NEXT FROM backupFiles2 INTO @sd, @pn, @sn, @on, @un, @ pd, @ ut\n FIN</p>"},{"id":"text-100","type":"text","heading":"","plain_text":"FERMER backupFiles2\nDEALLOCATE backupFiles2","html":"<p>FERMER backupFiles2\nDEALLOCATE backupFiles2</p>"},{"id":"text-101","type":"text","heading":"","plain_text":" IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;","html":"<p> IMPRESSION &#039; &#039;\n IMPRESSION &#039; &#039;</p>"},{"id":"text-102","type":"text","heading":"","plain_text":" FIN","html":"<p> FIN</p>"},{"id":"text-103","type":"text","heading":"","plain_text":" si @outputtype = 2 ET @includedefaultdb = 1\n COMMENCER\n if EXISTS (nom SELECT de master.sys.server_Principals WHERE, saisissez (&#39;G&#39;, &#39;S&#39;, &#39;U&#39;) ET default_database_name = @dbn)\n COMMENCER\n IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n PRINT &#39;- Voici les noms d&#39;utilisateur et leurs paramètres de base de données par défaut&#39;\n IMPRESSION &#39; &#39;","html":"<p> si @outputtype = 2 ET @includedefaultdb = 1\n COMMENCER\n if EXISTS (nom SELECT de master.sys.server_Principals WHERE, saisissez (&#039;G&#039;, &#039;S&#039;, &#039;U&#039;) ET default_database_name = @dbn)\n COMMENCER\n IMPRESSION &#039; &#039;\n IMPRESSION &#039; &#039;\n PRINT &#039;- Voici les noms d&#039;utilisateur et leurs paramètres de base de données par défaut&#039;\n IMPRESSION &#039; &#039;</p>"},{"id":"text-104","type":"text","heading":"","plain_text":" DÉCLARER CURSEUR myCursorVariable pour\nSELECT nom, default_database_name comme DefaultDB\nFROM master.sys.server_Principals\nWHERE saisissez (&#39;G&#39;, &#39;S&#39;, &#39;U&#39;) ET default_database_name = @dbn\n ORDRE PAR NOM","html":"<p> DÉCLARER CURSEUR myCursorVariable pour\nSELECT nom, default_database_name comme DefaultDB\nFROM master.sys.server_Principals\nWHERE saisissez (&#039;G&#039;, &#039;S&#039;, &#039;U&#039;) ET default_database_name = @dbn\n ORDRE PAR NOM</p>"},{"id":"text-105","type":"text","heading":"","plain_text":" OPEN myCursorVariable","html":"<p> OPEN myCursorVariable</p>"},{"id":"text-106","type":"text","heading":"","plain_text":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable INTO @loginname, @dbnametouse","html":"<p>- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable INTO @loginname, @dbnametouse</p>"},{"id":"text-107","type":"text","heading":"","plain_text":" WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nIMPRIMER &#39;ALTER LOGIN [' + @loginname + '] WITH DEFAULT_DATABASE = &#39;+ @dbnametouse","html":"<p> WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nIMPRIMER &#039;ALTER LOGIN [&#039; + @loginname + &#039;] WITH DEFAULT_DATABASE = &#039;+ @dbnametouse</p>"},{"id":"text-108","type":"text","heading":"","plain_text":" FETCH NEXT FROM myCursorVariable INTO @loginname, @dbnametouse\n FIN","html":"<p> FETCH NEXT FROM myCursorVariable INTO @loginname, @dbnametouse\n FIN</p>"},{"id":"text-109","type":"text","heading":"","plain_text":"FERMER myCursorVariable\nDEALLOCATE myCursorVariable","html":"<p>FERMER myCursorVariable\nDEALLOCATE myCursorVariable</p>"},{"id":"text-110","type":"text","heading":"","plain_text":"IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n FIN\n FIN","html":"<p>IMPRESSION &#039; &#039;\n IMPRESSION &#039; &#039;\n FIN\n FIN</p>"},{"id":"text-111","type":"text","heading":"","plain_text":"IMPRIMER &#39;============================================= =============================================== ========= &#39;\n \n--Obtenir le prochain nom de base de données et informations à utiliser dans la boucle de base de données\n FETCH NEXT FROM backupFiles INTO @dbn, @rm, @cl, @rwd\nFIN","html":"<p>IMPRIMER &#039;============================================= =============================================== ========= &#039;\n \n--Obtenir le prochain nom de base de données et informations à utiliser dans la boucle de base de données\n FETCH NEXT FROM backupFiles INTO @dbn, @rm, @cl, @rwd\nFIN</p>"},{"id":"text-112","type":"text","heading":"","plain_text":"FERMER backupFiles\nDEALLOCATE backupfiles","html":"<p>FERMER backupFiles\nDEALLOCATE backupfiles</p>"},{"id":"text-113","type":"text","heading":"","plain_text":"/ * ============================================= ============================================== /\n--Dispose des tables temporaires\nDROP TABLE #DummyDBDesc\nDROP TABLE #dummyDBRoles\nDROP TABLE #dummyDBUsers\nDROP TABLE #dummyDBPerms\nDROP TABLE #dummyuserassign\nDROP TABLE #dummyrolelist","html":"<p>/ * ============================================= ============================================== /\n--Dispose des tables temporaires\nDROP TABLE #DummyDBDesc\nDROP TABLE #dummyDBRoles\nDROP TABLE #dummyDBUsers\nDROP TABLE #dummyDBPerms\nDROP TABLE #dummyuserassign\nDROP TABLE #dummyrolelist</p>"},{"id":"text-114","type":"text","heading":"","plain_text":"RÉGLER NOCOUNT","html":"<p>RÉGLER NOCOUNT</p>"},{"id":"text-115","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":"Vous ne savez pas si c&#39;est exactement ce dont vous avez besoin, mais jetez un coup d&#39;œil:\n/ * ============================================= =============================================== ===================== * /\n/ * = Documentation d&#39;audit d&#39;audit de sécurité d&#39;instance = * /\n/ * ============================================= =============================================== ===================== * /\n/ * Date de création: 28/12/2011\n Par: VikingDBA\n Modifications:\n 08/07/2012 Modifié pour faire aussi des autorisations au niveau du serveur (comme VIEW ANY DATABASE, ou VIEW SERVER STATE)\n 01/09/2013 Changement pour imprimer les scripts afin de créer les instructions CREATE ROLE et CREATE USER\n 31/01/2013 Modifié pour imprimer les instructions de niveau serveur et les instructions pour définir les valeurs par défaut\nbases de données pour les utilisateurs\n \nDépendances:\n Ce script dépend des éléments suivants pour exister:\n aucun"},{"id":"text-2","heading":"Text","content":" Sommaire:\n Ce script crée la documentation de toutes les bases de données d’une instance, y compris les autorisations au niveau du serveur et le rôle de la base de données.\n autorisations et autorisations individuelles des objets de base de données."},{"id":"text-3","heading":"Text","content":"Notez que le fait de changer les ensembles @outputtype = 1 pour columnar (style de rapport) et que la valeur 2 crée les instructions d&#39;affectation"},{"id":"text-4","heading":"Text","content":" REMARQUE: s&#39;exécute pour toutes les bases de données, sauf si une base de données spécifique est utilisée dans la clause WHERE ci-dessous.\n Consultez également la section Variables à définir par l&#39;utilisateur ci-dessous pour savoir si des variables doivent être définies.\n* /"},{"id":"text-5","heading":"Text","content":"Utilisez MASTER"},{"id":"text-6","heading":"Text","content":"SET NOCOUNT ON"},{"id":"text-7","heading":"Text","content":"/ * ============================================= =============================================== ================== * /\n- Audit de sécurité pour les rôles de serveur\nDECLARE @sr varchar (100)\nDECLARE @mn varchar (150)\nDECLARE @cmd varchar (4000)\nDECLARE @ col1nm varchar (200)\nDECLARE @ col2nm varchar (200)\nDECLARE @ col3nm varchar (200)\nDECLARE @ col4nm varchar (200)\nDECLARE @ col5nm varchar (200)\nDECLARE @ col6nm varchar (200)\nDECLARE @ col7nm varchar (200)\nDECLARE @ col8nm varchar (200)\nDECLARE @ col9nm varchar (200)\nDECLARE @ col10nm varchar (200)\nDECLARE @ col11nm varchar (200)\nDECLARE @ col12nm varchar (200)\nDECLARE @ col13nm varchar (200)\nDECLARE @ col14nm varchar (200)\nDECLARE @ col15nm varchar (200)\nDECLARE @ col16nm varchar (200)\nDECLARE @ col17nm varchar (200)\nDECLARE @ col18nm varchar (200)\nDECLARE @ col19nm varchar (200)\nDECLARE @ col20nm varchar (200)\nDECLARE @ col1len int\nDECLARE @ col2len int\nDECLARE @ col3len int\nDECLARE @ col4len int\nDECLARE @ col5len int\nDECLARE @ col6len int\nDECLARE @ col7len int\nDECLARE @ col8len int\nDECLARE @ col9len int\nDECLARE @ col10len int\nDECLARE @ col11len int\nDECLARE @ col12len int\nDECLARE @ col13len int\nDECLARE @ col14len int\nDECLARE @ col15len int\nDECLARE @ col16len int\nDECLARE @ col17len int\nDECLARE @ col18len int\nDECLARE @ col19len int\nDECLARE @ col20len int\nDECLARE @ col1max int\nDECLARE @ col2max int\nDECLARE @ col3max int\nDECLARE @ col4max int\nDECLARE @ col5max int\nDECLARE @ col6max int\nDECLARE @ col7max int\nDECLARE @ col8max int\nDECLARE @ col9max int\nDECLARE @ col10max int\nDECLARE @ col11max int\nDECLARE @ col12max int\nDECLARE @ col13max int\nDECLARE @ col14max int\nDECLARE @ col15max int\nDECLARE @ col16max int\nDECLARE @ col17max int\nDECLARE @ col18max int\nDECLARE @ col19max int\nDECLARE @ col20max int\nDECLARE @ col1min int\nDECLARE @ col2min int\nDECLARE @ col3min int\nDECLARE @ col4min int\nDECLARE @ col5min int\nDECLARE @ col6min int\nDECLARE @ col7min int\nDECLARE @ col8min int\nDECLARE @ col9min int\nDECLARE @ col10min int\nDECLARE @ col11min int\nDECLARE @ col12min int\nDECLARE @ col13min int\nDECLARE @ col14min int\nDECLARE @ col15min int\nDECLARE @ col16min int\nDECLARE @ col17min int\nDECLARE @ col18min int\nDECLARE @ col19min int\nDECLARE @ col20min int\nDECLARE @rn varchar (200)\nDECLARE @un varchar (200)\nDECLARE @ut varchar (200)\nDECLARE @sd varchar (200)\nDECLARE @pn varchar (200)\nDECLARE @sn varchar (200)\nDÉCLARE @on varchar (200)\nDECLARE @pd varchar (200)\nDÉCLARE @sdmax int\nDECLARE @pnmax int\nDÉCLARE @snmax int\nDÉCLARER @onmax int\nDECLARE @pdmax int\nDECLARE @unmax int\nDECLARE @rnmax int\nDÉCLARE @utmax int\nDECLARE @outputtype int\nDECLARE @prodlevel varchar (25)\nDECLARE @version varchar (250)\nDEClARE @prodver varchar (50)\nDECLARE @edition varchar (50)\nDÉCLARER bit @includeobjlvlperms\nDECLARE @includeroleinfo bit\nDECLARE @includedefaultdb bit\nDECLARE @usnm varchar (128)\nDÉCLARE @ustp varchar (60)\nDECLARE @stdsc varchar (60)\nDECLARE @permnm varchar (128)\nDECLARE @collationname varchar (200)\nDECLARE @lineval varchar (2000)\nDECLARE @loginname varchar (100)\nDECLARE @dbnametouse sysname"},{"id":"text-8","heading":"Text","content":"/ * ============================================= ============================================== * /\n- Variables paramétrables par l&#39;utilisateur\nSET @outputtype = 1 - 1 = en colonne 2 = instructions d&#39;affectation\nSET @includeobjlvlperms = 1\nSET @includeroleinfo = 1\nSET @includedefaultdb = 1\n/ * ============================================= ============================================== * /"},{"id":"text-9","heading":"Text","content":"SELECT @ prodlevel = CONVERT (varchar (25), SERVERPROPERTY (&#39;ProductLevel&#39;))\nSELECT @ version = CONVERT (varchar (250), @@ VERSION)\nSELECT @ prodver = CONVERT (varchar (50), SERVERPROPERTY (&#39;ProductVersion&#39;))\nSELECT @ edition = CONVERT (varchar (50), SERVERPROPERTY (&#39;Edition&#39;))\n/ * ============================================= ============================= /\n--Trouver une ligne de démarcation\nDECLARE @lvaltouse varchar (2000)\nDECLARE @lvallength int\nDECLARE @lvalct int\nDECLARE @spotcat int\nDECLARE @spotcatval int\nDECLARE @ lval1 varchar (2000)\nDECLARE @ lval2 varchar (2000)\nDECLARE @ lval3 varchar (2000)\nDECLARE @ lval4 varchar (2000)\nDECLARE @ lval5 varchar (2000)\nDECLARE @ lval6 varchar (2000)\nSET @lvaltouse = @version\nSET @lvallength = LEN (@lvaltouse)\nSET @lvalct = 1\nSET @spotcat = 1\nSET @ lval1 = &#39;&#39;\nSET @ lval2 = &#39;&#39;\nSET @ lval3 = &#39;&#39;\nSET @ lval4 = &#39;&#39;\nSET @ lval5 = &#39;&#39;\nSET @ lval6 = &#39;&#39;\nPENDANT @spotcat &lt;= @lvallength\n COMMENCER\n SET @spotcatval = ASCII (SUBSTRING (@ lvaltouse, @ spotcat, 1))\n if @spotcatval = 10 - valeur recherchée\n SET @lvalct = @lvalct + 1 - défini pour passer à la ligne suivante et commencer à la construire\n else - ajoute à la ligne de valeur actuelle\n COMMENCER\n if @spotcatval &lt;&gt; 9 - valeurs que nous voulons exclure\n COMMENCER\n si @lvalct = 1\n SET @ lval1 = @ lval1 + CHAR (@spotcatval)\n si @lvalct = 2\n SET @ lval2 = @ lval2 + CHAR (@spotcatval)\n si @lvalct = 3\n SET @ lval3 = @ lval3 + CHAR (@spotcatval)\n si @lvalct = 4\n SET @ lval4 = @ lval4 + CHAR (@spotcatval)\n si @lvalct = 5\n SET @ lval5 = @ lval5 + CHAR (@spotcatval)\n si @lvalct = 6\n SET @ lval6 = @ lval6 + CHAR (@spotcatval)\n FIN\n FIN\n SET @spotcat = @spotcat + 1\n FIN\n --PRINT &#39;Ligne à scinder =&#39; + @lvaltouse\n --PRINT &#39;line1 =&#39; + @ lval1\n --PRINT &#39;line2 =&#39; + @ lval2\n --PRINT &#39;line3 =&#39; + @ lval3\n --PRINT &#39;line4 =&#39; + @ lval4\n --PRINT &#39;line5 =&#39; + @ lval5\n --PRINT &#39;line6 =&#39; + @ lval6\n/ * ============================================= ============================== /\nCREATE TABLE #dummyuserassign\n(RecID int IDENTITY,\nLineVal varchar (2000)\n)"},{"id":"text-10","heading":"Text","content":"IMPRIMER &#39;============================================= =============================================== =========== &#39;\nIMPRIMER &#39;Audit de sécurité pour instance de serveur&#39; + CONVERT (varchar (128), @@ nomserveur)\nsi @outputtype = 2\n IMPRIMER &#39;Déclarations d&#39;attribution&#39;\nPRINT &#39;For&#39; + CONVERT (varchar (128), getdate (), 101) + &#39;&#39; + CONVERT (varchar (128), getdate (), 108)\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nPRINT &#39;Version du serveur SQL:&#39; + @ lval1\nIMPRIMER &#39;&#39; + @ lval4\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nPRINT &#39;REMARQUE: veillez à obtenir la liste des connexions à l&#39;aide de la procédure stockée sp_help_revlogin de la base de données master.&#39;\nIMPRIMER &#39;============================================= =============================================== =========== &#39;\nIMPRIMER &#39;Paramètres de sécurité du rôle serveur&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;"},{"id":"text-11","heading":"Text","content":"CREATE TABLE #rolememberdummy\n(ServerRole varchar (100),\nNom du membre varchar (150),\nMemberSID varchar (2000)\n)\nCREATE TABLE #dummyDBPerms\n(StateDesc varchar (200),\n PermName varchar (200),\n SchemaName varchar (200),\n ObjectName varchar (200),\n Nom d&#39;utilisateur varchar (200),\n ObjectType varchar (200),\n Type d&#39;utilisateur varchar (200)\n)"},{"id":"text-12","heading":"Text","content":"- Audit de sécurité\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;sysadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;securityadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;serveradmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;dbcreator&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;diskadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;processadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;setupadmin&#39;\nINSERT INTO #rolememberdummy\nEXEC sp_helpsrvrolemember &#39;bulkadmin&#39;"},{"id":"text-13","heading":"Text","content":"SET @ col1nm = &#39;Role&#39;\nSET @ col1len = 20\nSET @ col2nm = &#39;&#39;\nSET @ col2len = 8\nSET @ col3nm = &#39;Nom du membre&#39;\nSET @ col3len = 30\nIMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm\nPRINT REPLICATE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICATE (&#39;=&#39;, @ col3len)"},{"id":"text-14","heading":"Text","content":"--SELECT CONVERT (varchar (30), ServerRole) en tant que ServerRole, CONVERT (varchar (30), MemberName) AS MemberName FROM #rolememberdummy\nDÉCLARER backupfiles CURSEUR POUR\nSELECT ServerRole, MemberName FROM #rolememberdummy"},{"id":"text-15","heading":"Text","content":"OPEN backupFiles"},{"id":"text-16","heading":"Text","content":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @sr, @mn"},{"id":"text-17","heading":"Text","content":"WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @ col1nm = @sr\n SET @ col1len = 20\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 8\n SET @ col3nm = @mn\n SET @ col3len = 30\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm"},{"id":"text-18","heading":"Text","content":" FETCH NEXT FROM backupFiles INTO @sr, @mn\nFIN"},{"id":"text-19","heading":"Text","content":"FERMER backupFiles\nDEALLOCATE backupfiles"},{"id":"text-20","heading":"Text","content":"DROP TABLE #rolememberdummy"},{"id":"text-21","heading":"Text","content":"IMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;\nIMPRIMER &#39;============================================= =============================================== ========= &#39;\nIMPRIMER &#39;Autorisations au niveau du serveur&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;"},{"id":"text-22","heading":"Text","content":"CREATE TABLE #serverpermdummy\n(Nom d&#39;utilisateur varchar (128),\nType d&#39;utilisateur varchar (60),\nStateDesc varchar (60),\nPermName varchar (128)\n)"},{"id":"text-23","heading":"Text","content":"INSERT INTO #serverpermdummy\nSELECT l.name comme nom d&#39;utilisateur, l.type_desc AS UserType, p.state_desc AS StateDesc, p.permission_name AS PermName\nFROM sys.server_permissions AS p\nJOIN sys.server_principals AS l ON p.grantee_principal_id = l.principal_id\nWHERE ((nom_autorisation &lt;&gt; &#39;CONNECT SQL&#39; ET nom_autorisation &lt;&gt; &#39;CONNECT&#39;) OU p.state_desc = &#39;DENY&#39;) ET l.type_desc &lt;&gt; &#39;CERTIFICATE_MAPPED_LOGIN&#39; ET l.nom NE PAS LIKE &#39;% # MS_%&#39;\nORDER BY l.principal_id"},{"id":"text-24","heading":"Text","content":"--SELECT * FROM sys.server_principals"},{"id":"text-25","heading":"Text","content":"SET @ col1nm = &#39;Nom d&#39;utilisateur&#39;\nSET @ col1len = 20\nSET @ col2nm = &#39;&#39;\nSET @ col2len = 8\nSET @ col3nm = &#39;Type d&#39;utilisateur&#39;\nSET @ col3len = 20\nSET @ col4nm = &#39;&#39;\nSET @ col4len = 8\nSET @ col5nm = &#39;State Desc&#39;\nSET @ col5len = 20\nSET @ col6nm = &#39;&#39;\nSET @ col6len = 8\nSET @ col7nm = &#39;Permission&#39;\nSET @ col7len = 30"},{"id":"text-26","heading":"Text","content":"SET @ col1min = LEN (@ col1nm)\nSET @ col3min = LEN (@ col3nm)\nSET @ col5min = LEN (@ col5nm)\nSET @ col7min = LEN (@ col7nm)"},{"id":"text-27","heading":"Text","content":"--Obtenir la longueur de la plus longue occurrence des colonnes\nSELECT @ col1max = ISNULL (MAX (len (LTRIM (RTRIM (UserName)))), 0) FROM #serverpermdummy\nSELECT @ col3max = ISNULL (MAX (len (LTRIM (RTRIM (UserType)))), 0) FROM #serverpermdummy\nSELECT @ col5max = ISNULL (MAX (len (LTRIM (RTRIM (StateDesc)))), 0) FROM #serverpermdummy\nSELECT @ col7max = ISNULL (MAX (len (LTRIM (RTRIM (PermName)))), 0) FROM #serverpermdummy"},{"id":"text-28","heading":"Text","content":"- Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\nif @ col1max &lt;@ col1min SET @ col1len = @ col1min sinon SET @ col1len = @ col1max\nsi @ col3max &lt;@ col3min SET @ col3len = @ col3min sinon SET @ col3len = @ col3max\nsi @ col5max &lt;@ col5min SET @ col5len = @ col5min sinon SET @ col5len = @ col5max\nsi @ col7max &lt;@ col7min SET @ col7len = @ col7min sinon SET @ col7len = @ col7max"},{"id":"text-29","heading":"Text","content":"si @outputtype = 1\n COMMENCER\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len -len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm))\n PRINT REPLICATE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICATE (&#39;=&#39;, @ col3len) + SPACE (@ col4len) + REPLICAT (&#39;=&#39;, @ col5len) + SPACE (@ col6len) + REPLICATE (&#39;=&#39;, @ col7len)\n FIN\nautre\n si EXISTS (SELECT ISNULL (UserName, &#39;&#39;) AS UserName, ISNULL (UserType, &#39;&#39;) AS UserType, ISNULL (StateDesc, &#39;&#39;) AS StateDesc, ISNULL (PermName, &#39;&#39;) AS PermName FROM nom_serveurpermdummy)\n IMPRIMER &#39;UTILISER le maître;&#39;"},{"id":"text-30","heading":"Text","content":"DÉCLARER backupfiles CURSEUR POUR\nSELECT ISNULL (UserName, &#39;&#39;) AS UserName, ISNULL (UserType, &#39;&#39;) AS UserType, ISNULL (StateDesc, &#39;&#39;) AS StateDesc, ISNULL (PermName, &#39;&#39;) AS PermName FROM #serverpermdummy"},{"id":"text-31","heading":"Text","content":"OPEN backupFiles"},{"id":"text-32","heading":"Text","content":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @usnm, @ustp, @stdsc, @permnm"},{"id":"text-33","heading":"Text","content":"WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @ col1nm = @usnm\n SET @ col2nm = &#39;&#39;\n SET @ col3nm = @ustp\n SET @ col4nm = &#39;&#39;\n SET @ col5nm = @stdsc\n SET @ col6nm = &#39;&#39;\n SET @ col7nm = @permnm\n si @outputtype = 1\n IMPRIMER @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len -len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm))\n autre\n PRINT @stdsc + &#39;&#39; + @permnm + &#39;TO&#39; + @usnm + &#39;;&#39;"},{"id":"text-34","heading":"Text","content":" FETCH NEXT FROM backupFiles INTO @usnm, @ustp, @stdsc, @permnm\nFIN"},{"id":"text-35","heading":"Text","content":"FERMER backupFiles\nDEALLOCATE backupfiles"},{"id":"text-36","heading":"Text","content":"DROP TABLE #serverpermdummy"},{"id":"text-37","heading":"Text","content":"IMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;\nIMPRIMER &#39;============================================= =============================================== ========= &#39;\nIMPRIMER &#39;Information par base de données&#39;\nIMPRESSION &#39; &#39;\nIMPRESSION &#39; &#39;"},{"id":"text-38","heading":"Text","content":"CREATE TABLE #DummyDBDesc\n(RecID int IDENTITY NOT NULL,\n NomServeur varchar (128) NULL,\n DBName varchar (100) NULL,\n Modèle de restauration varchar (10) NULL,\n CompatibilityLevel varchar (30) NULL,\n ReadWriteDesc varchar (10) NULL\n)\nCREATE TABLE #dummyDBRoles\n(RoleName varchar (200),\n Nom d&#39;utilisateur varchar (200),\n Type d&#39;utilisateur varchar (200)\n)"},{"id":"text-39","heading":"Text","content":"CREATE TABLE #dummyrolelist\n(Nom de rôle varchar (200)\n)"},{"id":"text-40","heading":"Text","content":"CREATE TABLE #dummyDBUsers\n(Nom d&#39;utilisateur varchar (200),\n Type d&#39;utilisateur varchar (200)\n)\nINSERT INTO #DummyDBDesc\nsélectionnez CONVERT (varchar (128), @@ nom_serveur) AS ServerName, CONVERT (varchar (100), nom) en tant que DBName, CONVERT (varchar (10), recovery_model_desc) en tant que RecoveryModel, --database Base,\nCASE niveau_compatibilité\nWHEN 80 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2000 *&#39;\nWHEN 90 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2005&#39;\nWHEN 100 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2008&#39;\nWHEN 105 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2008 R2&#39;\nWHEN 110 THEN CONVERT (varchar (4), niveau_compatibilité) + &#39;- SQL 2012&#39;\nELSE CONVERT (varchar (4), niveau_compatibilité)\nEND AS CompatibilityLevel,\nCASE is_read_only\nQUAND 0 ALORS CONVERTIR (varchar (10), &#39;RW&#39;)\nELSE CONVERT (varchar (10), &#39;R&#39;)\nFIN comme ReadWriteDesc\nFROM sys.databases\nWHERE nom NOT IN (&#39;tempdb&#39;, &#39;master&#39;, &#39;msdb&#39;, &#39;model&#39;) et nom NOT LIKE &#39;% ReportServer%&#39; AND state = 0\n--AND name = &#39;MyDatabase&#39;\nORDRE PAR NOM"},{"id":"text-41","heading":"Text","content":"DÉCLARER backupfiles CURSEUR POUR\n SELECT DBName, RecoveryModel, CompatibilityLevel, ReadWriteDesc FROM #DummyDBDesc ORDER BY DBName\nOPEN backupFiles"},{"id":"text-42","heading":"Text","content":"DECLARE @dbn varchar (100)\nDECLARE @rm varchar (10)\nDECLARE @cl varchar (30)\nDECLARE @rwd varchar (10)"},{"id":"text-43","heading":"Text","content":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles INTO @dbn, @rm, @cl, @rwd"},{"id":"text-44","heading":"Text","content":"WHILE @@ FETCH_STATUS = 0\nCOMMENCER"},{"id":"text-45","heading":"Text","content":"IMPRIMER &#39;Nom de la base de données:&#39; + @dbn\n PRINT &#39;Modèle de récupération:&#39; + @rm\n PRINT &#39;Niveau de compatibilité:&#39; + @cl\n IMPRIMER &#39;Lecture / Ecriture:&#39; + @rwd\n IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n "},{"id":"text-46","heading":"Text","content":"/ * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur l&#39;utilisateur de la base de données * /\n \n--Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBUsers"},{"id":"text-47","heading":"Text","content":" - Obtenez les rôles pour cette base de données et chargez-les dans la table temporaire\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBUsers SELECT CONVERT (varchar (100), nom) AS UserName, CONVERT (varchar (100), type_desc) en tant que UserType FROM sys.database_principals WHERE (type = &#39;&#39; &#39;&#39; &#39;OU type =&#39; &#39;&#39; &#39;&#39; OU type = &#39;&#39; G &#39;&#39;) AND is_fixed_role = 0 AND (nom NOT IN (&#39;&#39; guest &#39;&#39;, &#39;&#39; dbo &#39;&#39;, &#39;&#39; INFORMATION_SCHEMA &#39;&#39;, &#39;&#39; sys &#39;&#39;))\n --PRINT @cmd\n EXEC (@cmd)"},{"id":"text-48","heading":"Text","content":"--Obtenir la longueur de la plus longue occurrence des colonnes\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBUsers\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBUsers"},{"id":"text-49","heading":"Text","content":" - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @unmax &lt;25 SET @unmax = 25\n si @utmax &lt;25 SET @utmax = 25\n \n--Définissez et imprimez les en-têtes de colonne pour les informations de rôle.\n SET @ col1nm = &#39;Nom d&#39;utilisateur&#39;\n SET @ col1len = @unmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;UserType&#39;\n SET @ col3len = @utmax\n IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm))\nESPACE D&#39;IMPRESSION (10) + REPLIQUE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLIQUE (&#39;=&#39;, @ col3len)"},{"id":"text-50","heading":"Text","content":" DÉCLARER backupFiles2 CURSOR FOR\nSELECT UserName, UserType FROM #dummyDBUsers ORDER BY UserName"},{"id":"text-51","heading":"Text","content":" OPEN backupFiles2"},{"id":"text-52","heading":"Text","content":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @un, @ut"},{"id":"text-53","heading":"Text","content":" WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Définissez et imprimez les détails de la ligne pour les informations de rôle.\n SET @ col1nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col3nm = SUBSTRING (@ ut, 1, @ utmax)"},{"id":"text-54","heading":"Text","content":" ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm))"},{"id":"text-55","heading":"Text","content":"FETCH NEXT FROM backupFiles2 INTO @un, @ut\n FIN"},{"id":"text-56","heading":"Text","content":"FERMER backupFiles2\nDEALLOCATE backupFiles2\n \nIMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n \nif @outputtype = 2 - crée les instructions pour affecter un utilisateur à cette base de données\n COMMENCER\n TRUNCATE TABLE #dummyuserassign"},{"id":"text-57","heading":"Text","content":" SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyuserassign select DISTINCT\n CASE members.type_desc\nQUAND &#39;&#39; WINDOWS_USER &#39;&#39;\nALORS &#39;&#39; CREATE USER [''+ members.name + ''] POUR CONNEXION [''+ members.name+ '']&#39;&#39; + &#39;&#39; WITH DEFAULT_SCHEMA =['' + members.default_schema_name + '']&#39;&#39;\nQUAND &#39;&#39; SQL_USER &#39;&#39;\n ALORS &#39;&#39; CREATE USER [''+ members.name + ''] POUR CONNEXION [''+ members.name+ '']&#39;&#39; + &#39;&#39; WITH DEFAULT_SCHEMA =['' + members.default_schema_name + '']&#39;&#39;\n END AS CreateUser\n à partir de membres sys.database_principals\n jointure interne sys.database_role_members drm\n sur members.principal_id = drm.member_principal_id\n rejoindre des rôles sys.database_principals\n sur drm.role_principal_id = roles.principal_id\n où membres.nom &lt;&gt; &#39;&#39; dbo &#39;&#39;\n ORDER BY CreateUser &#39;\n --PRINT @cmd\n EXEC (@cmd)"},{"id":"text-58","heading":"Text","content":"si existe (SELECT * FROM #dummyuserassign)\n COMMENCER\n IMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n FIN\n DÉCLARER myCursorVariable3 CURSOR FOR\nSELECT LineVal FROM #dummyuserassign ORDER BY RecID"},{"id":"text-59","heading":"Text","content":" OUVRIR myCursorVariable3"},{"id":"text-60","heading":"Text","content":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable3 INTO @lineval"},{"id":"text-61","heading":"Text","content":" WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nIMPRIMER @lineval"},{"id":"text-62","heading":"Text","content":" FETCH NEXT FROM myCursorVariable3 INTO @lineval\n FIN"},{"id":"text-63","heading":"Text","content":"FERMER myCursorVariable3\nDEALLOCATE myCursorVariable3\nFIN\n "},{"id":"text-64","heading":"Text","content":"si @includeroleinfo = 1\n COMMENCER\n / * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur le rôle * /\n SELECT @collationname = nom_collection FROM master.sys.databases WHERE nom = @dbn\n si @collationname EST NULL\n print &#39;null for&#39; + @dbn"},{"id":"text-65","heading":"Text","content":" si @collationname EST NULL\n SET @collationname = (SELECT nom_collection FROM maître.sys.databases WHERE nom = &#39;maître&#39;)"},{"id":"text-66","heading":"Text","content":" SET @cmd = &#39;ALTER TABLE #dummyrolelist ALTER COLUMN Nom du rôle varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN RoleName varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN Nom d&#39;utilisateur varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)\nSET @cmd = &#39;ALTER TABLE #dummyDBRoles ALTER COLUMN Type d&#39;utilisateur varchar (200) COLLATE&#39; + @collationname + &#39;NULL&#39;\n EXEC (@cmd)"},{"id":"text-67","heading":"Text","content":"--Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBRoles"},{"id":"text-68","heading":"Text","content":" - Obtenez les rôles pour cette base de données et chargez-les dans la table temporaire\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBRoles sélectionnez CONVERT (varchar (200), roles.name) en tant que NomRôle, CONVERT (varchar (200), members.name) AS NomUtilisateur, CONVERT (varchar (200), members.type_desc) AS UserType de sys.database_principals membres internes rejoindre sys.database_role_members drm sur members.principal_id = drm.member_principal_id rejoindre interne sys.database_principals rôles sur drm.role_principal_id = roles.principal_id où members.name &lt;&gt; &#39;&#39; &#39;&#39; dbo &#39;&#39;, ORDER BY membres\n --PRINT @cmd\n EXEC (@cmd)"},{"id":"text-69","heading":"Text","content":"- Ajoutez maintenant les rôles présents dans la base de données auxquels aucune personne ne leur a été affectée (ceux déjà présents dans la table temporaire)\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBRoles SELECT CONVERT (varchar (200), nom) AS NameName, &#39;&#39; --none-- &#39;&#39; As UserName, &#39;&#39; &#39;&#39; AS UserType FROM sys.database_principals WHERE type = &#39;&#39; R &#39;&#39; et is_fixed_role = 0 et nom &lt;&gt; &#39;&#39; public &#39;&#39; AND (nom NOT IN (SELECT NomRôle FROM #dummyDBRoles)) &#39;\n --PRINT @cmd\n EXEC (@cmd)"},{"id":"text-70","heading":"Text","content":"- obtenez maintenant une liste des rôles de base de données créés et imprimez-les sous forme d&#39;instructions CREATE ROLE\n si @outputtype = 2\n COMMENCER\n TRUNCATE TABLE #dummyrolelist\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyrolelist SELECT nom FROM sys.database_principals WHERE type = &#39;&#39; R &#39;&#39; AND nom &lt;&gt; &#39;&#39; public &#39;&#39; AND is_fixed_role = 0 &#39;\n --PRINT @cmd\n EXEC (@cmd)\nIMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n DÉCLARER myCursorVariable4 CURSOR FOR\nSELECT NomRôle FROM #dummyrolelist"},{"id":"text-71","heading":"Text","content":"OUVRIR myCursorVariable4"},{"id":"text-72","heading":"Text","content":" - Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable4 INTO @rn"},{"id":"text-73","heading":"Text","content":" WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nSET @cmd = &#39;CREATE ROLE&#39; + @rn\n IMPRIMER @cmd"},{"id":"text-74","heading":"Text","content":"FETCH NEXT FROM myCursorVariable4 INTO @rn\n FIN"},{"id":"text-75","heading":"Text","content":"FERMER myCursorVariable4\n DEALLOCATE myCursorVariable4\n FIN"},{"id":"text-76","heading":"Text","content":" --Obtenir la longueur de la plus longue occurrence des colonnes\n SELECT @rnmax = ISNULL (MAX (len (Nom du rôle)), 0) FROM #dummyDBRoles\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBRoles\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBRoles"},{"id":"text-77","heading":"Text","content":" - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @rnmax &lt;25 SET @rnmax = 25\n si @unmax &lt;25 SET @unmax = 25\n si @utmax &lt;25 SET @utmax = 25"},{"id":"text-78","heading":"Text","content":" --Définissez et imprimez les en-têtes de colonne pour les informations de rôle\n SET @ col1nm = &#39;NomRôle&#39;\n SET @ col1len = @rnmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;Nom d&#39;utilisateur&#39;\n SET @ col3len = @unmax\n SET @ col4nm = &#39;&#39;\n SET @ col4len = 5\n SET @ col5nm = &#39;UserType&#39;\n SET @ col5len = @utmax\n IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\nESPACE D&#39;IMPRESSION (10) + REPLIQUÉ (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLICAT (&#39;=&#39;, @ col3len) + ESPACE (@ col4len) + REPLICAT (&#39;=&#39;, @ col5len)"},{"id":"text-79","heading":"Text","content":" - Imprimez le script pour définir le contexte de la base de données\n si @outputtype = 2\n COMMENCER\n IMPRIMER &#39;UTILISATION&#39; + @dbn\n IMPRIMEZ &#39;GO&#39;\n IMPRESSION &#39; &#39;\n FIN"},{"id":"text-80","heading":"Text","content":" --statement pour obtenir tous les rôles pour cette base de données\n --SELECT nom FROM sys.database_principals WHERE type = &#39;R&#39; et is_fixed_role = 0 et nom &lt;&gt; &#39;public&#39;\n --peut utiliser le script des instructions CREATE ROLE"},{"id":"text-81","heading":"Text","content":" - Maintenant, parcourez les rôles\n DÉCLARER backupFiles2 CURSOR FOR\nSELECT Nom de rôle, Nom d&#39;utilisateur, Type d&#39;utilisateur FROM #dummyDBRoles ORDER BY Nom de rôle"},{"id":"text-82","heading":"Text","content":" OPEN backupFiles2"},{"id":"text-83","heading":"Text","content":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @rn, @un, @ut"},{"id":"text-84","heading":"Text","content":"WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Définissez et imprimez les détails de la ligne pour les informations de rôle.\n SET @ col1nm = SUBSTRING (@ rn, 1, @ rnmax)\n SET @ col3nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col5nm = SUBSTRING (@ ut, 1, @ utmax)\n si @outputtype = 1\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\nsi @outputtype = 2\n COMMENCER\n if @ col3nm &lt;&gt; &#39;--none--&#39;\n PRINT &#39;exec sp_addrolemember [' + @col1nm + '], [' + @col3nm + '] --Usertype = &#39;+ @ col5nm\n autre\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm))\n FIN"},{"id":"text-85","heading":"Text","content":" FETCH NEXT FROM backupFiles2 INTO @rn, @un, @ut\nFIN"},{"id":"text-86","heading":"Text","content":"FERMER backupFiles2\nDEALLOCATE backupFiles2"},{"id":"text-87","heading":"Text","content":" IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n FIN"},{"id":"text-88","heading":"Text","content":" \nsi @includeobjlvlperms = 1\n COMMENCER\n / * ============================================= =============================================== =============================================== ============= * /\n / * Informations sur les autorisations de niveau objet * /\n --Démarrez avec une table vierge pour charger les valeurs\n TRUNCATE TABLE #dummyDBPerms"},{"id":"text-89","heading":"Text","content":" - Obtenir les autorisations pour cette base de données et charger dans la table temporaire\n - Je suis sûr que certaines de ces pièces sont venues d&#39;ailleurs. Mes appologies à l&#39;initiateur.\n SET @cmd = &#39;USE [' + @dbn + ']; INSERT INTO #dummyDBPerms &#39;\n SET @cmd = @cmd + &#39;select p.state_desc, p.permission_name, s.name, o.name, u.name, CASE o.type WHEN&#39; &#39;P&#39; &#39;THEN&#39; &#39;SPROC&#39; &#39;\n QUAND &#39;&#39; V &#39;&#39; ALORS &#39;&#39; View &#39;&#39;\n QUAND &#39;&#39; U &#39;&#39; ALORS &#39;&#39; Table &#39;&#39;\n QUAND &#39;&#39; FN &#39;&#39; ALORS &#39;&#39; Fonction (détartreur) &#39;&#39;\n QUAND &#39;&#39; TF &#39;&#39; THEN &#39;&#39; Fonction (valeur de table) &#39;&#39;\n ELSE o.type_desc END AS ObjectType,\n CONVERT (varchar (200), u.type_desc) AS UserType\n de sys.database_permissions p\njointure interne sys.objects o sur p.major_id = o.object_id\njointure interne sys.schemas s sur s.schema_id = o.schema_id\njointure interne sys.database_principals u sur p.grantee_principal_id = u.principal_id\n ORDER BY o.type, o.name collate Latin1_general_CI_AS, u.name collate Latin1_general_CI_AS &#39;\n --PRINT @cmd\n EXEC (@cmd)"},{"id":"text-90","heading":"Text","content":"--Obtenir la longueur de la plus longue occurrence de chacune des colonnes\n SELECT @sdmax = ISNULL (MAX (len (StateDesc)), 0) FROM #dummyDBPerms\n SELECT @pnmax = ISNULL (MAX (len (PermName)), 0) FROM #dummyDBPerms\n SELECT @snmax = ISNULL (MAX (len (SchemaName)), 0) FROM #dummyDBPerms\n SELECT @onmax = ISNULL (MAX (len (ObjectName)), 0) FROM #dummyDBPerms\n SELECT @unmax = ISNULL (MAX (len (UserName)), 0) FROM #dummyDBPerms\n SELECT @pdmax = ISNULL (MAX (len (ObjectType)), 0) FROM #dummyDBPerms\n SELECT @utmax = ISNULL (MAX (len (UserType)), 0) FROM #dummyDBPerms"},{"id":"text-91","heading":"Text","content":" - Définissez des valeurs minimales pour que la colonne ne s&#39;imprime pas rapidement\n si @sdmax &lt;15 SET @sdmax = 15\n si @pnmax &lt;15 SET @pnmax = 15\n si @snmax &lt;10 SET @snmax = 10\n si @onmax &lt;15 SET @onmax = 15\n si @unmax &lt;15 SET @unmax = 15\n si @pdmax &lt;15 SET @pdmax = 15 --ObjectType\n si @utmax &lt;15 SET @utmax = 15 --UserType"},{"id":"text-92","heading":"Text","content":" --Placez et imprimez les en-têtes de colonne pour les informations de permissions\n SET @ col1nm = &#39;StateDesc&#39;\n SET @ col1len = @sdmax\n SET @ col2nm = &#39;&#39;\n SET @ col2len = 5\n SET @ col3nm = &#39;PermName&#39;\n SET @ col3len = @pnmax\n SET @ col4nm = &#39;&#39;\n SET @ col4len = 5\n SET @ col5nm = &#39;Schema&#39;\n SET @ col5len = @snmax\n SET @ col6nm = &#39;&#39;\n SET @ col6len = 5\n SET @ col7nm = &#39;Object&#39;\n SET @ col7len = @onmax\n SET @ col8nm = &#39;&#39;\n SET @ col8len = 5\n SET @ col9nm = &#39;Utilisateur&#39;\n SET @ col9len = @unmax\n SET @ col10nm = &#39;&#39;\n SET @ col10len = 5\n SET @ col11nm = &#39;ObjectType&#39;\n SET @ col11len = @pdmax\n SET @ col12nm = &#39;&#39;\n SET @ col12len = 5\n SET @ col13nm = &#39;UserType&#39;\n SET @ col13len = @utmax"},{"id":"text-93","heading":"Text","content":" IMPRESSION &#39; &#39;\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm)) + ESPACE (@ col8len) + @ col9nm + ESPACE (@ col9len-len ( @ col9nm)) + ESPACE (@ col10len) + @ col11nm + ESPACE (@ col11len-len (@ col11nm)) + ESPACE (@ col12len) + @ col13nm + ESPACE (@ col13len-len (@ col13nm))\n ESPACE D&#39;IMPRESSION (10) + REPLIQUE (&#39;=&#39;, @ col1len) + ESPACE (@ col2len) + REPLIQUE (&#39;=&#39;, @ col3len) + ESPACE (@ col4len) + REPLIQUE (&#39;=&#39;, @ col5len) + ESPACE ( @ col6len) + REPLICATE (&#39;=&#39;, @ col7len) + SPACE (@ col8len) + REPLICATE (&#39;=&#39;, @ col9len) + SPACE (@ col10len) + REPLICATE (&#39;=&#39;, @ col11len) + SPACE (@ col12len ) + REPLICATE (&#39;=&#39;, @ col13len)"},{"id":"text-94","heading":"Text","content":" --Consultez les autorisations pour cette base de données, formatez-les et imprimez-les\n DÉCLARER backupFiles2 CURSOR FOR\nSELECT StateDesc, PermName, SchemaName, ObjectName, UserName, ObjectType, UserType FROM #dummyDBPerms ORDER BY Schemaname, ObjectName, UserName"},{"id":"text-95","heading":"Text","content":" OPEN backupFiles2"},{"id":"text-96","heading":"Text","content":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM backupFiles2 INTO @sd, @pn, @sn, @on, @un, @pd, @ut"},{"id":"text-97","heading":"Text","content":" WHILE @@ FETCH_STATUS = 0\nCOMMENCER\n--Placez et imprimez les détails de la ligne pour les informations sur les autorisations\n SET @ col1nm = SUBSTRING (@ sd, 1, @ sdmax)\n SET @ col3nm = SUBSTRING (@ pn, 1, @ pnmax)\n SET @ col5nm = SUBSTRING (@ sn, 1, @ snmax)\n SET @ col7nm = SUBSTRING (@ on, 1, @ onmax)\n SET @ col9nm = SUBSTRING (@ un, 1, @ unmax)\n SET @ col11nm = SUBSTRING (@ pd, 1, @ pdmax)\n SET @ col13nm = SUBSTRING (@ ut, 1, @ utmax)"},{"id":"text-98","heading":"Text","content":" --imprime l&#39;enregistrement de détail pour les permissions\n si @outputtype = 1\n ESPACE D&#39;IMPRESSION (10) + @ col1nm + ESPACE (@ col1len-len (@ col1nm)) + ESPACE (@ col2len) + @ col3nm + ESPACE (@ col3len-len (@ col3nm)) + ESPACE (@ col4len) + @ col5nm + ESPACE (@ col5len-len (@ col5nm)) + ESPACE (@ col6len) + @ col7nm + ESPACE (@ col7len-len (@ col7nm)) + ESPACE (@ col8len) + @ col9nm + ESPACE (@ col9len-len ( @ col9nm)) + ESPACE (@ col10len) + @ col11nm + ESPACE (@ col11len-len (@ col11nm)) + ESPACE (@ col12len) + @ col13nm + ESPACE (@ col13len-len (@ col13nm))\n si @outputtype = 2\n PRINT @ col1nm + &#39;&#39; + @ col3nm + &#39;ON [' + @col5nm + '].[' + @col7nm + '] À [' + @col9nm + '] --ObjectType = &#39;+ @ col11nm +&#39; UserType = &#39;+ @ col13nm"},{"id":"text-99","heading":"Text","content":" FETCH NEXT FROM backupFiles2 INTO @sd, @pn, @sn, @on, @un, @ pd, @ ut\n FIN"},{"id":"text-100","heading":"Text","content":"FERMER backupFiles2\nDEALLOCATE backupFiles2"},{"id":"text-101","heading":"Text","content":" IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;"},{"id":"text-102","heading":"Text","content":" FIN"},{"id":"text-103","heading":"Text","content":" si @outputtype = 2 ET @includedefaultdb = 1\n COMMENCER\n if EXISTS (nom SELECT de master.sys.server_Principals WHERE, saisissez (&#39;G&#39;, &#39;S&#39;, &#39;U&#39;) ET default_database_name = @dbn)\n COMMENCER\n IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n PRINT &#39;- Voici les noms d&#39;utilisateur et leurs paramètres de base de données par défaut&#39;\n IMPRESSION &#39; &#39;"},{"id":"text-104","heading":"Text","content":" DÉCLARER CURSEUR myCursorVariable pour\nSELECT nom, default_database_name comme DefaultDB\nFROM master.sys.server_Principals\nWHERE saisissez (&#39;G&#39;, &#39;S&#39;, &#39;U&#39;) ET default_database_name = @dbn\n ORDRE PAR NOM"},{"id":"text-105","heading":"Text","content":" OPEN myCursorVariable"},{"id":"text-106","heading":"Text","content":"- Boucle dans tous les fichiers de la base de données\nFETCH NEXT FROM myCursorVariable INTO @loginname, @dbnametouse"},{"id":"text-107","heading":"Text","content":" WHILE @@ FETCH_STATUS = 0\nCOMMENCER\nIMPRIMER &#39;ALTER LOGIN [' + @loginname + '] WITH DEFAULT_DATABASE = &#39;+ @dbnametouse"},{"id":"text-108","heading":"Text","content":" FETCH NEXT FROM myCursorVariable INTO @loginname, @dbnametouse\n FIN"},{"id":"text-109","heading":"Text","content":"FERMER myCursorVariable\nDEALLOCATE myCursorVariable"},{"id":"text-110","heading":"Text","content":"IMPRESSION &#39; &#39;\n IMPRESSION &#39; &#39;\n FIN\n FIN"},{"id":"text-111","heading":"Text","content":"IMPRIMER &#39;============================================= =============================================== ========= &#39;\n \n--Obtenir le prochain nom de base de données et informations à utiliser dans la boucle de base de données\n FETCH NEXT FROM backupFiles INTO @dbn, @rm, @cl, @rwd\nFIN"},{"id":"text-112","heading":"Text","content":"FERMER backupFiles\nDEALLOCATE backupfiles"},{"id":"text-113","heading":"Text","content":"/ * ============================================= ============================================== /\n--Dispose des tables temporaires\nDROP TABLE #DummyDBDesc\nDROP TABLE #dummyDBRoles\nDROP TABLE #dummyDBUsers\nDROP TABLE #dummyDBPerms\nDROP TABLE #dummyuserassign\nDROP TABLE #dummyrolelist"},{"id":"text-114","heading":"Text","content":"RÉGLER NOCOUNT"},{"id":"text-115","heading":"Text","content":"Click to rate this post!\n                                   \n                               [Total: 0  Average: 0]"}],"media":{"primary_image":""},"relations":[{"rel":"canonical","href":"https://tutos-gameserver.fr/2019/10/16/comment-creer-un-script-des-mappages-dutilisateurs-pour-les-connexions-utilisateurs-serveur-dimpression/"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/10/16/comment-creer-un-script-des-mappages-dutilisateurs-pour-les-connexions-utilisateurs-serveur-dimpression/llm","type":"text/html"},{"rel":"alternate","href":"https://tutos-gameserver.fr/2019/10/16/comment-creer-un-script-des-mappages-dutilisateurs-pour-les-connexions-utilisateurs-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}