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

Sqlcmd 使用

系統(tǒng) 1687 0
Sqlcmd是SQL Server 2005所帶的一個命令行工具。它是用于執(zhí)行SQL腳本和替代上一個版本SQL Server的osql工具。除了執(zhí)行SQL代碼,它也執(zhí)行所謂的“sqlcmd擴展”。這些擴展提供了許多普通SQL之外的功能,使得sqlcmd成為用腳本自動化SQL Server數(shù)據(jù)庫管理和維護的一個好用的工具。本文將介紹使用sqlcmd的基本方法,并提供一些它在SQL Server管理和維護中的實踐方法。

  從命令行提示窗口中以交互模式啟動sqlcmd命令。當(dāng)在窗口中執(zhí)行SQL查詢時,我們就會即時看到結(jié)果,而相同的查詢操作我們在SQL Server Management Studio的sqlcmd模式可以更簡單地實現(xiàn)。Sqlcmd的真正作用在于它能夠很容易自動執(zhí)行已保存的帶有位置和執(zhí)行方式選項的SQL腳本——選項控制可以通過傳入?yún)?shù)或sqlcmd變更實現(xiàn)。

  下面是一組最常用的sqlcmd特性:

  1、執(zhí)行腳本文件。在sqlcmd中執(zhí)行腳本文件的方法有2種。在DOS中,可以調(diào)用sqlcmd命令,并用選項-i傳入想要執(zhí)行的文件名:

  sqlcmd -i"c:\sql\MySql.sql"

  注意:雙引號只在路徑中包含空格時才是必需的,但為了保持一致性,我總是使用雙引號來表示路徑。

  第二個方法是從一個執(zhí)行的SQL文件中調(diào)用另一個SQL文件。這可以使我們實現(xiàn)更多層次的腳本文件,其中最上層負責(zé)控制整個流程——指定執(zhí)行的文件和傳入的參數(shù)。下面的腳本將從一個在sqlcmd模式中運行的SQL文件中執(zhí)行MySql.sql文件:

  :r "c:\sql\MySql.sql"

  2、使用和傳遞變量。在我看來,這是SQL Server 2005的sqlcmd對比于之前的SQL Server版本的osql的最好用的功能。我們可以在sqlcmd腳本內(nèi)使用:server指令聲明變量,然后在后面的代碼中將變量名放在placeholder $()中來使用這些變量。Sqlcmd會用所引用變量的值替換這些占位符。

  :setvar hello "Hello World"

  PRINT '$(hello)'

  如果聲明和定義了一個變量,那么其中會有一個很有用的操作是執(zhí)行上下文其中包括聲明變量的文件所調(diào)用的所有腳本文件。這使我們能將變量從父腳本文件傳遞到子腳本文件。在下面的例子中,變量hello在所調(diào)用的MySql2.sql文件中也是可以使用的。

  :setvar hello "Hello World"

  :r "c:\sql\MySql2.sql"

  如果在DOS中調(diào)用sqlcmd,我們可以傳入?yún)?shù)并使用命令行選項-v來傳遞它們。

  sqlcmd -i"c:\sql\MySql2.sql" -

  vhello="Hello World"

  3、連接到多個服務(wù)器。在啟動sqlcmd時,我們需要連接到一個特定的服務(wù)器來執(zhí)行我們的代碼。但是在SQL中,你可以將連接修改為另一個不同的服務(wù)器,然后接下來的腳本都會在新的服務(wù)器上執(zhí)行。我們可以使用下面的命令來連接另一個服務(wù)器:

  :connect MyServer2

  SELECT * FROM sys.databases – returns

  databases from MyServer2

