Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment obtenir la liste des tables sans contrainte de clé primaire dans toutes les bases de données de l'instance SQL Server - Tutoriel SQL Server / TSQL Partie 62

Scénario :

Vous travaillez en tant que développeur SQL Server ou SQL Server DBA. Vous devez obtenir la liste de toutes les tables de toutes les bases de données sur l'instance SQL Server qui n'ont pas de contraintes de clé primaire. Comment feriez-vous cela ?


Solution :

Nous utiliserons les vues système pour obtenir toutes les tables de toutes les bases de données sur l'instance SQL Server qui n'ont pas de contraintes de clé primaire.
USE masterGO--Declare VariablesDECLARE @DatabaseName AS VARCHAR(500)--Create Table temporaire pour enregistrer les résultatsIF OBJECT_ID('tempdb..#Results') N'EST PAS NULL DROP TABLE #ResultsCREATE TABLE #Results ( ServerName VARCHAR(128) ,DatabaseName VARCHAR(128) ,SchemaName VARCHAR(128) ,TableName VARCHAR(128) ) DECLARE CUR CURSORFORSELECT '[' + NAME + ']' AS DBNameFROM sys.databasesWHERE NAME NOT IN ( 'master' ,'tempdb' ,'model' ,'msdb' )OPEN CurFETCH NEXTFROM CurINTO @DatabaseNameWHILE @@FETCH_STATUS =0BEGIN -- Construire SQL dynamique pour chaque base de données DECLARE @SQL VARCHAR(MAX) =NULL SET @SQL ='Insert into #Results Select @@ServerName, Table_CataLog as DatabaseName, Table_Schema as TableSchema, Table_Name as TableName from '+@DatabaseName+'.information_schema.tables T où e Not Exists( Sélectionnez 1 dans '+@DatabaseName+'.information_Schema.Table_Constraints C where Constraint_Type=''PRIMARY KEY'' and C.Table_Name=T.Table_Name and C.Table_Schema=T.Table_Schema ) and Table_Type=''BASE TABLE ''' EXEC (@SQL) --PRINT @SQL FETCH NEXT FROM Cur INTO @DatabaseNameENDCLOSE CurDEALLOCATE Cur--Sélectionner tous les enregistrements de la table temporaire SELECT *FROM #Results
 
 J'ai exécuté la requête ci-dessus sur mon instance SQL Server et j'ai obtenu la liste des tables de toutes les bases de données qui n'ont pas de contraintes de clé primaire.

Obtenez toutes les tables de l'instance SQL Server qui n'ont pas de contrainte de clé primaire - SQL Server / Tutoriel TSQL