Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Recordcout über alle DB auf einem Server (https://www.delphipraxis.net/180802-recordcout-ueber-alle-db-auf-einem-server.html)

bernhard_LA 18. Jun 2014 16:36

Datenbank: MSSQL • Version: 2014 • Zugriff über: ADO/SQL

Recordcout über alle DB auf einem Server
 
auf einem MSSQL DB Server liegen x Datenbanken, die meisten haben eine Tabelle mit Namen 'Analysis'.
Kann ich mit einem SQL Statement den Recordcount aller Tabellen auf dem Server abfragen? Ich such die größte Tabelle 'Analysis'

mkinzler 18. Jun 2014 16:49

AW: Recordcout über alle DB auf einem Server
 
Es gibt direkt kein Befehl hierfür:

-Datenbanken ermitteln
-Tabellen pro datenbank ermitteln
-RecordCount ermitteln

p80286 18. Jun 2014 17:44

AW: Recordcout über alle DB auf einem Server
 
U.U hilft Dir ja das hier weiter

Gruß
K-H

jobo 18. Jun 2014 19:03

AW: Recordcout über alle DB auf einem Server
 
Es gibt 2 Wege:
der Reihe nach connecten und clientseitig das Dictionary abfragen (Siehe Links von p80286, Statistic Tabellen- wenn's nicht ganz genau sein muss) oder select count(*) from [tabelle]
oder
bei verlinkten DB
zentrale DB connecten und alle DB in einem Statement abfragen.

Dejan Vu 19. Jun 2014 07:46

AW: Recordcout über alle DB auf einem Server
 
Wenn die Datenbanken auf einem Server sind, dann versuch doch mal das hier

SQL-Code:
declare @TableName varchar(80) = 'Analysis'
declare @dbName varchar(80)
declare x cursor for select name from sysdatabases
open x

declare @sql varchar(255)
declare @sqlcmd varchar (255)
set @sqlcmd = 'if exists(select 1 from [$1].sys.tables where name = ''$2'') '
set @sqlcmd=@sqlcmd + 'exec(''select ''''$1'''' as [Database], count(*) as Cnt from [$1]..[$2]'')'
declare @result int
fetch next from x into @dbname

while (@@FETCH_STATUS=0) begin
  set @sql = replace (@sqlcmd,'$1',@dbname)
  set @sql = replace (@sql  ,'$2',@TableName)
  exec( @sql)
  fetch next from x into @dbname
end
close x
deallocate x


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz