亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

SQLCMD的介紹

系統(tǒng) 1961 0
原文: SQLCMD的介紹

文章轉(zhuǎn)載自: http://blog.sina.com.cn/s/blog_3eec0ced0100mhm2.html

最近經(jīng)常用到超過80M *.sql文件的導(dǎo)入問題。

上網(wǎng)找了一下,發(fā)現(xiàn)超過80M的文件是不能在查詢分析器中執(zhí)行的。

?

找了些解決方案,個人感覺最簡單的方法就是這個SQLCMD的,拿出來分享一下,也方便日后自己使用。

1 ? sqlcmd? - S? SERVERNAME? - U? USERNAME? - P? PASSWORD? - i? filename.sql


下面的內(nèi)容是詳細介紹sqlcmd的,有興趣的朋友可以看看

?

?

因為公司的業(yè)務(wù)需要,所以采集了一個2W多條的數(shù)據(jù),都是insert語句,生成一個200多M的數(shù)據(jù),誰料在通過sql server 2005不能直接打開,導(dǎo)入也存在問題,用記事本也打不開,復(fù)制貼也不行,最后還是一同學(xué)提了個醒用命令在dos下執(zhí)行.sql文件,才有了辦法,同時也 在一熱心網(wǎng)友的幫助下完成了這個讓我頭疼半天的活,下面我對這些做一下介紹,應(yīng)該對有這樣需要的朋友很好的幫助。

如果裝的是2000版的sql那用的命令是osql,05的用sqlcmd

其實用法很簡單,任何技術(shù),一旦說穿就失去了它的神秘,這有點像生活中的很多事,好了廢話了半天,還是切入正題,開工吧:

其實就是一句很簡單的話句:

sqlcmd -i sqlfile.sql -d databasename -s 127.0.0.1

這個sql文件要放在c:\下

就這么簡單..

sqlcmd 使用筆記

登錄sqlcmd

命令 sqlcmd -S 服務(wù)器名稱 -U 帳戶 -P 密碼

示例 sqlcmd -S "HOMESQLEXPRESS" -U "sa" -P "12345678"

直接執(zhí)行SQL Script

命令 sqlcmd -S 服務(wù)器名稱 -U 帳戶 -P 密碼 -d 數(shù)據(jù)庫 -i SQL Script

示例 sqlcmd -S "HOMESQLEXPRESS" -U "sa" -P "12345678" -d "Database" -i "E:My Documentstest.sql"

查詢當(dāng)前服務(wù)器上的數(shù)據(jù)庫

(*) 可能需要 Use Master

1. Select [Name] From sysdatabases

2. sp_helpdb

查詢當(dāng)前數(shù)據(jù)庫的表和存儲過程

表:select * from sysobjects where status >=0 and xtype='U'

存儲過程:select * from sysobjects where status >=0 and xtype='P'


------------------------
1、你可以用SQLCMD執(zhí)行交互式動作,如:
C:\sqlcmd>sqlcmd

1> SELECT name from sys.databases

2> GO

你也可以試著鍵入如下命令,現(xiàn)實服務(wù)器列表

1>:ServerList

SERVERS:

WUYZ

1>如果想看其他命令的使用,可以鍵入:Help /?

2、執(zhí)行SQL腳本文件

你可以在SQLCMD命令上加入?yún)?shù)I來執(zhí)行SQL腳本文件,例如:

C:\sqlcmd>sqlcmd -i test.sql

上面的I選項允許你執(zhí)行一個腳本文件,另外,你也可以指定O選項,把命令的輸出導(dǎo)出到指定文件,當(dāng)然,我們也可以在代碼中指定輸出結(jié)果,如下

C:\sqlcmd>sqlcmd

1> :out output.txt

2> :r test.sql

3、在腳本中使用變量

SQLCMD支持可以在腳本中接收用戶傳入的變量信息,如下面語句:

SET NOCOUNT ON

