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

SQLCMD的介紹

系統 2241 0
原文: SQLCMD的介紹

文章轉載自: http://blog.sina.com.cn/s/blog_3eec0ced0100mhm2.html

最近經常用到超過80M *.sql文件的導入問題。

上網找了一下,發現超過80M的文件是不能在查詢分析器中執行的。

?

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

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


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

?

?

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

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

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

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

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

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

就這么簡單..

sqlcmd 使用筆記

登錄sqlcmd

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

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

直接執行SQL Script

命令 sqlcmd -S 服務器名稱 -U 帳戶 -P 密碼 -d 數據庫 -i SQL Script

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

查詢當前服務器上的數據庫

(*) 可能需要 Use Master

1. Select [Name] From sysdatabases

2. sp_helpdb

查詢當前數據庫的表和存儲過程

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

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


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

1> SELECT name from sys.databases

2> GO

你也可以試著鍵入如下命令,現實服務器列表

1>:ServerList

SERVERS:

WUYZ

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

2、執行SQL腳本文件

你可以在SQLCMD命令上加入參數I來執行SQL腳本文件,例如:

C:\sqlcmd>sqlcmd -i test.sql

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

C:\sqlcmd>sqlcmd

1> :out output.txt

2> :r test.sql

3、在腳本中使用變量

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

SET NOCOUNT ON

Select $(Cols) from $(tablename)

GO

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

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

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

4、在腳本中設置變量的值
除了通過外部傳入參數的值外,還可以在內部設置參數的值,如下面例子

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

如果你想知道當然定義了哪些變量,可以使用: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

主要環境變量匯總:

-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還原數據庫備份
restore database TionkDatabase from disk='E:\@工作\訊客\項目\訊客直銷\代碼\db20080521'
width move "源文件" to "目標文件位置"

------------------------
使用 T-SQL 執行還原

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

RESTORE 陳述式

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

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

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

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

選項

選項? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?說明
RESTRICTED_USER? ? ? ? ? ? ? ? ? ? ? ? ?設定新還原資料庫的安全性,只有 db_owner、dbcreater 和 sysadmin 角色成員才能存取該資料庫。
FILE = file_number? ? ? ? ? ? ? ? ? ?如果在儲存媒體中有多個備份集,可用來識別所使用的備份集。例如設定該數值為2,則使用磁帶上的第二個備份集。
PASSWORD = password? ? ? ? ? ? ? ? ?指定儲存備份的密碼。
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 為預設選項,它指定執行回復操作,并退回每個沒有提交的變更。STANDBY 指定在還原需要還原情況下,建立還原(undo)檔案。
KEEP_REPLICATION 指定當資料庫還原時復制設定要保存下來。
NOUNLOAD | UNLOAD NOUNLOAD 指定在還原完成后不卸載儲存媒體(例如,覆寫備份磁帶并彈出)。UNLOAD 為預設選項,指定在還原完成后卸載儲存媒體。
REPLACE 指出即使資料檔案已經存在,SQL Server 仍將還原這些檔案。現存的檔案將被刪除和覆寫。如果沒有指定 REPLACE,那麼 SQL Server 將會核對 database_name 是否已經存在。如果已經存在,那麼將終止還原操作。這個安全特性幫助避免無意地將還原覆寫正在工作的資料庫。
RESTART 指定 SQL Server 在還原操作被中斷后重新啟動還原操作。
STATS [ = percentage ] 在還原操作完成了指定的百分率后顯示訊息。如果需要監控操作的過程,這個選項將會很有用。
PARTIAL 指定執行部份還原。
STOPAT = date_time

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

?

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

?

SQLCMD的介紹 C#代碼
? 1 ? ? ? ? ? ? ? ? ? /// ? <summary>
? 2 ? ? ? ? ? ? ? ? ? /// ? 執行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 ? ? ? ? ? ? ? ? ? ? }


? 調用如下:
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);//直接執行一個SQL文件,路徑為FilePath

SQLCMD的介紹


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 综合久久久久久久综合网 | 四虎影视永久在线精品免费 | 大学生久久香蕉国产线看观看 | 奇米影视8888 | 精品四虎免费观看国产高清 | 日本在线视频不卡 | 精品一区二区在线观看 | 男人的天堂在线免费视频 | 四虎影在永久地址在线观看 | 久草国产在线 | www.免费视频 | 亚洲欧洲中文字幕 | 亚洲性生活 | 国产97公开成人免费视频 | 久久我们这里只有精品国产4 | 欧美性猛交xxxxx按摩欧美 | 新26uuu在线亚洲欧美 | 久久久无码精品亚洲日韩按摩 | 国产啪视频1000部免费视频 | 奇米影视第四色首页 | 欧美一级片在线视频 | 久久艹伊人| 在线看日本a毛片 | 亚洲精品第四页中文字幕 | 2021精品综合久久久久 | 国产亚洲一区二区三区啪 | 久热精品男人的天堂在线视频 | 日韩视频免费在线播放 | 欧美日韩中文字幕在线观看 | 欧美午夜场 | 老司机精品在线播放 | 男女超爽视频免费播放在线观看 | 狠狠狠很橹影院 | 波多野结衣免费免费视频一区 | 九九视频国产 | 污网站视频在线观看 | 亚洲视频免费在线看 | 亚洲99久久久久综合 | 久操久热| 一级毛片视频免费观看 | 亚洲精品乱码国产精品乱码 |