SQL Server 數據庫部分經常使用語句小結(四)

42.統計APP應用的DB鏈接及IP狀況sql

select b.hostname ,a.client_net_address, b.program_name ,count(1) as Qty
from sys.dm_exec_connections a(nolock) inner join sys.sysprocesses b(nolock)
on a.session_id=b.spid
where   b.spid>50
--and a.client_net_address like'XXX.XXX.XXX.%'--限定某一類IP
group by b.hostname,a.client_net_address,b.program_name
order by 4 desc數據庫

43.查看及收縮數據庫logwindows

--查看日誌大小
select DB_NAME(database_id),name,size/128
from sys.master_files
where type_desc='LOG' and size/128>1000
order by size desc
 --拼收縮腳本
select  'use '+DB_NAME(database_id)+char(10)+'GO'+char(10)+'DBCC SHRINKFILE (N'''+name+''', 0, TRUNCATEONLY)'+CHAR(10)+'GO'
from sys.master_files
where type_desc='LOG' and size/128>1000
order by size desc緩存

44.權限受權,例如將某表的select 權限授予指定用戶安全

use [DB]
GO
GRANT SELECT ON [表] TO [用戶]
GOsession

45.查看如今正在SQL Server執行的命令ide

首先查看sysprocesses系統表的數據(存放有關在 Microsoft SQL Server 實例中運行的進程的信息,這些進程能夠是客戶端進程或系統進程)。sqlserver

查詢示例:
select * from master..sysprocessesui

在等到全部執行命令的進程ID了,若是要查看該進程的具體的SQL語句,能夠利用如下語句查看:
dbcc inputbuffer(進程號)
例如:
dbcc inputbuffer(56)this

46.將數據庫設置爲單用戶模式

EXEC sp_dboption '數據庫名字', 'Single User', 'TRUE'
EXEC sp_renamedb '數據庫名字', '更新後的數據庫名字'
EXEC sp_dboption '更新後的數據庫名字', 'Single User', 'FALSE'

47.查看SQL Server當前正在執行的查詢語句

select   db_name(r.database_id) as db_name
        ,s.group_id
        ,r.session_id
        ,r.blocking_session_id as blocking
        ,s.login_name
        ,r.wait_type as current_wait_type
        ,r.wait_resource
        ,r.last_wait_type
        ,r.wait_time/1000 as wait_s
        ,r.status as request_status
        ,r.command
        ,r.cpu_time
        ,r.reads
        ,r.writes
        ,r.logical_reads
        ,r.total_elapsed_time
        ,r.start_time
        ,s.status as session_status
        ,substring( st.text, 
                    r.statement_start_offset/2+1,
                    ( case when r.statement_end_offset = -1 
                                then len(convert(nvarchar(max), st.text))                           else (r.statement_end_offset - r.statement_start_offset)/2
                      end 
                    )
                ) as individual_queryfrom sys.dm_exec_requests rinner join sys.dm_exec_sessions s 
    on r.session_id=s.session_idouter APPLY sys.dm_exec_sql_text(r.sql_handle) as stwhere ((r.wait_type<>'MISCELLANEOUS' and r.wait_type <> 'DISPATCHER_QUEUE_SEMAPHORE' ) or r.wait_type is null)    and r.session_id>50
    and r.session_id<>@@spidorder by r.session_id asc

 

48.導出全部Job的建立腳本

step1 .在Microsoft SQL Server Management Studio中,選擇SQL Server Agent->Jobs,按F7打開Object Explorer Details窗口,選中全部Job;

Step2.點擊鼠標右鍵,選擇Script Job as->CREATE To->New Query Editor Windows,而後全部Job會以SQL腳本的方式顯示在查詢窗口中。

 

49 安裝SQL Server實例過程報錯

 錯誤信息

TITLE: Microsoft SQL Server 2008 R2 Setup------------------------------The following error has occurred:

The process does not possess the 'SeSecurityPrivilege' privilege which is required for this operation.

Click 'Retry' to retry the failed action, or click 'Cancel' to cancel this action and continue setup.

For help, click: http://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft+SQL+Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=10.50.1600.1&EvtType=0x88792597%25400xD69AB41D------------------------------BUTTONS:&Retry
Cancel------------------------------

緣由

此行爲是設計使然。 除了添加以本地管理員身份運行安裝程序的用戶賬戶以外,安裝用戶賬戶還須要如下默認用戶權限才能成功完成安裝程序。

本地策略對象顯示名稱 用戶權限
管理審覈和安全日誌 SeSecurityPrivilege

解決方案:

  1. 以具備管理憑據的用戶身份登陸到計算機。
  2. 單擊 " 開始",單擊 " 運行",鍵入 Control Admintools,而後單擊 "肯定"。
  3. 雙擊 " 本地安全策略"。
  4. 在 " 本地安全設置 " 對話框中,單擊 " 本地策略",雙擊 " 用戶權限分配",而後雙擊 " 管理審覈和安全日誌"。
  5. 在 " 管理審覈和安全日誌 " 對話框中,單擊 " 添加用戶或組"。
  6. 在 " 選擇用戶或組 " 對話框中,鍵入用於安裝程序的用戶賬戶,而後單擊 "肯定" 兩次。
  7. 單擊 " 退出 " 以關閉 " 本地安全設置 " 對話框。

此問題的詳細資料可參照如下網址:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/1960bc81-d48e-462f-933a-c51cd9f94651/install-sql-server-2008-rtm-on-windows-server-2008-r2-cluster?forum=sqlsetupandupgrade

https://docs.microsoft.com/zh-cn/troubleshoot/sql/install/installation-fails-if-remove-user-right

 

在安裝SQL Server 2016時,會提早檢查,例如檢查不經過,報錯以下,處理方法同樣的

 修改後,須要重啓電腦才能生效

 

50.經過scripts管理複製訂閱的表(增長/刪除)

--查看複製訂閱屬性select * from distribution..MSdistribution_agents--添加複製分發對象exec configdb.dbo.uxpm_repl_addarticle @publisher_db ='XXXXDB',@publication ='????',@article ='表名'--刪除複製分發對象exec configdb.dbo.uxpm_repl_droparticle @publisher_db ='XXXXDB',@publication ='????',@article ='表名'--啓動快照,初始化數據select 'EXEC msdb.dbo.sp_start_job '''+name+''''from msdb..sysjobswhere name like '%????%'------publication的名字and category_id=15

 51.SQL Server 密碼策略調整

咱們知道SQL Server 帳號的密碼策略(複雜度和生命期等)是基於Windows的,那麼怎麼查看和修改呢?相信有些同窗還不是很清楚。

其實,策略以下:

 

 複雜度策略

 

 lockout策略(重試拒絕策略)

 

52 刷新表的統計信息

update statistics  表名

更新統計信息時,會對錶加只讀鎖,因此會阻塞對錶的修改操做。sql server會按照必定的百分比,掃描表中的數據,更新統計信息,而不會掃描整個表的全部數據。因爲掃描數據的百分比很小,這個鎖定過程持續的時間會很短,因此影響不大。另外,更新統計信息後,會致使相關表的執行計劃無效,以前編譯緩存的存儲過程若是再次執行,會被從新編譯。

相關文章
相關標籤/搜索