程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> C++,DOS,----osql

C++,DOS,----osql

編輯:關於SqlServer

上次說的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完成~~簡單吧~~我可研究了一陣......



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved