sql server 常用的擴展存儲過程


sql server 里面提供了豐富的系統存儲過程來輔助我們管理數據庫以及開發。今天分享介紹一些常用的數據庫擴展存儲過程

 

xp_cmdshell 

這個大家都比較熟悉了,使用xp_cmdshell 可以在連接sql server 的時候可以執行doc 命令

最簡單一個例子EXEC master.sys.xp_cmdshell 'dir D:\' 獲取D 盤下面的目錄。當然這個D:\ 是服務器上面的,不是本地電腦的。

所以有時候可以使用 xp_cmdshell 配合作業都角度使用執行bcp等命令來導入導出數據,也是很方便的。

但是使用的過程中,有下面幾點留意一下

1 首次使用的時候,需要使用 EXEC sys.sp_configure @configname = 'xp_cmdshell',@configvalue = 1 來啟用xp_cmdshell ,默認情況下,sql server 是禁用本功能的

2 可以使用 no_output 來忽略輸出結果。

3 注意權限問題,注意非管理員賬號的用戶使用xp_cmdshell 。

 

xp_logininfo

這個返回的是服務器windows 用戶和windows 組的信息

msdn上面寫着這個存儲過程具有3個參數 @acctname ,@option ,@privilege 

燃鵝不知道是我測試的問題還是本身這個存儲過程只有1個參數,@option 和 @privilege 傳入進去都是無效的。

使用方法

 EXEC master.sys.xp_logininfo

 或者 EXEC master.sys.xp_logininfo @acctname = 'GINLATOP\Gin' 加上個賬號名還是ok的

 

xp_msver

這個是返回服務器的版本消息。

調用方法可以使用 

EXEC master..xp_msver 

或者 EXEC master..xp_msver 'ProductName' --這個可以是上面的結果集返回的任意一個Name 的值,假如找不到,就會返回空結果集

 

xp_sprintf

這個擴展存儲過程看起來就有點像入門寫C語言的printf 函數了。燃鵝即時這樣,我認為其實用到它的機會並不多。大部分使用的場景如下

DECLARE @i VARCHAR(20) = 1,
@j varchar(50) = 'ajofen',
@s VARCHAR(80)

EXEC master..xp_sprintf @s OUTPUT,'there are two varaint one is %s and another is %s ',@i,@j
PRINT @s

坑爹的是,這個存儲過程的參數只支持字符型的……並且如果這樣搞的話,使用 +來拼接字符串也ok了,所以也只是介紹一下╮(╯_╰)╭

 

xp_sscanf

這個擴展存儲過程是對插入的字符串變量進行格式化取值。

DECLARE @i VARHAR(50) = 1,
@j varchar(50) ,
@s VARCHAR(80)

EXEC master..xp_sscanf '3 + 31 = 34','%s + %s =34',@i OUTPUT,@s OUTPUT
SELECT @i,@j,@s

 

好,本次分享在這里結束了。下次看看再找一下。或者大家補充一下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM