小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

為什么這個(gè)SQL Server DBA學(xué)習(xí)PowerShell

 看見(jiàn)就非常 2014-07-14

為什么這個(gè)SQL Server DBA學(xué)習(xí)PowerShell

原文出自:http://www./sql/database-administration/why-this-sql-server-dba-is-learning-powershell/

Joe.TJ翻譯整理,僅用于傳播資訊之目的。

     我開(kāi)始學(xué)習(xí)PowerShell,是因?yàn)槲以趯ふ乙环N快速和高效的方式收集有關(guān)我的SQL Servers的信息和更好地管理我的服務(wù)器工作負(fù)載的方式。我以為,我正在學(xué)習(xí)是另一門(mén)新的腳本語(yǔ)言,它能幫我做到前面提到的設(shè)想。實(shí)際上,我發(fā)現(xiàn)學(xué)習(xí)PowerShell,不僅提供了一種強(qiáng)大的手段去實(shí)現(xiàn)許多常規(guī)和重復(fù)性的服務(wù)器任務(wù)和健康檢查;也是一個(gè)提高我其它方面技能的有用的跳板。例如,在我學(xué)習(xí)PowerShell時(shí),我發(fā)現(xiàn):

  提高了我關(guān)于.NET的認(rèn)識(shí),這樣我就能夠更好地與我所支持的應(yīng)用程序開(kāi)發(fā)人員交流。

  學(xué)會(huì)了如何使用 Server Management Objects (SMO) 來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)相關(guān)任務(wù)的自動(dòng)化執(zhí)行。

  學(xué)會(huì)了 Windows Management Instrumentation (WMI)相關(guān)的知識(shí),它能允許我只使用一條信息就查詢(xún)多一臺(tái)或者多臺(tái)服務(wù)器。

  更加適應(yīng)OOP.

 

      在這篇文章里,我描述了一些使用PowerShell的例子,同時(shí)希望這些對(duì)DBA有用。我的腳本將會(huì)演示在一臺(tái)或多服務(wù)器如何執(zhí)行SQL查詢(xún),WMI查詢(xún)和SMO代碼,以及幫助您更好的管理多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器。所有腳本均在SQL Server 2005中測(cè)試通過(guò)。

      本文的目的不是寫(xiě)成一份PowerShell教程。我假設(shè)您已經(jīng)熟知以下內(nèi)容:基本的PowerShell語(yǔ)法,如何使用cmdlets獲取幫助,命令行是如何工作的,如何運(yùn)行腳本,命名管道是什么,別名是什么等等。如果您不知道這些內(nèi)容,你可以在各種線上文章,新聞組和博客中找到大量的幫助(文章結(jié)尾引用章節(jié)中列出了部分資源)。這篇文章中的部分腳本來(lái)源于我閱讀這些資源時(shí)遇到的。

使用PowerShell管理多臺(tái)服務(wù)器

         使用PowerShell管理多臺(tái)服務(wù)器的核心就是一份簡(jiǎn)單的服務(wù)器清單,它包括您希望在其上執(zhí)行常規(guī)任務(wù)和健康檢查的服務(wù)器名字。

         在我的例子中,我使用一個(gè)簡(jiǎn)單的包含我的服務(wù)器的清單AllServers.txt。格式如下:

         Server1

         Server2

         Server3

         ……

      我將演示的例子中,我使用一個(gè)Foreach循環(huán)對(duì)這個(gè)清單里列出的每臺(tái)服務(wù)器執(zhí)行一個(gè)任務(wù)。這個(gè)簡(jiǎn)單的服務(wù)器列表構(gòu)成了完成重復(fù)任務(wù)的基石。我主要的工作是在Microsoft的環(huán)境里,我發(fā)現(xiàn)使用PowerShell執(zhí)行重復(fù)任務(wù)要比之前用Python快。例如,Python需要多行語(yǔ)句讀取,打開(kāi)和關(guān)閉一個(gè)文件,但是PowerShell中Get-Content cmdlet讀取一個(gè)文件只使用一行代碼。

# Read a file

get-content "C:\AllServers.txt"

   如果你感覺(jué)要打過(guò)多的字,你可以通過(guò)它的別名來(lái)調(diào)用Get-Content cmdlet。

gc "C:\AllServers.txt"

為了便于閱讀而定義的最佳實(shí)踐是在命令行中使用別名和在腳本中完成cmdlet。您可以使用Get-Alias cmdlet列出所有PowerShell中的別名:

# List aliases, sort by name or definition

get-alias | sort name

get-alias | sort definition

PowerShell即是交互式命令行也是腳本環(huán)境。我剛開(kāi)始著手解決一個(gè)問(wèn)題是通過(guò)在命令行中執(zhí)行命令。當(dāng)我已經(jīng)確定了命令的正確順序時(shí),我把它們保存為一個(gè)以.ps1擴(kuò)展名的腳本文件,當(dāng)需要時(shí)再執(zhí)行。

 

