Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Le CorpusHermeticum VLF.xml génère des erreurs si on sélectionne plus de 2 bases ! #9

Open
hamidmira opened this issue Jul 22, 2017 · 0 comments

Comments

@hamidmira
Copy link

Le CorpusHermeticum VLF.xml génère, en mode exécution, des erreurs, dès lors qu'on sélectionne plus de 2 bases de données ! L'erreur que j'ai intercepté au niveau Serveur est la suivante :

Msg 2714, Level 16, State 6, Line 1
There is already an object named '#VLFInfo' in the database.

Je te propose les modifications suivantes :
1 - Modifier le niveau (level) du fichier VLF.xml de level="Database" en level="Server"
puisque le script (sp_MSforeachdb) liste les VLF de toutes les bases de données du Serveur.
2 - Rajouter les DROP des tables temporaires si elles existent déjà, et ce, avant leur création

En conclusion, je te propose le script final ci-dessous, testé sans erreur :

<?xml version="1.0" encoding="utf-8" ?>
<hermeticus name="VLF" level="Server" folder="Databases"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Corpus.xsd">
  <header>
    <description lang="fr" tooltip="VLF" label="VLF" />
    <description lang="en" tooltip="VLF" label="VLF" />
  </header>
  <queries>
    <query versionMajor="11-*">
      <![CDATA[
IF OBJECT_ID('tempdb.dbo.#VLFInfo') IS NOT NULL
  DROP TABLE #VLFInfo;
CREATE TABLE #VLFInfo (RecoveryUnitID int, FileID  int,
					   FileSize bigint, StartOffset bigint,
					   FSeqNo      bigint, [Status]    bigint,
					   Parity      bigint, CreateLSN   numeric(38));

IF OBJECT_ID('tempdb.dbo.#VLFCountResults') IS NOT NULL
  DROP TABLE #VLFCountResults;
CREATE TABLE #VLFCountResults(DatabaseName sysname, VLFCount int);

EXEC sp_MSforeachdb N'Use [?];

				INSERT INTO #VLFInfo
				EXEC sp_executesql N''DBCC LOGINFO([?])'';

				INSERT INTO #VLFCountResults
				SELECT DB_NAME(), COUNT(*)
				FROM #VLFInfo;

				TRUNCATE TABLE #VLFInfo;'

SELECT DatabaseName, VLFCount
FROM #VLFCountResults
ORDER BY VLFCount DESC OPTION (RECOMPILE);
]]>
    </query>
  </queries>
 </hermeticus>

A+

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant