2012年5月25日 星期五

如何找出所有資料庫裡面所有資料表的筆數(SQL Server)


下面這段是網路上抄來的,的確是很好用,有時候是會派上用場的
來源 : http://www.dotblogs.com.tw/lolota/archive/2009/10/13/11041.aspx

做了一點點修改,可以清楚表示 dbname

DECLARE @SQL nvarchar(2000)
DECLARE @DBName nvarchar(200)
DECLARE @name VARCHAR(150) -- database name
use master
SET NOCOUNT ON



DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name

WHILE @@FETCH_STATUS = 0

BEGIN
PRINT 'Database Name  :   ' + @NAME
PRINT '--------------------------------'  

SET @DBName= @name
SET @SQL = 'USE ' + @DBName + char(13)
+ N'select   ''' + @DBName + ''' as DBName , substring(obj.name, 1, 50) as Table_Name,ind.rows as Number_of_Rows from sysobjects as obj inner join sysindexes as ind on obj.id = ind.id where ind.indid < 2 and obj.xtype like ''U'' order by obj.name';

EXEC sp_sqlexec @SQL
      FETCH NEXT FROM db_cursor INTO @name
END

CLOSE db_cursor
DEALLOCATE db_cursor


另外 這些倒是還挺實用的↓


1.列出資料庫中所有資料表筆數
 use dbName
EXEC sp_MSforeachtable 'select ''?'' as 資料表名稱, Count(*) as 資料總筆數 from ?'

2.列出資料庫中所有資料表大小
use dbName
EXEC sp_MSforeachtable 'EXEC sp_spaceused ''?'''


3.重建資料庫中所有資料表索引
use dbName
EXEC sp_MSforeachtable 'print ''?'' DBCC DBREINDEX (''?'', '' '', 80)'


4.關閉資料庫中所有資料表 Trigger
use dbName
EXEC sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'


5.關閉資料庫中所有資料表 Constraint
use dbName
EXEC sp_MSforeachtable @command1="ALTER TABLE ? NOCHECK CONSTRAINT ALL"


6.回收資料庫中所有資料表可變長度空間
use dbName
EXEC sp_MSforeachtable 'DBCC CLEANTABLE(0,''?'') WITH NO_INFOMSGS; ';
7.更新資料庫中所有資料表統計值
use dbName
EXEC sp_MSforeachtable 'UPDATE statistics ? WITH ALL'


8.清空資料庫中所有資料表資料
use dbName
EXEC sp_MSforeachtable 'TRUNCATE TABLE ?'

9.刪除資料庫中所有資料表資料
use dbName
EXEC sp_MSforeachtable 'delete from ?'


10.刪除資料庫中所有資料表
use dbName
EXEC sp_MSforeachtable 'drop table ?'


沒有留言: