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

Sqlcmd 使用

系統(tǒng) 1987 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)更多層次的腳本文件,其中最上層負(fù)責(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ù)庫。現(xiàn)在我將介紹一個好用的sqlcmd腳本例子。我經(jīng)常會創(chuàng)建腳本來備份一個服務(wù)器上的數(shù)據(jù)庫,然后將它恢復(fù)到另一個服務(wù)器上。通過使用sqlcmd,我們可以在一個腳本里完成這所有的操作,因為我們可以同時連接到源和目標(biāo)服務(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è)我們要拷貝一個備份文件到目標(biāo)服務(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在线 | 一级毛片视频免费观看 | 人人干操| 7799国产精品久久久久99 | 国产99视频精品免视看9 | 亚洲国产二区 | 综合色天天 | 日韩欧美精品有码在线观看 | 四虎影视在线免费观看 | 久久爱伊人一区二区三区小说 | 本地毛片 | 999国产视频 | 天天综合亚洲 | 国产免费无遮挡精品视频 | 亚洲日本高清影院毛片 | 久草国产在线 | 97高清国语自产拍中国大陆 | 欧美激情一区二区 | 情趣视频网站在线观看 | www精品久久| 看免费一级毛片 | 久久综合久久鬼色 | 日韩日b视频 | 日日操日日射 | 91精品国产免费久久国语麻豆 | 成人午夜在线观看 | 欧美成人天天综合天天在线 | 男任天堂2021 | 91中文字幕在线观看 | 久草精品视频在线观看 | 欧美伊人久久大香线蕉综合69 | 国产色视频在线 | 伊人影院在线视频 | 色综合亚洲天天综合网站 | 亚洲综合爱爱久久网 | 成人网18免费网站 | 日本特黄一级午夜剧场毛片 | 国产精品一区不卡 |