1.資料庫表資訊查詢視圖
--查找所有使用者表的資訊
IF object_id(N'dbo.TableInfo', 'V') IS NOT NULL
DROP VIEW dbo.TableInfo
GO
CREATE VIEW TableInfo AS
SELECT S.name AS [SCHEMA],O.name AS TABLENAME,C.name AS COLUMNNAME,T.name AS DATATYPE,C.max_length AS [LENGTH],C.is_nullable AS [ISNULL]
FROM sys.all_columns C
LEFT JOIN sys.all_objects O ON C.object_id=O.object_id
LEFT JOIN sys.systypes T ON C.system_type_id=T.xtype
LEFT JOIN sys.schemas S ON O.schema_id=S.schema_id
WHERE O.type='U'
GO
--SELECT * FROM dbo.tableInfo;
2. 表和資料庫周遊的系統存儲過程
sp_MSforeachtable--表周遊
@command1 nvarchar(2000), --第一條運作的SQL指令
@replacechar nchar(1) = N'?', --表占位符
@command2 nvarchar(2000)= null, --第二條運作的SQL指令
@whereand nvarchar(2000)= null, --可選條件來選擇表
@precommand nvarchar(2000)= null, --執行指令前的操作(類似控件的觸發前的操作)
@postcommand nvarchar(2000)= null --執行指令後的操作(類似控件的觸發後的操作)
sp_MSforeachdb--資料庫周遊
@command1 nvarchar(2000), --第一條運作的SQL指令
@replacechar nchar(1) = N'?', --資料庫占位符
@command2 nvarchar(2000)= null, --第二條運作的SQL指令
@precommand nvarchar(2000)= null, --執行指令前的操作(類似控件的觸發前的操作)
@postcommand nvarchar(2000)= null --執行指令後的操作(類似控件的觸發後的操作)
example:
EXEC sp_MSforeachtable @command1="print '?'"
EXEC sp_MSforeachdb @command1="print 'DBCC SHRINKDATABASE ('+'?'+',10)' "
3.OLE自動化存儲過程
sp_OACreate{progid|clsid,objecttoken OUTPUT[,context]} 建立一個OLE對象執行個體
sp_OADestory {objecttoken} 釋放一個先前建立的OLE對象所占的資源
sp_OAMethod {objecttoken,methodname[,returnvalue OUTPUT][[,@parametername=] parameter[OUTPUT][...n]]}調用一個OLE對象的方法
sp_OAGetProperty{objecttoken,properityname[,properityvalue OUTPUT]} 擷取OLE對象的指定屬性
sp_OASetProperty{objecttoken,properityname,newvalue} 設定OLE對象的指定屬性
sp_OAStop 停止伺服器範圍内的OLE自動化存儲過程執行環境
sp_OAGetErrorInfo{[objecttoken][,source OUTPUT][,description OUTPUT][,helpfile OUTPUT][,helpid OUTPUT]} 擷取出錯的錯誤資訊