Select $(Cols) from $(tablename)

GO

上面語句請求2個參數(shù),我們可以通過指定相應(yīng)的參數(shù)信息傳給腳本,如下:

C:\sqlcmd>sqlcmd -i test.sql -o Output.txt -v cols="name,object_id,create_date" tablename="sys.objects"

上面語句的用途是:執(zhí)行TEST.SQL腳本文件,并把輸出的信息輸出到OUTPUT.TXT文件中,并分別指定了COLS,TABLENAME的參數(shù)值

4、在腳本中設(shè)置變量的值
除了通過外部傳入?yún)?shù)的值外,還可以在內(nèi)部設(shè)置參數(shù)的值,如下面例子

e:\sqlcmd\backuptemplate.sql

use master

backup database [$(db)] to disk='$(file)'

e:\sqlcmd\backupsingle.sql

:setvar db msdb

:setvar file c:\temp\msdb.bak

:r e:\sqlcmd\backuptemplate.sql

如果你想知道當(dāng)然定義了哪些變量,可以使用:listvar命令來顯示。主要命令匯總:

:r filename

:ServerList

:List

:Listvar

:Error filename | STDOUT | STDERR

:Out filename | STDOUT | STDERR

:Perftrace filename | STDOUT | STDERR

:Connect server[\instance] [timeout] [user_name[password] ]

:On Error [exit | ignore]

:SetVar variable value

:Help:XML ON | OFF

主要環(huán)境變量匯總:

-a SQLCMDPACKETSIZE

-d SQLCMDDBNAME

-H SQLCMDWORKSTATION

-h SQLCMDHEADERS

-l SQLCMDLOGINTIMEOUT

-m SQLCMDERRORLEVEL

-P SQLCMDPASSWORD

-S SQLCMSSERVER

-s SQLCMDCOLSEP

-t SQLCMDSTATTIMEOUT

-U SQLCMDUSER

-w SQLCMDCOLWIDTH

------------------------
T-SQL還原數(shù)據(jù)庫備份
restore database TionkDatabase from disk='E:\@工作\訊客\項目\訊客直銷\代碼\db20080521'
width move "源文件" to "目標文件位置"

------------------------
使用 T-SQL 執(zhí)行還原

RESTORE 命令有兩種形式顯示如下:
RESTORE DATABASE 還原完整的資料庫、檔案或檔案群組。
RESTORE LOG 還原交易記錄檔。

RESTORE 陳述式

執(zhí)行完整資料庫還原時 RESTORE 陳述式的語法如下:
RESTORE DATABASE database_name
[ FROM backup_device ]
[ WITH options ]
這個陳述式只要求資料庫的檔案名稱和備份所在的位置。

執(zhí)行檔案和檔案群組還原時陳述式的語法如下:
RESTORE DATABASE database_name
[ FILE = file_name ]
[ FILEGROUP = filegroup_name ]
[ FROM backup_device ]
[ WITH options ]
這個陳述式只要求資料庫名稱、檔案名稱或檔案群組名稱和備份所在的位置。

執(zhí)行交易記錄還原時陳述式的語法如下:
RESTORE LOG database_name
[ FROM backup_device ]
[ WITH options ]
就如同其他的命令,database_name 是還原將要執(zhí)行的資料庫名稱。backup_device 參數(shù)可以是邏輯備份裝置名稱或?qū)嶓w裝置的名稱。如果要指定一個實體裝置,必須限定它的裝置類型-也就是說,裝置名稱前面必須加上 DISK=、TAPE= 或 PIPE=。可以指定一個或多個裝置,中間以逗號隔開。

如果沒有提供 FORM 子句,還原將無法進行,而且仍然會執(zhí)行回復(fù)(除非執(zhí)行NORECOVERY 選項)。這項技術(shù)可以用來將資料庫設(shè)定為回復(fù)模式,而不還原其他附加資料。例如,可以執(zhí)行多個差異還原操作,然后執(zhí)行 RESTORE 陳述式,不需要 FORM 子句來將資料庫設(shè)定為回復(fù)模式,就能夠啟動回復(fù)過程。

選項

選項? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?說明
RESTRICTED_USER? ? ? ? ? ? ? ? ? ? ? ? ?設(shè)定新還原資料庫的安全性,只有 db_owner、dbcreater 和 sysadmin 角色成員才能存取該資料庫。
FILE = file_number? ? ? ? ? ? ? ? ? ?如果在儲存媒體中有多個備份集,可用來識別所使用的備份集。例如設(shè)定該數(shù)值為2,則使用磁帶上的第二個備份集。
PASSWORD = password? ? ? ? ? ? ? ? ?指定儲存?zhèn)浞莸拿艽a。
MEDIANAME =media_name? ? ? ? ? ? ?指定媒體的名稱。
MEDIAPASSWORD = password? ? ? ?指定儲存媒體的密碼。
MOVE 'logical_file_name' TO 'OS_file_name'
更改還原檔案的位置,例如:MOVE 'Northwind' TO 'D:\data\Northwind.mdf'。如果舊的磁碟無法使用,而需要還原到新的磁碟上時,可以使用這個選項。

NORECOVERY |RECOVERY | STANDBY = undo_file
NORECOVERY 指定在還原后,交易將無法退回或重新進行。如果將還原其他的備份(差異式備份或交易記錄檔備份),則需要用到這個選項。REVOVERY 為預(yù)設(shè)選項,它指定執(zhí)行回復(fù)操作,并退回每個沒有提交的變更。STANDBY 指定在還原需要還原情況下,建立還原(undo)檔案。
KEEP_REPLICATION 指定當(dāng)資料庫還原時復(fù)制設(shè)定要保存下來。
NOUNLOAD | UNLOAD NOUNLOAD 指定在還原完成后不卸載儲存媒體(例如,覆寫備份磁帶并彈出)。UNLOAD 為預(yù)設(shè)選項,指定在還原完成后卸載儲存媒體。
REPLACE 指出即使資料檔案已經(jīng)存在,SQL Server 仍將還原這些檔案。現(xiàn)存的檔案將被刪除和覆寫。如果沒有指定 REPLACE,那麼 SQL Server 將會核對 database_name 是否已經(jīng)存在。如果已經(jīng)存在,那麼將終止還原操作。這個安全特性幫助避免無意地將還原覆寫正在工作的資料庫。
RESTART 指定 SQL Server 在還原操作被中斷后重新啟動還原操作。
STATS [ = percentage ] 在還原操作完成了指定的百分率后顯示訊息。如果需要監(jiān)控操作的過程,這個選項將會很有用。
PARTIAL 指定執(zhí)行部份還原。
STOPAT = date_time

(log restore only)? www.koogoogle.cn/whois
指定資料庫回復(fù)到 data_time 指定時刻的資料狀態(tài)(只對記錄檔還原有效)。
STOPATMARK = 'mark' 指定還原操作進行到標記處。
STOPBEFOREMARK = 'mark' 指定還原操作進行到標記之前。

?

通過System.Data.SqlClient命名空間只能執(zhí)行單條SQL,或多個內(nèi)容中間用;分開,不能執(zhí)行類似等命令,有沒有一種方法能類似查詢分析器一樣執(zhí)行一些批命令呢,答案是通過OSQL來執(zhí)行。
OSQL詳細用法: http://technet.microsoft.com/zh-cn/library/ms162806.aspx
通地進程來調(diào)用:

?

