程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> mssql裡sp_MSforeachtable和sp_MSforeachdb的用法

mssql裡sp_MSforeachtable和sp_MSforeachdb的用法

編輯:關於SqlServer
EXEC   sp_MSforeachtable   "EXECUTE   sp_spaceused   '?'"

mssql裡sp_MSforeachtable和sp_MSforeachdb的用法
從mssql6.5開始,微軟提供了兩個不公開,非常有用的系統存儲過程sp_MSforeachtable和sp_MSforeachdb,用於遍歷某個數據庫的每個表和遍歷DBMS管理下的每個數據庫。

mssql裡sp_MSforeachtable和sp_MSforeachdb的用法

我們在master數據庫裡執行下面的語句可以看到兩個proc詳細的代碼



use master

exec sp_helptext sp_MSforeachtable

exec sp_helptext sp_Msforeachdb

sp_MSforeachtable系統存儲過程有7個參數,解釋如下:



@command1 nvarchar(2000),  --第一條運行的T-SQL指令

@replacechar nchar(1) = N'?',   --指定的占位符號 

@command2 nvarchar(2000)= null,--第二條運行的T-SQL指令

@command3 nvarchar(2000)= null, --第三條運行的T-SQL指令

@whereand nvarchar(2000)= null, --可選條件來選擇表

@precommand nvarchar(2000)= null, --在表前執行的指令

@postcommand nvarchar(2000)= null --在表後執行的指令 

 mssql裡sp_MSforeachtable和sp_MSforeachdb的用法



--sp_MSforeachdb除了@whereand外,和sp_MSforeachtable的參數是一樣的。

--我們來看看sp_MSforeachtable的用法(sp_MSforeachdb的用法類似):

--統計數據庫裡每個表的詳細情況:

exec sp_MSforeachtable @command1="sp_spaceused '?'"

--查詢數據庫所有表的記錄總數
CREATE TABLE #temp (TableName VARCHAR (255), RowCnt INT)
EXEC sp_MSforeachtable 'INSERT INTO #temp SELECT ''?'', COUNT(*) FROM ?'
SELECT TableName, RowCnt FROM #temp ORDER BY TableName
DROP TABLE #temp
 
--檢查數據庫裡每個表或索引視圖的數據、索引及text、ntext 和image 頁的完整性

--下列語句需在單用戶模式下執行(sp_dboption 'db_name', 'single user', 'true'),將true改成false就又變成多用戶了

exec sp_msforeachtable "dbcc checktable('?',repair_rebuild)"; 

sql查詢所有用戶表的列表,詳細信息,如:記錄數,表占用大小等



EXEC   sp_MSforeachtable   "EXECUTE   sp_spaceused   '?'"

mssql裡sp_MSforeachtable和sp_MSforeachdb的用法
從mssql6.5開始,微軟提供了兩個不公開,非常有用的系統存儲過程sp_MSforeachtable和sp_MSforeachdb,用於遍歷某個數據庫的每個表和遍歷DBMS管理下的每個數據庫。

mssql裡sp_MSforeachtable和sp_MSforeachdb的用法

我們在master數據庫裡執行下面的語句可以看到兩個proc詳細的代碼



use master

exec sp_helptext sp_MSforeachtable

exec sp_helptext sp_Msforeachdb

sp_MSforeachtable系統存儲過程有7個參數,解釋如下:



@command1 nvarchar(2000),  --第一條運行的T-SQL指令

@replacechar nchar(1) = N'?',   --指定的占位符號 

@command2 nvarchar(2000)= null,--第二條運行的T-SQL指令

@command3 nvarchar(2000)= null, --第三條運行的T-SQL指令

@whereand nvarchar(2000)= null, --可選條件來選擇表

@precommand nvarchar(2000)= null, --在表前執行的指令

@postcommand nvarchar(2000)= null --在表後執行的指令 

 mssql裡sp_MSforeachtable和sp_MSforeachdb的用法



--sp_MSforeachdb除了@whereand外,和sp_MSforeachtable的參數是一樣的。

--我們來看看sp_MSforeachtable的用法(sp_MSforeachdb的用法類似):

--統計數據庫裡每個表的詳細情況:

exec sp_MSforeachtable @command1="sp_spaceused '?'"

--查詢數據庫所有表的記錄總數
CREATE TABLE #temp (TableName VARCHAR (255), RowCnt INT)
EXEC sp_MSforeachtable 'INSERT INTO #temp SELECT ''?'', COUNT(*) FROM ?'
SELECT TableName, RowCnt FROM #temp ORDER BY TableName
DROP TABLE #temp
 
--檢查數據庫裡每個表或索引視圖的數據、索引及text、ntext 和image 頁的完整性

--下列語句需在單用戶模式下執行(sp_dboption 'db_name', 'single user', 'true'),將true改成false就又變成多用戶了
exec sp_msforeachtable "dbcc checktable('?',repair_rebuild)" 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved