例28.1 查看數據庫所在機器操作系統參數(xp_msver)
查看數據庫所在機器操作系統參數的存儲過程如下
EXEC master..xp_msver
例28.2 查看當前數據庫服務器名(xp_getnetname、HOST_NAME())
EXEC master..xp_getnetname
或者:
SELECT HOST_NAME()
例28.3 查看服務器上所有Windows本地組(xp_enumgroups)
查看服務器上所有Windows本地組的存儲過程如下
EXEC master..xp_enumgroups
例28.4 查看服務器上安裝的所有代碼頁(xp_enumcodepages)
查看服務器上安裝的所有代碼頁的存儲過程如下
EXEC master..xp_enumcodepages
嘿嘿,是不是報沒開啓錯誤啊~~沒錯誤略過
先執行下面語句
USE master;
GO
EXEC sp_configure 'show advanced option', '1';
RECONFIGURE
EXEC sp_configure 'Web Assistant Procedures',1
RECONFIGURE
EXEC sp_configure
例28.5 查看指定目錄的所有下一級子目錄(xp_subdirs)
查看C:\WINDOWS\Drivers目錄所有下一級子目錄的存儲過程如下
EXEC [master].[dbo].[xp_subdirs] 'C:\WINDOWS\Drivers'
查看磁盤信息的存儲過程如下
EXEC [master].[dbo].[xp_availablemedia]
或者採用下列語句
EXEC master..xp_fixeddrives
請注意:其中,low free爲以字節爲單位的空閒空間,media type爲驅動器類型,軟驅爲1,硬盤爲2,CD-ROM爲8。
例28.8 查看硬盤文件信息(xp_dirtree)
查看C盤文件信息的存儲過程如下
EXEC master..xp_dirtree 'c:'
查看C盤深度爲1的文件信息的存儲過程如下
EXEC master..xp_dirtree 'c:',1
查看C盤深度爲1、是否爲的信息的存儲過程如下
EXEC master..xp_dirtree 'c:',1,1
查看“C:\WINDOWS\Web”目錄中的文件信息的存儲過程如下
EXEC master..xp_dirtree 'C:\WINDOWS\Web'
例28.9 查看服務器提供的OLEDB程序(xp_enum_oledb_providers)
查看服務器提供的OLEDB程序的存儲過程如下
EXEC master..xp_enum_oledb_providers
例28.10 查看數據庫服務名(@@SERVERNAME)
print 'SQL Server數據庫服務名: ' +
convert(varchar(30),@@SERVERNAME)
查看結果如下:
SQL Server數據庫服務名: SZX\SQLS2008
例28.11 查看數據庫實例名(@@SERVICENAME)
PRINT 'SQL Server數據庫實例名: ' +
convert(varchar(30),@@SERVICENAME)
查看結果如下:
SQL Server數據庫實例名: MSSQLSERVER
例28.12 查看DBMS數據庫的版本(@@version、sp_msgetversion)
查看DBMS版本的命令如下
SELECT @@version SQL_Server版本
或者
EXEC master..sp_msgetversion
例28.13 查看數據庫配置參數(sp_configure)
查看數據庫配置參數的存儲過程如下
EXEC sp_configure
例28.14 查看所有數據庫名稱、容量等信息(sp_helpdb、sp_databases)
sp_helpdb
或sp_databases
查看單個數據庫的容量:如sql92_exam_xjgl
sp_helpdb sql92_exam_xjgl
例28.15 查看所有數據庫名稱及大小(sp_helpdb)
查看所有數據庫名稱及大小的存儲過程如下
EXEC sp_helpdb
例28.16 修改數據庫的名稱(sp_renamedb)
EXEC sp_renamedb 'old_dbname', 'new_dbname'
例28.17 查看當前數據庫的啓動時間(sysprocesses)
SELECT convert(varchar(30),login_time,120)啓動時間
FROM master..sysprocesses
WHERE spid=1
例28.18 查看當前數據庫文件路徑等信息(sp_helpfile)
sp_helpfile
例28.19 查看AdventureWorks數據庫文件路徑(sysfiles)
SELECT ltrim(rtrim(filename))
FROM AdventureWorks..sysfiles
WHERE charindex('MDF',filename)>0
查看結果如下:
C:\Program Files\Microsoft SQL Server\100\Tools\Samples\
AdventureWorks_Data.mdf
例28.20 查看當前數據庫文件組名(sp_helpfilegroup)
sp_helpfilegroup
例28.21 查看當前數據庫中所有的存儲過程(sysobjects)
查看當前數據庫中所有存儲過程的命令如下
SELECT name as存儲過程名稱FROM sysobjects WHERE xtype='P'
例28.22 查看數據庫裏所有的存儲過程和函數(sp_stored_procedures)
查看某個數據庫裏所有存儲過程和函數的命令如下
use AdventureWorks
GO
EXEC sp_stored_procedures
例28.23 查看所有數據庫日誌文件大小(dbcc sqlperf())
查看所有數據庫日誌文件大小的命令如下
dbcc sqlperf(logspace)
例28.24 查看SQL Server錯誤日誌(xp_enumerrorlogs、xp_readerrorlog)
(1)查看SQL Server錯誤日誌信息
EXEC master..xp_enumerrorlogs
(2)查看當前錯誤日誌具體內容
EXEC [master].[dbo].[xp_readerrorlog]
例28.25 查看數據庫角色信息(sp_helpRole)
查看數據庫角色信息的存儲過程如下
EXEC sp_helpRole
例28.26 查看所有數據庫用戶所屬的角色信息(sp_helpsrvrolemember)
查看所有數據庫用戶所屬角色信息的存儲過程如下
EXEC sp_helpsrvrolemember
例28.27 查看角色成員用戶信息(sp_helpRoleMember)
查看角色成員用戶信息的存儲過程如下
EXEC sp_helpRoleMember 'db_owner'
例28.28 查看當前數據庫所有用戶信息(sp_helpUser)
查看數據庫用戶信息的存儲過程如下
EXEC sp_helplogins
例28.29 查看本地數據庫用戶登錄信息(sp_helplogins)
查看本地數據庫用戶登錄信息的存儲過程如下
EXEC sp_helplogins
例28.30 查看遠端數據庫用戶登錄信息(sp_helpremotelogin )
查看遠端數據庫用戶登錄信息的存儲過程如下
EXEC sp_helpremotelogin
例28.31 查看鏈接服務器的登錄信息(sp_helplinkedsrvlogin)
查看鏈接服務器信息的存儲過程如下
EXEC sp_helplinkedsrvlogin
例28.32 將用戶賬戶添加到數據庫中(sp_grantdbaccess)
將guest用戶賬戶添加到數據庫中的命令如下:
USE sql92_exam_xjgl
GO
EXEC sp_grantdbaccess guest
例28.33 查看數據庫下對象級用戶權限(sp_helprotect)
查看數據庫下對象級用戶權限的存儲過程如下
EXEC sp_helprotect
例28.34 獲得當前數據庫所有用戶表的名稱(sysobjects)
獲得當前數據庫所有用戶表名稱的命令如下
SELECT OBJECT_NAME (id)
FROM sysobjects
WHERE xtype = 'U' AND OBJECTPROPERTY (id, 'IsMSShipped') = 0
例28.36 查詢單個用戶創建的所有數據庫(sysdatabases)
查詢sa用戶創建的所有數據庫的命令如下
SELECT name,dbid,filename
FROM master..sysdatabases D
WHERE sid not in(SELECT sid FROM master..syslogins WHERE name='sa')
或者通過以下命令實現:
SELECT dbid, name AS DB_NAME,filename
FROM master..sysdatabases
WHERE sid <> 0x01
例28.37 查看一個表上相關的對象(sysobjects、syscomments)
查詢一個表上相關對象的命令如下
SELECT a.* FROM sysobjects a, syscomments b
WHERE a.id = b.id and b.text like '%teacher%'
例28.38 獲取某一個表的所有字段(syscolumns、sp_mshelpcolumns)
獲取某一個表的所有字段的命令如下
SELECT name FROM syscolumns WHERE id=object_id('teacher')
或者通過以下存儲過程實現
EXEC sp_mshelpcolumns 'teacher'
例28.39 獲得指定表上所有的索引名稱(sysindexes)
通過系統表sysindexes獲得指定表上所有索引名稱的命令如下
SELECT name FROM sysindexes
WHERE id = OBJECT_ID ('dept') AND indid > 0
例28.40 查詢某一個表的字段和數據類型(information_schema.columns)
查詢某一個表的字段和數據類型的命令如下
SELECT column_name,data_type
FROM information_schema.columns
WHERE table_name = N'teacher'
例28.41 獲取某一個表的基本信息(sp_MShelpcolumns)
獲取某一個表的基本信息的存儲過程如下
EXEC sp_MShelpcolumns N'teacher'
例28.42 獲取某一個表的主鍵、外鍵信息(sp_pkeys、sp_fkeys)
獲取表teacher的主鍵信息的存儲過程如下
EXEC sp_pkeys N'teacher'
獲取表teacher的外鍵信息的存儲過程如下:
EXEC sp_fkeys N'teacher'
例28.43 判斷某一個表是否存在某一字段(syscolumns)
通過系統表syscolumn判斷某一個表是否存在某一字段的命令如下:
if exists(SELECT 1 FROM syscolumns
WHERE id=object_id(N'teacher') and name=N'tname')
print N'存在'
else
print N'不存在'
例28.44 查看單個存儲過程和函數的源代碼(sp_helptext)
查看單個存儲過程和函數源代碼的存儲過程如下
USE AdventureWorks
GO
EXEC sp_helptext 'dbo.uspLogError'
例28.45 查看數據庫裏用戶和進程的信息(sp_who)
(1)查看數據庫裏用戶和進程信息
EXEC sp_who
其中,spid是進程編號,進程號1--50是SQL Server系統內部用的,進程號大於50的是用戶的連接進程。
(2)查看活動用戶和進程信息的存儲過程如下
EXEC sp_who 'active'
例28.46 清除sleeping進程(Kill__Sleeping_Processes)
Sleeping進程是系統中處於睡眠狀態尚未活動的進程,這部分進程可以殺掉。
CREATE PROCEDURE dbo.Kill__Sleeping_Processes @dbname varchar(50)
AS
BEGIN
SET NOCOUNT ON
DECLARE @spid INT,
@cnt INT,
@sql VARCHAR(255)
SELECT @spid = MIN(spid),@cnt = COUNT(*)
FROM master..sysprocesses
WHERE dbid = DB_ID(@dbname) AND spid != @@SPID AND status = 'sleeping'
WHILE @spid IS NOT NULL
BEGIN
SET @sql = 'KILL ' + RTRIM(@spid)
EXEC ( @sql )
SELECT @spid = MIN(spid),@cnt = COUNT(*)
FROM master..sysprocesses
WHERE dbid = DB_ID(@dbname) AND spid != @@SPID AND status = 'sleeping'
END
END
GO
運行改存儲過程後殺掉sleeping進程:
Kill__Sleeping_Processes SQLS2008
清除前後可以用EXEC sp_who 'active '進行查看。
例28.47 查看進程正在執行的SQL語句(dbcc inputbuffer ())
查看進程正在執行的SQL語句:dbcc inputbuffer (spid)
其中spid是用sp_who查詢出來的spid號,如:56。
查看56號進程正在執行的SQL語句實例如下
dbcc inputbuffer (56)
例28.48 查看數據庫鎖(sp_lock)
查看SQL Server數據庫裏鎖的情況的存儲過程如下
EXEC sp_lock
其中,spid是進程編號,dbid是數據庫編號,Objid是數據對象編號。
例28.49 查看數據庫死鎖的進程(proc_who_lock)
用proc_ find _lock過程查看數據庫死鎖的進程。
if exists (SELECT *
FROM dbo.sysobjects
WHERE id = object_id(N'[dbo].[proc_find_lock]')
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[proc_find_lock]
GO
use master
go
create procedure proc_find_lock
as
begin
declare @spid int,@bl int,
@intTransactionCountOnEntry int,
@intRowcount int,
@intCountProperties int,
@intCounter int
create table #temp_lock (
id int identity(1,1),
spid smallint,
bl smallint)
IF @@ERROR<>0 RETURN @@ERROR
insert into #temp_lock(spid,bl)
SELECT 0 ,blocked
FROM (SELECT * FROM sysprocesses WHERE blocked>0 ) a
WHERE not exists(SELECT *
FROM (SELECT *
FROM sysprocesses
WHERE blocked>0 ) b
WHERE a.blocked=spid)
union SELECT spid,blocked
FROM sysprocesses
WHERE blocked>0
IF @@ERROR<>0 RETURN @@ERROR
SELECT @intCountProperties = Count(*),@intCounter = 1 --找到臨時表的記錄數
FROM #temp_lock
IF @@ERROR<>0 RETURN @@ERROR
if @intCountProperties=0
SELECT '沒有阻塞和死鎖信息' as 提示
while @intCounter <= @intCountProperties
begin
SELECT @spid = spid,@bl = bl
FROM #temp_lock WHERE Id = @intCounter
begin
if @spid =0
SELECT '引起數據庫死鎖的進程號是: '+ CAST(@bl AS VARCHAR(10))
+ ',其執行的SQL語句爲:'
else
SELECT '進程號SPID:'+ CAST(@spid AS VARCHAR(10))
+ '被' + '進程號SPID:'+ CAST(@bl AS VARCHAR(10))
+'阻塞,其當前進程執行的SQL語句爲:'
DBCC INPUTBUFFER (@bl )
end
set @intCounter = @intCounter + 1
end
drop table #temp_lock
return 0
end
運行過程proc_find_lock
proc_find_lock
例28.50 備份當前數據庫(backup database)
(1)完全備份
declare @a sysname,@s nvarchar(4000)
SELECT @a=db_name(),@s='e:\sql_db_bak_full' backup database @a to disk=@s WITH format
已爲數據庫'sql92_exam_xjgl',文件'sql92_example'(位於文件1上)處理了240頁。
已爲數據庫'sql92_exam_xjgl',文件'sql92_example_log'(位於文件1上)處理了1頁。
BACKUP DATABASE成功處理了241頁,花費0.101秒(19.547 MB/秒)。
(2)差異備份
declare @a sysname,@s nvarchar(4000)
SELECT @a=db_name(),@s='e:\sql_db_bak_diff' backup database @a to disk=@s WITH DIFFERENTIAL,format
已爲數據庫'sql92_exam_xjgl',文件'sql92_example' (位於文件1上)處理了40頁。
已爲數據庫'sql92_exam_xjgl',文件'sql92_example_log' (位於文件1上)處理了1頁。
BACKUP DATABASE WITH DIFFERENTIAL成功處理了41頁,花費0.095秒(3.530 MB/秒)。
差異備份要在至少有一次完全備份成功之後才能實施,否則出錯。
例28.51 從磁帶中恢復完整的數據庫備份
從磁帶中恢復sql92_exam_xjgl的完整數據庫備份。
USE master
GO
RESTORE DATABASE sql92_exam_xjgl
FROM TAPE = '\\.\Tape0'
GO
例28.52 在脫機狀態下進行數據庫備份和恢復
在脫機狀態下對sql92_exam_xjgl數據庫進行備份和恢復。
步驟如下:
卸載需要進行備份恢復的sql92_exam_xjgl數據庫。
在master數據庫下新建下列查詢分析語句:
Sp_detach_db 'sql92_exam_xjgl'
運行結果爲:命令已成功完成。
複製sql92_exam_xjgl 庫的sql92_example.mdf文件和sql92_example_log.ldf文件到E:\下。
啓動數據庫服務器進行恢復。
sp_attach_db 'sql92_exam_xjgl',
'E:\sql92_example.mdf', 'E:\sql92_example_log.ldf'
運行結果爲:命令已成功完成。
當恢復單個mdf文件採用下列語句:
sp_attach_single_file_db 'sql92_exam_xjgl','E:\sql92_example.mdf''
DBA常用腳本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
真實的模擬***綜合實驗
wbzjacky
2019-02-24 13:12:37
三層交換機的HSRP、vlan、端口聚合
wbzjacky
2019-02-24 13:12:37
HSRP和二層交換機的端口聚合、vlan
wbzjacky
2019-02-24 13:12:37
如果同事暗中傷害你,應該怎麼辦?
這個饅頭有餡
2019-02-24 13:59:08
職場中,抱怨越多的員工,越被領導瞧不起!
這個饅頭有餡
2019-02-24 13:59:08
老程序員被裁,應屆生卻能月薪 1.3 萬?這你能忍?
前端高達
2019-02-24 13:48:04
遇到到處蹭吃卻從不請客吃飯的主怎麼辦?
樑軍年
2019-02-24 13:26:35
高標準機房綜合配線安裝
wbzjacky
2019-02-24 13:12:38
IPsec ***實驗
wbzjacky
2019-02-24 13:12:37
CISCO路由AAA的Easy ***
wbzjacky
2019-02-24 13:12:37
CISCO訪問控制列表 企業網絡管理的必殺技
wbzjacky
2019-02-24 13:12:37