SQLCMD的介紹 C#代碼
? 1 ? ? ? ? ? ? ? ? ? /// ? <summary>
? 2 ? ? ? ? ? ? ? ? ? /// ? 執(zhí)行OSQL命令
? 3 ? ? ? ? ? ? ? ? ? /// ? </summary>
? 4 ? ? ? ? ? ? ? ? ? public ? static ? ? void ? ExcuteOsqlCmd( string ? cmd,? string ? errorFile,? string ? filePath)
? 5 ? ? ? ? ? ? ? ? ? {
? 6 ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.Diagnostics.Process? p? = ? new ? System.Diagnostics.Process();
? 7 ?
? 8 ? ? ? ? ? ? ? ? ? ? ? ? ? ? p.StartInfo.FileName? = ? " osql " ;
? 9 ? ? ? ? ? ? ? ? ? ? ? ? ? ? p.StartInfo.Arguments? = ? cmd;
10 ? ? ? ? ? ? ? ? ? ? ? ? ? ? p.StartInfo.UseShellExecute? = ? false ;
11 ?
12 ? ? ? ? ? ? ? ? ? ? ? ? ? ? p.StartInfo.RedirectStandardError? = ? true ;
13 ? ? ? ? ? ? ? ? ? ? ? ? ? ? p.StartInfo.CreateNoWindow = true ;
14 ? ? ? ? ? ? ? ? ? ? ? ? ? ? p.Start();
15 ? ? ? ? ? ? ? ? ? ? ? ? ? ? p.WaitForExit();
16 ? ? ? ? ? ? ? ? ? ? ? ? ? // p.Close();
17 ? ? ? ? ? ? ? ? ? ? ? ? ? int ? exitCode? = ? p.ExitCode;
18 ? ? ? ? ? ? ? ? ? ? ? ? ? if ? (exitCode? != ? 0 )
19 ? ? ? ? ? ? ? ? ? ? ? ? ? {
20 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? StreamReader? sr? = ? new ? StreamReader(errorFile,? System.Text.Encoding.Default);
21 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? string ? all? = ? sr.ReadToEnd();
22 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sr.Close();
23 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // ExcuteOtherCmd(string.Format("notepad? \"{0}\"",? errorFile));
24 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? throw ? new ? StepException(all);
25 ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
26 ? ? ? ? ? ? ? ? ? ? }


? 調(diào)用如下:
string comm = string.Format(" -U {5} -P {0} -S {1} -d {2} -b -e -i \"{3}\" -o \"{4}\"", pass,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?conn.DataSource,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?conn.Database,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FilePath, errorFile,user);
Process.ExcuteOsqlCmd(comm, errorFile, FilePath);//直接執(zhí)行一個SQL文件,路徑為FilePath

SQLCMD的介紹


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲精品天堂一区二区三区 | 夜夜爱夜夜爽夜夜做夜夜欢 | 欧美色综合| 中文视频 | 成人精品视频在线观看播放 | 亚洲精品国产第一区二区尤物 | 日日狠狠的日日日日 | 日韩欧美伦理 | 久久精品国产欧美成人 | 久99频这里只精品23热 视频 | 欧美亚洲第一区 | 青草免费免费观看视频在线 | 中文字幕日韩精品亚洲七区 | 国产v片成人影院在线观看 国产v视频 | 久久久久久久国产a∨ | 欧美在线一区视频 | 国产手机在线精品 | 毛片破处 | 干美女网站 | 欧美日韩亚洲国内综合网香蕉 | 男女xxⅹ爽免费视频 | 在线观看亚洲 | 国产不卡精品一区二区三区 | 五月亭亭激情五月 | 日本不卡视频在线观看 | 日本欧美精品 | 另类久久 | 三级西施| 91视频最新网址 | 欧美日韩在大午夜爽爽影院 | 久久精品视频日本 | 亚洲精品黄色 | 欧洲一级毛片免费 | 国产成人啪午夜精品网站男同 | 狠狠色狠狠色综合日日32 | 日本一级网站 | 一级在线免费视频 | 不卡网站| 久久青青草原精品国产麻豆 | 午夜精品久久久久久久2023 | 免费视频爰爱太爽了 |