Newsgroup: it.comp.lang.visual-basic
Titolo: [OT] visual basic, sql server e rows count....

Debbo recuperare il numero di righe di tutte le tabelle di un database "sql
server", naturalmente potrei fare N (con N molto grande) "select count", ma
ho notato che visualizzando le proprietà di una tabella da "enterprise
manager", tra le altre c'è proprio il numero di righe...
Essendo tali proprietà visualizzate pressoché istantaneamente, anche per
tabelle di grosse dimensioni, ho pensato che l'informazione potesse essere
memorizzata in una qualche tabella di sistema. Purtroppo non sono riuscito a
trovare tale tabella.
Anche se il "rows count" non fosse memorizzato, la velocità dell'operazione
mi porta ad escludere che "Enterprise Manager" faccia una "select count".
In sostanza: esiste un modo + veloce per eseguire tale operazione ?
Se si per favore aiutatemi...
Ringrazio anticipatamente chiunque sarà così gentile da aiutarmi.

 wrote in message
news:91on4u$doe$1...@serv1.albacom.net...

puoi guardare sulla guida in linea di Sql Server
al capitolo "Building Sql Server Applications", paragrafo "SQL-DMO"
c'e' la possibilità di accedere a tutti gli oggetti di sql Server, tra i
quali anche
l'oggetto Table che ha la proprietà Rows...
di + ninso... sono andato a cercarlo dopo aver letto il tuo post
Ciao
Enrico

 ha scritto nel messaggio
news:91on4u$doe$1...@serv1.albacom.net...



WHERE name = 'NomeTabella' -- Perche' sprecare una like quando basta un = ?
:)
Ciaotutti e buone feste,
Alessandro


 ha scritto nel messaggio
news:91q119$75je$1...@stargate1.inet.it...


...


 wrote in message
91on4u$doe$1...@serv1.albacom.net...

Non è farina del mio sacco...
http://www.swynk.com/friends/sharma/countrecords.asp
There are a number of ways we can count the number of records in the tables
in a database.
Method 1: The results of this sql depends upon whether the statistics have
been kept up-to-date with the passage of time since it uses the sysindexes
table to get the total count of records.
T-SQL:
select  substring(
o.name
, 1, 30) Table_Name ,i.rows  Number_of_Rows
from  sysobjects o
inner join sysindexes i
on (
o.id
 = 
i.id
)
where  o.xtype = 'u'
and i.indid < 2
order by 
o.name
The xtype = 'u' is for selecting the tables and indid < 2 makes sure that we
are selecting all the tables, the ones which have indexes and also the ones
which do not have indexes on them.
Method 2: This sql can also be used to count the number of records in the
tables in a database. It uses the count aggregate function to do so.
Selecting the tablename and putting quotes around them is important to take
care of the spaces in the names of the tables if any.
T-SQL:
SET NOCOUNT ON
   DECLARE tables_cursor CURSOR
      FOR
      SELECT name FROM sysobjects WHERE type = 'U' order by 1
   OPEN tables_cursor
   DECLARE @tablename varchar(50)
   FETCH NEXT FROM tables_cursor INTO @tablename
   WHILE (@@fetch_status <> -1)
   BEGIN
   select @tablename = quotename(@tablename, '[]')
 DECLARE @CMD VARCHAR(100)
 PRINT @TABLENAME
 SELECT @CMD = ' select count(*) from  '+@tablename+' '
 EXEC (@CMD)
      FETCH NEXT FROM tables_cursor INTO @tablename
   END
   DEALLOCATE tables_cursor
   SET NOCOUNT OFF
Method 3: We can also use the undocumented stored proc sp_Msforeachtable to
achieve the goal. Sp_MSforeachtable scans through all the tables in a
certain database and performs a command on those tables. You use "?" as a
placeholder to represent the table name.
T-SQL:
sp_msforeachtable @command1= 'print ''?''', @command2 = "select count(*)
from ?"