上次說的bcp是直接可以在DOS下運行的命令,今天說這個osql...
平時你是否會遇到這樣的問題,你有一個腳本文件,以.sql結尾的,是在查詢分析器裡保存的 ,例如,這是一個建表的文件,又或者,這是一個很復雜的聯合查詢
會出現這樣的情況
1、如何在軟件中調用腳本文件直接操作SQL Server建表呢
2、如果一個很復雜的聯合查詢要更新100w條數據,很顯然你如果直接給dataset肯定會執行超時,因為給dataset執行就相當於在企業管理器裡執行Sql。在那裡執行Sql一個很簡單的delete都可以執行超時,只要數據量大
怎麼解決呢,你就可以通過直接調用腳本文件
在查詢分析器裡調用腳本文件是這樣的
EXEC master..xp_cmdshell 'osql -S "ServerName" -U "UserName" -P"PassWord" -i "FilePath" '
好理解吧,FilePath即為腳本文件的絕對路徑
然後在軟件裡怎麼調用呢
EXEC master..xp_cmdshell 的意思是在SQL Server裡調用DOS下的命令
我以bcb為例,別的我也沒寫,但差別不大,思路相同
首先把你需要執行的sql存為腳本文件
然後新建一個bat文件,可以在程序中建
我喜歡用outfile.open的fstream,C++裡應該都是通用的
然後把osql -S "ServerName" -U "UserName" -P"PassWord" -i "FilePath" 寫入bat
最後程序調用bat執行
ok完成~~簡單吧~~我可研究了一陣......