sql語句

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腳本

查看某數據庫下,對象級用戶權限

sp_helprotect


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的數據對象名稱


select distinct object_name(id) from syscomments where text like '%@str%'


創建加密的存儲過程或函數在AS前面加WITH ENCRYPTION參數


解密加密過的存儲過程和函數可以用sp_decrypt過程



10.查看數據庫裏用戶和進程的信息

sp_who

查看SQL Server數據庫裏的活動用戶和進程的信息

sp_who 'active'

查看SQL Server數據庫裏的鎖的情況

sp_lock

進程號1--50是SQL Server系統內部用的,進程號大於50的纔是用戶的連接進程.

spid是進程編號,dbid是數據庫編號,objid是數據對象編號

查看進程正在執行的SQL語句

dbcc inputbuffer ()

推薦大家用經過改進後的sp_who3過程可以直接看到進程運行的SQL語句

sp_who3

檢查死鎖用sp_who_lock過程

sp_who_lock

11.查看和收縮數據庫日誌文件的方法

查看所有數據庫日誌文件大小

dbcc sqlperf(logspace)

如果某些日誌文件較大,收縮簡單恢復模式數據庫日誌,收縮後@database_name_log的大小單位爲M

backup log @database_name with no_log

dbcc shrinkfile (@database_name_log, 5)


12.分析SQL Server SQL 語句的方法:

set statistics time {on | off}

set statistics io {on | off}

圖形方式顯示查詢執行計劃

在查詢分析器->查詢->顯示估計的評估計劃(D)-Ctrl-L 或者點擊工具欄裏的圖形

文本方式顯示查詢執行計劃

set showplan_all {on | off}

set showplan_text { on | off }

set statistics profile { on | off }


13.出現不一致錯誤時,NT事件查看器裏出3624號錯誤,修復數據庫的方法
先註釋掉應用程序裏引用的出現不一致性錯誤的表,然後在備份或其它機器上先恢復然後做修復操作

alter database [@error_database_name] set single_user

修復出現不一致錯誤的表

dbcc checktable('@error_table_name',repair_allow_data_loss)

或者可惜選擇修復出現不一致錯誤的小型數據庫名

dbcc checkdb('@error_database_name',repair_allow_data_loss)

alter database [@error_database_name] set multi_user

CHECKDB 有3個參數:

repair_allow_data_loss 包括對行和頁進行分配和取消分配以改正分配錯誤、結構行或頁的錯誤,以及刪除已損壞的文本對象,這些修復可能會導致一些數據丟失。

修復操作可以在用戶事務下完成以允許用戶回滾所做的更改。

如果回滾修復,則數據庫仍會含有錯誤,應該從備份進行恢復。

如果由於所提供修復等級的緣故遺漏某個錯誤的修復,則將遺漏任何取決於該修復的修復。

修復完成後,請備份數據庫。

repai*_**st 進行小的、不耗時的修復操作,如修復非聚集索引中的附加鍵。

這些修復可以很快完成,並且不會有丟失數據的危險。

repair_rebuild 執行由 repai*_**st 完成的所有修復,包括需要較長時間的修復(如重建索引)。

執行這些修復時不會有丟失數據的危險。




添加、刪除、修改使用db.Execute(Sql)命令執行操作
╔--------------------╗
☆ 數據記錄篩選 ☆
╚--------------------╝
注意:單雙引號的用法可能有誤(沒有測式)

Sql = "Select Distinct 字段名 From 數據表"
Distinct函數,查詢數據庫存表內不重複的記錄

Sql = "Select Count(*) From 數據表 where 字段名1>#18:0:0# and 字段名1< #19:00# "
count函數,查詢數庫表內有多少條記錄,“字段名1”是指同一字段
例:
set rs=conn.execute("select count(id) as idnum from news")
response.write rs("idnum")

sql="select * from 數據表 where 字段名 between 值1 and 值2"
Sql="select * from 數據表 where 字段名 between #2003-8-10# and #2003-8-12#"
在日期類數值爲2003-8-10 19:55:08 的字段裏查找2003-8-10至2003-8-12的所有記錄,而不管是幾點幾分。

select * from tb_name where datetime between #2003-8-10# and #2003-8-12#
字段裏面的數據格式爲:2003-8-10 19:55:08,通過sql查出2003-8-10至2003-8-12的所有紀錄,而不管是幾點幾分。

Sql="select * from 數據表 where 字段名=字段值 order by 字段名 [desc]"

Sql="select * from 數據表 where 字段名 like '%字段值%' order by 字段名 [desc]"
模糊查詢

Sql="select top 10 * from 數據表 where 字段名 order by 字段名 [desc]"
查找數據庫中前10記錄

Sql="select top n * form 數據表 order by newid()"
隨機取出數據庫中的若干條記錄的方法
top n,n就是要取出的記錄數

Sql="select * from 數據表 where 字段名 in ('值1','值2','值3')"

╔--------------------╗
☆ 添加數據記錄 ☆
╚--------------------╝
sql="insert into 數據表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"

sql="insert into 數據表 valuess (值1,值2,值3 …)"
不指定具體字段名錶示將按照數據表中字段的順序,依次添加

sql="insert into 目標數據表 select * from 源數據表"
把源數據表的記錄添加到目標數據表

╔--------------------╗
☆ 更新數據記錄 ☆
╚--------------------╝
Sql="update 數據表 set 字段名=字段值 where 條件表達式"

Sql="update 數據表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達式"

Sql="update 數據表 set 字段1=值1,字段2=值2 …… 字段n=值n "
沒有條件則更新整個數據表中的指定字段值

╔--------------------╗
☆ 刪除數據記錄 ☆
╚--------------------╝
Sql="delete from 數據表 where 條件表達式"

Sql="delete from 數據表"
沒有條件將刪除數據表中所有記錄)

╔--------------------------╗
☆ 數據記錄統計函數 ☆
╚--------------------------╝
AVG(字段名) 得出一個表格欄平均值
COUNT(*|字段名) 對數據行數的統計或對某一欄有值的數據行數統計
MAX(字段名) 取得一個表格欄最大的值
MIN(字段名) 取得一個表格欄最小的值
SUM(字段名) 把數據欄的值相加

引用以上函數的方法:
sql="select sum(字段名) as 別名 from 數據表 where 條件表達式"
set rs=conn.excute(sql)
用 rs("別名") 獲取統的計值,其它函數運用同上。

╔-----------------------------╗
☆ 數據表的建立和刪除 ☆
╚-----------------------------╝
CREATE TABLE 數據表名稱(字段1 類型1(長度),字段2 類型2(長度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 數據表名稱 (永久性刪除一個數據表)

╔--------------------------╗
☆ 記錄集對象的方法 ☆
╚--------------------------╝
rs.movenext 將記錄指針從當前的位置向下移一行
rs.moveprevious 將記錄指針從當前的位置向上移一行
rs.movefirst 將記錄指針移到數據表第一行
rs.movelast 將記錄指針移到數據表最後一行
rs.absoluteposition=N 將記錄指針移到數據表第N行
rs.absolutepage=N 將記錄指針移到第N頁的第一行
rs.pagesize=N 設置每頁爲N條記錄
rs.pagecount 根據 pagesize 的設置返回總頁數
rs.recordcount 返回記錄總數
rs.bof 返回記錄指針是否超出數據表首端,true表示是,false爲否
rs.eof 返回記錄指針是否超出數據表末端,true表示是,false爲否
rs.delete 刪除當前記錄,但記錄指針不會向下移動
rs.addnew 添加記錄到數據表末端
rs.update 更新數據表記錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章