自動(dòng)化重復(fù)任務(wù)

      PowerShell 使得為我所有的服務(wù)器實(shí)現(xiàn)自動(dòng)化常規(guī)的和重復(fù)性任務(wù)變得更容易,使得用一些關(guān)于服務(wù)器的位信息(bit of information)便能快速和高效處理看似層出不窮的即席請(qǐng)求。接下來(lái)的章節(jié)只是描述一些我已經(jīng)寫(xiě)好的,用來(lái)實(shí)現(xiàn)自動(dòng)化重復(fù)性任務(wù)的腳本。這些例子的進(jìn)步來(lái)自:我發(fā)現(xiàn)那些曾經(jīng)花了很多精力解決才解決的問(wèn)題,轉(zhuǎn)換成Powershell來(lái)處理則變得非常簡(jiǎn)單。

 SQL 任務(wù)

      把Python轉(zhuǎn)換成PowerShell最簡(jiǎn)單的任務(wù)就是對(duì)多臺(tái)服務(wù)器執(zhí)行一條語(yǔ)句。在這些例子中基本的步驟如下:

  1. 為每臺(tái)服務(wù)器讀取數(shù)據(jù)庫(kù)服務(wù)器清單
  2. 創(chuàng)建一個(gè)表用于存儲(chǔ)結(jié)果
  3. 建立與服務(wù)器的連接
  4. 執(zhí)行查詢(xún)并格式化查詢(xún)結(jié)果

 

     檢查多臺(tái)服務(wù)器上的SQLServer版本

          我運(yùn)行如下腳本來(lái)確定,所有服務(wù)器是否處于公司規(guī)定的補(bǔ)丁級(jí)別:

復(fù)制代碼
# SQLVer.ps1

# usage: ./SQLVer.ps1

# Check SQL version

foreach ($svr in get-content "C:\data\AllServers.txt")

{

$con = "server=$svr;database=master;Integrated Security=sspi"

$cmd = "SELECT SERVERPROPERTY('ProductVersion') AS Version, SERVERPROPERTY('ProductLevel') as SP"

$da = new-object System.Data.SqlClient.SqlDataAdapter ($cmd, $con)

$dt = new-object System.Data.DataTable

$da.fill($dt) | out-null

$svr

$dt | Format-Table -autosize

}        
復(fù)制代碼

 

     下面的這個(gè)腳本遵循我用于對(duì)多臺(tái)服務(wù)器執(zhí)行SQL腳本的標(biāo)準(zhǔn)模板。它用foreach循環(huán)讀取服務(wù)器清單,連接到服務(wù)器和執(zhí)行一個(gè)返回用戶(hù)數(shù)據(jù)庫(kù)名稱(chēng)的SQL查詢(xún)。為了這篇文章,我已經(jīng)編輯過(guò)例子的格式,注釋用綠色,PowerShell代碼用藍(lán)色,SQL用紅色。

核對(duì)實(shí)際的數(shù)據(jù)庫(kù)目錄和內(nèi)部數(shù)據(jù)庫(kù)目錄

每個(gè)月我都要核對(duì)實(shí)際的數(shù)據(jù)庫(kù)目錄和一個(gè)被其它應(yīng)用程序作為資源引用的內(nèi)部開(kāi)發(fā)的數(shù)據(jù)庫(kù)目錄系統(tǒng)。

復(fù)制代碼
# inv.ps1

# usage: ./inv.ps1

# Database inventory

foreach ($svr in get-content "C:\data\AllServers.txt")

{

$con = "server=$svr;database=master;Integrated Security=sspi"

$cmd = "SELECT name FROM master..sysdatabases WHERE dbid > 4 AND name NOT IN ('tracedb','UMRdb','Northwind','pubs','PerfAnalysis') ORDER BY name"

$da = new-object System.Data.SqlClient.SqlDataAdapter ($cmd, $con)

$dt = new-object System.Data.DataTable

$da.fill($dt) | out-null

$svr

$dt | Format-Table -autosize

復(fù)制代碼

這個(gè)查詢(xún)按服務(wù)器排序,返回非微軟(Non-Microsoft supplied,我猜想作者是指SqlServer 系統(tǒng)數(shù)據(jù)庫(kù))提供的數(shù)據(jù)庫(kù)名稱(chēng)。之后,我會(huì)將之與一份數(shù)據(jù)庫(kù)目錄系統(tǒng)產(chǎn)生的報(bào)表進(jìn)行對(duì)比。

 

從SysAdmin角色中移除BULTIN\Administrator

這個(gè)腳本定義了一個(gè)函數(shù)而不是foreach循環(huán),允許我在任何服務(wù)器上從SysAdmin角色中移除BULTIN\Administrator組。僅鍵入:

rmba ServerName

此函數(shù)接受一個(gè)參數(shù),與服務(wù)器建立連接,然后執(zhí)行sp_dropsrvrolememeber系統(tǒng)存儲(chǔ)過(guò)程。

復(fù)制代碼
# Remove BUILTIN\Administrators from sysadmin role

function rmba ($s)

{

$svr="$s"

$cn = new-object System.Data.SqlClient.SqlConnection"server=$svr;database=master;Integrated Security=sspi"

$cn.Open()

$sql = $cn.CreateCommand()

$svr

$sql.CommandText = "EXEC master..sp_dropsrvrolemember @loginame = N'BUILTIN\Administrators', @rolename = N'sysadmin';"

$rdr = $sql.ExecuteNonQuery();

}
復(fù)制代碼

這個(gè)腳本節(jié)省我的時(shí)間,因?yàn)槲也槐匾D(zhuǎn)到SSMS去完成這個(gè)任務(wù)。在SMO章節(jié)中您會(huì)發(fā)現(xiàn)兩個(gè)其它我創(chuàng)建的函數(shù),它們用來(lái)列出BULTIN\Administrator和服務(wù)器本地管理員的成員。

--------------------------------------------

如蒙轉(zhuǎn)載或引用,請(qǐng)保留以下內(nèi)容:
Joe's Blog:http://www.cnblogs.com/Joe-T/

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多