用友u9一些常用sql分享

--查看指定spid正在執行的SQL
select top 1 total_elapsed_time,substring(text,(statement_start_offset+2)/2, (case when statement_end_offset = -1   then (len(convert(nvarchar(MAX),text))*2)  else statement_end_offset  end - statement_start_offset) /2  ),a.* from sys.dm_exec_requests a cross apply sys.dm_exec_sql_text(sql_handle)
where a.session_id=78


--鎖定與被鎖定間的鏈狀關係 
select t1.resource_type as [資源鎖定類型]
    ,db_name(resource_database_id) as [數據庫名]
    ,t1.resource_associated_entity_id as [鎖定的對象]
    ,t1.request_mode as [等待者需求的鎖定類型]
    ,t1.request_session_id as [等待者sid]  
    ,t2.wait_duration_ms as [等待時間]   
    ,(select text from sys.dm_exec_requests as r  
       cross apply sys.dm_exec_sql_text(r.sql_handle) 
       where r.session_id = t1.request_session_id) as [等待者要執行的批次]
    ,(select substring(qt.text,r.statement_start_offset/2+1, 
           (case when r.statement_end_offset = -1 
           then datalength(qt.text) 
           else r.statement_end_offset end - r.statement_start_offset)/2+1) 
       from sys.dm_exec_requests as r
       cross apply sys.dm_exec_sql_text(r.sql_handle) as qt
       where r.session_id = t1.request_session_id) as [等待者正要執行的語法]
    ,t2.blocking_session_id as [鎖定者sid] 
     ,(select text from sys.sysprocesses as p     
       cross apply sys.dm_exec_sql_text(p.sql_handle) 
       where p.spid = t2.blocking_session_id) as [鎖定者的語法]
    from 
    sys.dm_tran_locks as t1, 
    sys.dm_os_waiting_tasks as t2
where 
t1.lock_owner_address = t2.resource_address


註冊使用U9的CLR函數
--直接執行
EXEC sp_configure 'clr enabled', 1
RECONFIGURE WITH OVERRIDE
GO


--將yourdatabasename替換
/****/
Alter Database yourdatabasename SET TRUSTWORTHY ON   
go
use yourdatabasename
go
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
go
/****/


 


關於數據庫日誌文件大小的問題說明


DBCC SQLPERF (LOGSPACE)
GO


SELECT NAME,recovery_model_desc,log_reuse_wait,log_reuse_wait_desc
  FROM sys.databases


--收縮數據庫
DBCC SHRINKDATABASE(庫名)


清空日誌
 DUMP TRANSACTION 庫名 WITH NO_LOG  


--查看portal的操作信息日誌
select top 100 *
from UBF_Portal_OperationRecord o where o.OccurrenceTime >'2011-11-29 16:25:00.000'
and o.OccurrenceTime <'2011-11-29 16:30:00.000'




--列出使用cpu最多的前50名sql
SELECT q.[text],q.dbid,q.objectid,q.number,q.encrypted,highest_cpu_queries.*
FROM 
(SELECT TOP 50 qs.* FROM sys.dm_exec_query_stats qs ORDER BY qs.total_worker_time DESC)  AS highest_cpu_queries CROSS APPLY sys.dm_exec_sql_text(plan_handle)  AS q ORDER BY highest_cpu_queries.total_worker_time DESC


--列出最經常編譯的存儲過程
SELECT TOP 25 sql_text.[text],sql_handle,plan_generation_num,execution_count,dbid,objectid
FROM sys.dm_exec_query_stats a 
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sql_text 
WHERE plan_generation_num>1 ORDER BY plan_generation_num DESC




--查看索引的統計更新
dbcc show_statistics(PM_RcvLine,UFIDA_U9_PM_Rcv_RcvLine_BusinessKey_Index)
--重建索引
alter index UFIDA_U9_PM_Rcv_RcvLine_BusinessKey_Index on PM_RcvLine rebuild
--手工更新統計更新
update statistics PM_RcvLine




--查看錶的某個索引的索引字段和包涵索引字段
SELECT c.name index_name,ic.is_included_column
  FROM sys.index_columns ic INNER JOIN sys.indexes i ON ic.[object_id]=i.[object_id] AND ic.index_id=i.index_id INNER JOIN 
sys.tables t ON i.[object_id]=t.[object_id] INNER JOIN sys.[columns] c ON ic.[object_id]=c.[object_id] AND ic.column_id=c.column_id 
WHERE t.name='zhanggang' AND i.name='bbb'


----查表碎片,Base_UOM只有一個clusted索引。碎片率
SELECT 
OBJECT_NAME(a.[object_id]) AS [TableName],
a.index_id,
NAME [indexname],
avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,NULL) AS a
JOIN sys.indexes AS b ON a.[object_id]=b.[object_id] AND a.index_id=b.index_id AND OBJECT_NAME(a.[object_id]) IN 
 ('CBO_ItemMaster','Base_UOM') ORDER BY a.avg_fragmentation_in_percent DESC




用友U9一些常識
--根據表名查找相關實體信息
SELECT   a.[FullName], a.[Name],  b.[DisplayName] ,  
a.[ClassType], a.[ID]  FROM [UBF_MD_Class] 
as a  left join UBF_MD_Class_trl as b  on a.Local_ID=b.Local_ID 
 where 1=1  and  ClassType in('1','2','3' )  and 
  ( b.sysmlflag='zh-CN' or b.sysmlflag is null ) 
   and a.Name like 'PMStatistics%' or   b.DisplayName 
   like 'PMStatistics%' order by [Name]
go
--改進版:
DECLARE @name NVARCHAR(64)
DECLARE @sql NVARCHAR(800)
SET @name='InvToGL'
SET @sql = 'SELECT   a.[FullName], a.[Name],  b.[DisplayName] ,  
a.[ClassType], a.[ID]  FROM [UBF_MD_Class] 
as a  left join UBF_MD_Class_trl as b  on a.Local_ID=b.Local_ID 
 where 1=1  and  ClassType in(''1'',''2'',''3'' )  and 
  ( b.sysmlflag=''zh-CN'' or b.sysmlflag is null ) 
   and a.Name like ''%'+@name+'%'' or   b.DisplayName 
   like  ''%'+@name+'%'' order by [Name] '
 EXEC (@sql)


--查一個表有多少字段
SELECT a.* FROM syscolumns a,sysobjects s WHERE a.id=s.id AND s.[name]='table'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章