4、改進錯誤處理。Sqlcmd會有許多選項可用于處理程序所遇到的意外情況。將這個特性與sqlcmd變量相結(jié)合,我們可以很靈活地處理所遇到的意外情況。例如,如果我們想要確定一個特定的腳本文件只會在一個指定的數(shù)據(jù)庫服務(wù)器上執(zhí)行,那么我們需要在代碼中確保它不會出錯。這個例子使用“:on error exit”命令來規(guī)如果SQL Server實例的名稱不是PREHAK,腳本的執(zhí)行就應(yīng)該停止:
  :on?error?exit
  IF?(@@servername?!=?'RREHAK')
  BEGIN
  RAISERROR(N'This?script?can?only
  Execute?on?RREHAK',?16,?127)
  END

  任何跟在上面代碼后的腳本都不會執(zhí)行。

  5、備份和恢復(fù)一個數(shù)據(jù)庫?,F(xiàn)在我將介紹一個好用的sqlcmd腳本例子。我經(jīng)常會創(chuàng)建腳本來備份一個服務(wù)器上的數(shù)據(jù)庫,然后將它恢復(fù)到另一個服務(wù)器上。通過使用sqlcmd,我們可以在一個腳本里完成這所有的操作,因為我們可以同時連接到源和目標服務(wù)器。下面的腳本會備份一個服務(wù)器上的Northwind數(shù)據(jù)庫,然后再將它恢復(fù)到另一臺服務(wù)器上。

  --?connect?to?the?source?server
  :CONNECT?rrehak\sql2000
  BACKUP?DATABASE?Northwind
  TO?DISK?=?'C:\Temp\Northwind.bak'
  WITH?INIT
  GO
  --?connect?to?the?destination?server
  :CONNECT?rrehak
  --?if?the?database?exists,?disconnect?any
  possible?connections
  IF?EXISTS?(SELECT?*?FROM
  master.dbo.sysdatabases?WHERE?name?=
  'Northwind')
  ALTER?DATABASE?Northwind
  SET?SINGLE_USER?WITH?ROLLBACK?IMMEDIATE
  GO
  RESTORE?DATABASE?[Northwind]
  FROM?DISK?=?N'C:\Temp\Northwind.bak'
  WITH?FILE?=?1,
  MOVE?N'Northwind'?TO?N'C:\SQL?Server
  Databases\Northwind.mdf',
  MOVE?N'Northwind_log'?TO?N'C:\SQL?Server
  Databases\Northwind_1.ldf',
  NOUNLOAD,?STATS?=?10
  GO

  這個腳本作了進一步的改進,它向我們演示了如何在sqlcmd上執(zhí)行操作系統(tǒng)的命令。演示腳本從源數(shù)據(jù)庫所備份的位置恢復(fù)數(shù)據(jù)庫。假設(shè)我們要拷貝一個備份文件到目標服務(wù)器的一個文件夾,因為我們將重復(fù)地恢復(fù)這個文件,這樣做可以避免通過網(wǎng)絡(luò)來恢復(fù)。Sqlcmd可以使用指令:!!來執(zhí)行DOS命令。這樣,將下面的腳本放在備份部分代碼之后而在恢復(fù)部分代碼之前,就可以執(zhí)行DOS拷貝命令來創(chuàng)建備份文件的一個拷貝了:

  :setvar?CopyCommand?"copy
  \?\sqlserver1\c$\Temp\Northwind.bak
  \?\sqlserver2\c$\sql"
  :!!?$(CopyCommand)

  所有這些特性使得sqlcmd成為自動化SQL Server管理和維護的工具。例如,我們可以創(chuàng)建一個“worker”腳本文件,它包含一套通用的腳本,它們需要在多個數(shù)據(jù)庫、甚至多個服務(wù)器上執(zhí)行。在這些腳本中我們將使用sqlcmd變量:

  本文概述了使用sqlcmd工具的方法和實例。你可以在Microsoft Books Online上閱讀更多關(guān)于sqlcmd的文章,然后開始創(chuàng)建你自己的一套腳本,來自動化你的重復(fù)性任務(wù),從而提高你的工作效率。

Sqlcmd 使用


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产a级网站 | 成人国产精品视频 | 四虎免费在线播放 | 91日韩精品天海翼在线观看 | 亚洲第二区 | 亚洲女人天堂a在线播放 | 精品福利在线观看 | 中国精品久久 | 91精品国产91久久久久 | 看全色黄大色大片免费久黄久 | 精品成人在线观看 | 久久精品视频5 | 99国产精品高清一区二区二区 | 91福利在线视频 | 999久久久免费精品国产牛牛 | 四虎地址8848在线观看 | 99精品久久久久久久免费看蜜月 | 亚洲第一se情网站 | 国产国拍亚洲精品永久不卡 | 久久99国产精品视频 | 亚洲欧美日韩精品久久亚洲区 | 国产亚洲精品美女久久久 | 亚洲精品国产美女在线观看 | 一级无毛| 国产在线精品香蕉麻豆 | 美国一级毛片免费看成人 | 一 级 黄 中国色 片 | 爱操视频在线观看 | 亚洲性大片 | 国产精品视频专区 | 毛片免费全部免费观看 | 999热视频| 久久久久国产精品免费免费不卡 | 国产日韩久久久久69影院 | 亚洲精品天堂一区二区三区 | 青青热久免费精品视频在线观看 | 黄色网址中文字幕 | 色综合九九| 99这里有精品视频 | 国产91亚洲精品 | 澳门成人免费永久视频 |