>Lavoro con VB.NET 2003 e SQL2000.
>Avrei la necessità con una query di avere l'elenco delle tabelle
>presenti in un database.
>Da dove posso partire?
Ciao Paolo,
SQL Server 2000 offre la possibilità di leggere i metadati senza la necessità di accedere alle tabelle di sistema ricorrendo alle Information Schema Views.
Le Information Schema Views aderiscono allo standard ANSI SQL-92 e permettono alle applicazioni di funzionare correttamente anche nel caso in cui le tabelle di sistema subiscano notevoli modifiche (per esempio dovute all'installazione di un service pack).
Nel tuo caso puoi ricorrere alla Information Schema View TABLES:
USE Northwind;
GO
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
GO
/* Output:
TABLE_NAME
----------------------
Categories
CustomerCustomerDemo
CustomerDemographics
Customers
dtproperties
Employees
EmployeeTerritories
Order Details
Orders
Products
Region
Shippers
Suppliers
Territories
TestMoney
(15 row(s) affected)
*/
Nel caso tu volessi recuperare solo le tabelle definite dall'utente, puoi modificare la query nel seguente modo:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND OBJECTPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), N'IsUserTable') = 1
AND OBJECTPROPERTY(OBJECT_ID(TABLE_SCHEMA + '.' + TABLE_NAME), N'IsMSShipped') = 0;
GO
/* Output:
TABLE_NAME
----------------------
Categories
CustomerCustomerDemo
CustomerDemographics
Customers
Employees
EmployeeTerritories
Order Details
Orders
Products
Region
Shippers
Suppliers
Territories
TestMoney
(14 row(s) affected)
*/
Per maggiori dettagli consulta i Books Online:
"Information Schema Views"
http://msdn.microsoft.com/library/en-us/tsqlref/ts_ia-iz_4pbn.asp
"TABLES"
http://msdn.microsoft.com/library/en-us/tsqlref/ts_ia-iz_56lv.asp
>Ciao a tutti e grazie.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org