-
--按姓氏筆畫排序:
-
SELECT * FROM TableName ORDER BY CustomerName COLLATE Chinese_PRC_Stroke_ci_as
-
--數據庫加密:
-
SELECT encrypt ( '原始密碼' )
-
SELECT pwdencrypt ( '原始密碼' )
-
SELECT pwdcompare ( '原始密碼' , '加密后密碼' ) = 1 --相同;否則不相同 encrypt('原始密碼')
-
SELECT pwdencrypt ( '原始密碼' )
-
SELECT pwdcompare ( '原始密碼' , '加密后密碼' ) = 1 --相同;否則不相同
-
--取回表中字段:
-
DECLARE @list VARCHAR ( 1000 ) ,@ SQL NVARCHAR ( 1000 )
-
SELECT @list = @list + ',' + b. name FROM sysobjects a,syscolumns b WHERE a. id = b. id and a. name = '表A'
-
SET @ SQL = 'select ' + RIGHT ( @list, LEN ( @list ) - 1 ) + ' from 表A'
-
EXEC ( @ SQL )
-
--查看硬盤分區:
-
EXEC master.. xp_fixeddrives
-
--比較A,B表是否相等:
-
IF ( SELECT CHECKSUM_AGG ( BINARY_CHECKSUM ( * ) ) FROM A )
-
=
-
( SELECT CHECKSUM_AGG ( BINARY_CHECKSUM ( * ) ) FROM B )
-
PRINT '相等'
-
ELSE
-
PRINT '不相等'
-
--殺掉所有的事件探察器進程:
-
DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill ' + RTRIM ( spid ) FROM master. dbo . sysprocesses
-
WHERE program_name IN ( 'SQL profiler' ,N 'SQL 事件探查器' )
-
EXEC sp_msforeach_worker '?'
-
--記錄搜索:
-
開頭到N條記錄
-
SELECT TOP N * FROM 表
-
-------------------------------
-
N到M條記錄 ( 要有主索引ID )
-
SELECT TOP M - N * FROM 表 WHERE ID in ( SELECT TOP M ID FROM 表 ) ORDER BY ID DESC
-
----------------------------------
-
N到結尾記錄
-
SELECT TOP N * FROM 表 ORDER BY ID DESC
-
--如何修改數據庫的名稱:
-
SP_RENAMEDB 'old_name' , 'new_name'
-
--獲取當前數據庫中的所有用戶表
-
SELECT Name FROM sysobjects WHERE xtype = 'u' and status >= 0
-
--獲取某一個表的所有字段
-
SELECT name FROM syscolumns WHERE id = OBJECT_ID ( '表名' )
-
--查看與某一個表相關的視圖、存儲過程、函數
-
SELECT a. * FROM sysobjects a, syscomments b WHERE a. id = b. id and b. TEXT like '%表名%'
-
--查看當前數據庫中所有存儲過程
-
SELECT name AS 存儲過程名稱 FROM sysobjects WHERE xtype = 'P'
-
--查詢用戶創建的所有數據庫
-
SELECT * FROM master.. sysdatabases D WHERE sid not in ( SELECT sid FROM master.. syslogins WHERE name = 'sa' )
-
或者
-
SELECT dbid, name AS DB_NAME FROM master.. sysdatabases WHERE sid <> 0x01
-
--查詢某一個表的字段和數據類型
-
SELECT column_name,data_type FROM information_schema. columns
-
WHERE table_name = '表名'
-
[ n ] . [ 標題 ] :
-
SELECT * FROM TableName ORDER BY CustomerName
-
[ n ] . [ 標題 ] :
-
SELECT * FROM TableName ORDER BY CustomerName
-
--查看數據庫的版本
-
SELECT @@VERSION
-
--查看數據庫所在機器操作系統參數
-
EXEC master.. XP_MSVER
-
--查看數據庫啟動的參數
-
SP_CONFIGURE
-
--查看數據庫啟動時間
-
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 )
-
--查看所有數據庫名稱及大小
-
SP_HELPDB
-
重命名數據庫用的 SQL
-
SP_RENAMEDB 'old_dbname' , 'new_dbname'
-
--查看所有數據庫用戶登錄信息
-
SP_HELPLOGINS
-
查看所有數據庫用戶所屬的角色信息
-
SP_HELPSRVROLEMEMBER
-
修復遷移服務器時孤立用戶時,可以用的fix_orphan_user腳本或者LoneUser過程
-
更改某個數據對象的用戶屬主
-
SP_CHANGEOBJECTOWNER [ @objectname = ] 'object' , [ @newowner = ] 'owner'
-
注意: 更改對象名的任一部分都可能破壞腳本和存儲過程。
-
把一臺服務器上的數據庫用戶登錄信息備份出來可以用add_login_to_aserver腳本
---------------------------------------------------------------
- --查看鏈接服務器
-
SP_HELPLINKEDSRVLOGIN
-
查看遠端數據庫用戶登錄信息
-
SP_HELPREMOTELOGIN
-
--查看某數據庫下某個數據對象的大小
-
SP_SPACEUSED @objname
-
還可以用sp_toptables過程看最大的N ( 默認為 50 ) 個表
-
查看某數據庫下某個數據對象的索引信息
-
SP_HELPINDEX @objname
-
還可以用SP_NChelpindex過程查看更詳細的索引情況
-
SP_NChelpindex @objname
-
CLUSTERED 索引是把記錄按物理順序排列的,索引占的空間比較少。
-
對鍵值DML操作十分頻繁的表我建議用非 CLUSTERED 索引和約束, FILLFACTOR 參數都用默認值。
-
查看某數據庫下某個數據對象的的約束信息
-
SP_HELPCONSTRAINT @objname
-
--查看數據庫里所有的存儲過程和函數
-
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過程
-
--查看數據庫里用戶和進程的信息
-
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
-
--收縮數據庫日志文件的方法
-
收縮簡單恢復模式數據庫日志,收縮后@database_name_log的大小單位為M
-
BACKUP LOG @database_name WITH no_log
-
DBCC shrinkfile ( @database_name_log, 5 )
-
--分析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 }
-
--出現不一致錯誤時,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 包括對行和頁進行分配和取消分配以改正分配錯誤、結構行或頁的錯誤,
-
以及刪除已損壞的文本對象,這些修復可能會導致一些數據丟失。
-
修復操作可以在用戶事務下完成以允許用戶回滾所做的更改。
-
如果回滾修復,則數據庫仍會含有錯誤,應該從備份進行恢復。
-
如果由于所提供修復等級的緣故遺漏某個錯誤的修復,則將遺漏任何取決于該修復的修復。
-
修復完成后,請備份數據庫。
-
repair_fast 進行小的、不耗時的修復操作,如修復非聚集索引中的附加鍵。
-
這些修復可以很快完成,并且不會有丟失數據的危險。
-
repair_rebuild 執行由 repair_fast 完成的所有修復,包括需要較長時間的修復(如重建索引)。
-
執行這些修復時不會有丟失數據的危險。
/*
getdate()?獲取當前時間,
datename(datepart,date)??返回datepart指定字符串格式的時間
datepart(datepart,date)??返回datepart指定字整形格式的時間
*/
select ? getdate (),? datename (mm, getdate ()),? datepart (mm, getdate ())
/* isdate(str)?為真返回1?為假則為0?? */
select ? isdate ( ' 2009/1/02 ' )
select ? ceiling ( 12.3 )? -- 取最大整數
select ? floor ( 12.3 )??? -- 取最小整數
select ? len ( getdate ())? -- 獲取字符串長度
select ? left ( ' abcdef ' , 4 ), right ( 123456 , 4 )? -- left?獲取字符串從左開始的指定長度
???????? -- ---right?獲取字符串從右邊開始的指定長度
select ? substring ( ' abcdefghijklmn ' ?, 2 ?, 6 )?? -- bcdefg?獲取指定起點跟終點的長度
select ? replicate ( ' wk ' , 3 )? -- 按照指定次數復制字符串
select ? ltrim (? ' ???123 ' )?,? rtrim ( ' add???? ' )? -- 取出字符串左,右空格
select ? reverse ( ' abcde ' )?? -- edcba?獲取一個反序的字符串
-- ------------****數據庫時間格式****----------------
select ? dateadd ( year , 2 , ' 2004-10-17 ' )? -- 加兩年
select ? datediff ( day , ' 2006-10-10 ' , ' 2006-12-18 ' )? -- ?判斷天差
?
? ? ?分類拼接字符串
-- -1、 建立臨時表-- SELECT * INTO temp_CombineBuying FROM ( SELECT b.ProviderTypeShortName,a.ProviderGUID,b.ProviderTypeCode FROM p_provider2Type a INNER JOIN p_ProviderType b ON a.ProviderTypeCode = b.ProviderTypeCode) t -- --- 2、拼接字符串 --- SELECT ProviderGUID, stuff ( ( select ' , ' + convert ( varchar ( 25 ), ProviderTypeShortName) from temp_CombineBuying as t2 WHERE t2.ProviderGUID = t1.ProviderGUID FOR XML PATH( '' )), 1 , 1 , '' ) as ProviderTypeNameList INTO p_ProviderTypeNameList FROM temp_CombineBuying AS t1 GROUP BY ProviderGUID -- --- 3、清除臨時表 DROP TABLE temp_CombineBuying; DROP TABLE p_ProviderTypeNameList;
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
