it-swarm.com.de

Wie zählt man die Gesamtanzahl der gespeicherten Prozeduren und Tabellen in SQL Server 2008?

Ich habe die Datenbank Test1 in SQL Server 2008 R2. Auf dem Live-Server habe ich ein Backup von dort erstellt und auf unserem lokalen Rechner als Test2 wiederhergestellt und einige Tabellen und Prozeduren hinzugefügt.

Wenn wir Test2 wieder auf dem Live-Server wiederherstellen, ist es dann eine Abfrage, die Tabellennamen und Prozedurnamen erhalten kann, die nur in Test 2 nicht in Test 1 oder SQL Server als völlig andere Datenbank behandelt werden?

Und was ist die Abfrage, wenn ich nur die Anzahl der Unterschiede zwischen Test1 und Test2 Datenbanken wissen möchte

22
Shashank

Dadurch erhalten Sie die Anzahl der Tabellen und gespeicherten Prozeduren.

SELECT 
    CASE TYPE 
        WHEN 'U' 
            THEN 'User Defined Tables' 
        WHEN 'S'
            THEN 'System Tables'
        WHEN 'IT'
            THEN 'Internal Tables'
        WHEN 'P'
            THEN 'Stored Procedures'
        WHEN 'PC'
            THEN 'CLR Stored Procedures'
        WHEN 'X'
            THEN 'Extended Stored Procedures'
    END, 
    COUNT(*)     
FROM SYS.OBJECTS
WHERE TYPE IN ('U', 'P', 'PC', 'S', 'IT', 'X')
GROUP BY TYPE

In sys.objects finden Sie alle Arten von Objekten in der Datenbank. Sie müssen diese Abfrage für jede Ihrer Datenbanken ausführen, um die Anzahl der Objekte anzuzeigen.

Alle Informationen dazu, was in sys.objectsgespeichert ist, finden Sie hier .

69
Radu Gheorghiu

Sie können diese 2 Abfragen verwenden:

select count(*) as TablesCount from sys.tables
select count(*) as ProceduresCount from sys.procedures
14
Szymon

Ich verwende oft dieses Skript, das ich in diesem Blog gefunden habe.

USE [MyDatabase]
GO
SELECT 'Count' = COUNT(*), 'Type' = CASE type 
                WHEN 'C' THEN 'CHECK constraints' 
                WHEN 'D' THEN 'Default or DEFAULT constraints' 
                WHEN 'F' THEN 'FOREIGN KEY constraints' 
                WHEN 'FN' THEN 'Scalar functions' 
                WHEN 'IF' THEN 'Inlined table-functions' 
                WHEN 'K' THEN 'PRIMARY KEY or UNIQUE constraints' 
                WHEN 'L' THEN 'Logs' 
                WHEN 'P' THEN 'Stored procedures' 
                WHEN 'R' THEN 'Rules' 
                WHEN 'RF' THEN 'Replication filter stored procedures' 
                WHEN 'S' THEN 'System tables' 
                WHEN 'TF' THEN 'Table functions' 
                WHEN 'TR' THEN 'Triggers' 
                WHEN 'U' THEN 'User tables' 
                WHEN 'V' THEN 'Views' 
                WHEN 'X' THEN 'Extended stored procedures' 
    END 

    FROM sys.objects 
    GROUP BY type 
    ORDER BY type 
GO

Sie können den Typ anhand der Informationen zu sys.objects ändern.

Oder nach Objekt aus dieser Referenz Object Catalog Views , da Sie bereits eine Antwort für Tabellen und Prozeduren in den vorherigen Antworten erhalten haben, z.

SELECT count(*) AS MyTables FROM sys.tables
SELECT count(*) AS MyProcedures FROM  sys.procedures
SELECT count(*) AS MyTriggers FROM  sys.triggers
SELECT count(*) AS MyViews FROM  sys.views

Hoffe, das gibt dir zusätzliche Hilfe 

5
Milica Medic

Verwenden Sie die folgenden Abfragen.

USE YOURDBNAME
SELECT COUNT(*) AS totalTable from information_schema.tables 
WHERE table_type = 'base table'  

select Count(*) AS TotalProc from sys.procedures
2
Muhammad Awais

Ich benutze jetzt das Folgende, basierend auf Milicas Antwort mit einigen zusätzlichen Typen, Standardwert und sortiert nach Anzahl.

SELECT 'Count' = COUNT(*), 'Type' = CASE type 
    WHEN 'AF' THEN 'Aggregate function (CLR)' 
    WHEN 'C' THEN 'CHECK constraints' 
    WHEN 'D' THEN 'Default or DEFAULT constraints' 
    WHEN 'F' THEN 'FOREIGN KEY constraints' 
    WHEN 'FN' THEN 'Scalar functions' 
    WHEN 'FS' THEN 'Assembly (CLR) scalar-function' 
    WHEN 'FT' THEN 'Assembly (CLR) table-valued function' 
    WHEN 'IF' THEN 'Inlined table-functions' 
    WHEN 'IT' THEN 'Internal table' 
    WHEN 'K' THEN 'PRIMARY KEY or UNIQUE constraints' 
    WHEN 'L' THEN 'Logs' 
    WHEN 'P' THEN 'Stored procedures' 
    WHEN 'PC' THEN 'Assembly (CLR) stored-procedure' 
    WHEN 'PG' THEN 'Plan guide' 
    WHEN 'PK' THEN 'PRIMARY KEY constraint' 
    WHEN 'R' THEN 'Rules' 
    WHEN 'RF' THEN 'Replication filter stored procedures' 
    WHEN 'S' THEN 'System tables' 
    WHEN 'SN' THEN 'Synonym' 
    WHEN 'SO' THEN 'Sequence object' 
    WHEN 'SQ' THEN 'Service queue' 
    WHEN 'TF' THEN 'Table functions' 
    WHEN 'TR' THEN 'Triggers' 
    WHEN 'U' THEN 'User tables' 
    WHEN 'UQ' THEN 'UNIQUE constraint' 
    WHEN 'V' THEN 'Views' 
    WHEN 'X' THEN 'Extended stored procedures' 
    ELSE type
END 
FROM sys.objects 
GROUP BY type 
ORDER BY 'Count' desc
1
Taran

Verwenden Sie dieses Skript. Es wird keine switch case-Anweisung verwendet.

USE [MyDatabase]
GO
select distinct type_desc as 'Type Description', Count from
(SELECT 'Count' = COUNT(*), type FROM sys.objects GROUP BY type) as dbstatistics 
left join sys.objects on dbstatistics.type = sys.objects.type ORDER BY Count desc
GO
0
Prabhu P