Bonjour tous,
J'ai besoin de vos lumières
Je suis en train de créer une requête qui fait des contrôles de nommage de table sur chaque base de données. Ex:
Ma requête marche nickel quand je la lance avec un USE XXX GO dans SSMS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 IF DB_NAME() LIKE 'Source%' BEGIN SELECT CASE WHEN TABLE_NAME LIKE 'zzz%' THEN 'A supprimer' WHEN TABLE_NAME LIKE 'TD_%' THEN 'Table de dimension' WHEN TABLE_NAME LIKE 'TF_%' THEN 'Table de faits' WHEN TABLE_NAME LIKE 'CDE_%' THEN 'Tables denrichissement ' ELSE 'Pas de règles de nommage pour les bases Source_%' END AS TABLE_TYPE, DB_NAME() AS DATABASE_NAME, TABLE_NAME, CASE WHEN TABLE_NAME LIKE 'zzz%' THEN 1 ELSE 0 END AS CONTROL_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' END IF DB_NAME() LIKE 'Prochain type de base....' BEGIN Requête END etc. etc.
Cependant je veux industrialiser ce truc en utilisant la procédure stockée master.sys.SP_MSforeachDB et passer ma requête en tant que variable pour le SQL dynamique.
Seul souci : le type de données de variable pour la procédure stockée et limité (NVARCHAR(4000)) je pense. Et ma requête fait plus de 5000
J'ai tenté de recréer la PS avec des variables NVARCHAR(MAX) mais ça marche pas puisqu'il appelle d'autres PS de façon imbriquée....
Any ideas?!
Partager