Ⅰ 一段sql語句,批處理 每段的意思
可利用sql server 2000下的isql完成,下面舉兩個例子:
1、本地
isql -H. -E -Q "select count(1) from sysobjects"
這個是查詢本地SQL Server中系統對象的個數,查詢完成後會給出結果,不會停留有isql環境中。
2、遠程
isql -S ipaddress -U userid -P userpassword -Q "select count(1) from sysobjects"
這個可實現遠程機器上的統計,也不會停留在isql環境中,請自己根據需要編寫。
希望能幫助到你,如果需要提取的isql文件,因為只有sql server 2000有這東西,2005版本以上的都是沒有的,哈哈,再發一個問題吧。
Ⅱ 如何用SQL生成SQL批處理文件
您好:
SQL> set heading off --禁止輸出列標題
SQL> set feedback off --禁止顯示最後一行的計數反饋信息
列出當前用戶下所有同義詞的定義,可用來測試同義詞的真實存在性
select 'desc '||tname from tab where tabtype='SYNONYM';
查詢當前用戶下所有表的記錄數
select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE';
把所有符合條件的表的select許可權授予為public
select 'grant select on '||table_name||' to public;' from user_tables where 《條件》;
刪除用戶下各種對象
select 'drop '||tabtype||' '||tname from tab;
刪除符合條件用戶
select 'drop user '||username||' cascade;' from all_users where user_id>25;
快速編譯所有視圖
----當在把資料庫倒入到新的伺服器上後(資料庫重建),需要將視圖重新編譯一遍,
----因為該表空間視圖到其它表空間的表的連接會出現問題,可以利用PL/SQL的語言特性,快速編譯。
SQL> SPOOL ON.SQL
SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;
SQL> SPOOL OFF
然後執行ON.SQL即可。
SQL> @ON.SQL
當然,授權和創建同義詞也可以快速進行,如:
SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用戶名;' FROM TAB;
SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用戶名.'||TNAME||';' FROM TAB;
Ⅲ T-SQL中批處理有什麼作用
定義:批處理是T-SQL語句集合的邏輯單元
特點:(1)在批處理的所有語句被整合成一個執行計劃,一個批處理內的所有語句要麼被放在一起通過解析,要麼沒有一句能夠執行。
(2)多個批處理:每一個批處理都會被獨立執行,每個批處理的錯誤不會阻止其它批處理的運行。
用途: 批處理有多種用途,但常被用在某些事情不得不放在前面發生,或者不得不和其它事情分開的腳本中。
GO是一個批處理結束的標識,比如有這么寫語句CREATE......... INSERT....... UPDATE...... GO
如果你不加這個GO,那T-SQL是一條一條順序執行的,如果加了GO,這幾條語句就構成一個批處理塊。
Ⅳ 如何使用sqlcmd在批處理腳本中執行SQL
使用sqlcmd可以在批處理腳本中執行SQL。雖然這個命令的參數很多,但幸運的是,我們不需要全部理解,在這里簡要介紹以下幾個:
{ -U login_id [ -P password ] } | –E trusted connection }] 如果指定了-E就不需要指定用戶名密碼,當然指定了用戶名密碼就不用-E了;
-S server_name [ \ instance_name ] 資料庫伺服器,如果不在本機的話必須指定;
-d db_name 資料庫名字,必須的;
[ -i input_file ] [ -o output_file ] sql存在文件里的話用-i,輸出到文件用-o;
[ -q "cmdline query" ] [ -Q "cmdline query" and exit ] 輸入是簡單的sql,不用文件,推薦用-Q,如果你執行完sqlcmd還需要執行別的動作的話;
[ -W remove trailing spaces ] 刪除多餘的空格,結果會更緊湊。
當我們在真正的腳本中執行sql時,通常需要傳入和輸出變數。
傳入變數比較簡單,如下所示:
sqlcmd -d test -Q "select * from dbo.Investment where investor=$(x)" -v x='IBM' -W
這個語句從test資料庫的Investment表中選出investor等於x的所有行,注意到變數x被包含在${}中。
然後用-v定義了x的值,'IBM'。
-W確定輸出的結果不包含多餘的空格。
x的值如果沒有在sqlcmd中設定,系統會試圖從別的地方去尋找,可能的地方包括,系統環境變數,用戶環境變數,以及用在sqlcmd之前用set設定的變數值。
如果你的數據里確實包含${},那麼你並不希望進行變數的替換,使用-x選項可以禁止變數的替換。
有些時候,你還希望能獲得sql執行結果並保存到變數中。比如你們的日誌系統每天都在產生日誌文件,你要執行一個腳本來處理這些日誌文件並存到資料庫中。在處理之前,你必須讀取資料庫以確定上次處理到那一天了。你期望這樣能解決你的問題:
sqlcmd -d test -Q "select ${x}=max(date) from dbo.logDates " -W
但這樣並不工作。因為sqlcmd並不提供輸出變數。
不過你可以這樣做:
sqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -W
這樣你就可以得到一個乾乾凈凈的數字,而不會包含列名和其他信息。
接著你將上述結果導入到一個文件里:
sqlcmd -d test -Q "declare @x nvarchar(8);select @x=max(date) from dbo.logDates;print @x; " -W 1.txt
現在到了最關鍵的一步,將文件的內容寫入到變數里:
set /P myvar=<1.txt
/p表明這個變數myvar的值需要用戶輸入;
<1.txt表明從1.txt中讀入而不是從其他地方讀入。
這樣,我們就巧妙的把sql執行的結果寫入到變數里了。
Ⅳ 在SQL資料庫中,什麼叫批處理
可以理解成一次處理很多的數據。比如說,我一次往一個表中插入10000條數據,這就是批處理。
Ⅵ SQL中 何為批處理如何標識多個批處理
所謂
批處理
就是,多個
SQL語句
分批處理,一般用go來分開多個SQL語句
例如
create
database
n
go
create
table
b
(...)
go
Ⅶ SQL批處理語句是什麼
不是的,這個在這里一兩句講不清楚的,您需要專門學習一下P/L SQL的知識,可以說是一種依託於資料庫實現的腳本語言,最大的用途就是寫資料庫函數和存儲過程。
Ⅷ 用批處理執行SQL文件的腳本應該怎麼寫
步驟:(1) 創建一個批處理文件:打開記事本,創建資料庫連接信息(例如,server name,username,password,databasename等)以及要執行的*.sql腳本名稱。具體語法參考下文"osql 實用工具" 。 將文件的擴展名改為.bat 並保存。
示例1:指定待執行sql 文件的相對路徑
osql -S admin\admin -U sa -P sa -d TestDB -i c:\test.sql
pause
示例2: 待執行文件與bat文件在同一個目錄,指定相對路徑
set localdir=%~dp0
osql -S (local) -U sa -P sa -d Test -i %localdir%\test1.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test2.sql
osql -S (local) -U sa -P sa -d Test -i %localdir%\test3.sql
pause
(2) 創建需要執行的sql 腳本, test.sql,test2.sql 和test3.sql, 並放在步驟(1)示例1中指定的位置。本例為c:\ 根目錄。如果用示例2,將待執行的sql和bat文件放在同一個目錄下。
(3) 雙擊*.bat 文件並查看運行結果。
Ⅸ sql中的批處理
SQL批處理:指包含一條或多條T - SQL語句的語句組,這組語句從應用程序一次性地發送到SQL server伺服器執行。編批處理程序時,最好能夠以分號結束相關語句。雖然這不資料庫強制求,但筆還強烈建議如此處理。方面這有利於提批處理程序讀性。批處理程序往往完成些比較復雜成套功能,而每條語句則完成項獨立功能。此有時個比較復雜些批處理程序其往往有百行容。此時提其讀性,最好能夠利分號進行語句語句間分隔。二未版本性。其實SQL Server資料庫設計時候,開始這方面就關不嚴。現部分標准程序編器都實現類似強制控制。根據憲梓微軟官方提供資料看,以SQL Server資料庫版本,這個規則能成個強執行規則,即必須每條語句面利分號進行分隔。此能夠跟續SQL Server資料庫版本進行,最好從現開始就采分號分隔批處理程序每條語句。