GV Phi Loan - Khoa CNTT – HUI

1

Nội dung

• Tổng quan về Powershell • Window PowerShell • Powershell Script • SQL Server PowerShell

– SMO – Provider – Cmdlet

GV Phi Loan - Khoa CNTT – HUI

2

Tổng quan về Powershell

• PowerShell là môi trường kịch bản dùng cho

nền Microsoft Windows.

• Bằng cách sử dụng Powershell, người quản trị không cần phải truy xuất vào môi trường Visual Studio, các chuyên gia IT thích viết script hơn là dùng tools có sẵn của SQL Server – PowerShell cung cấp việc truy xuất đến hầu hết

.NET Framework

GV Phi Loan - Khoa CNTT – HUI

3

Tổng quan về Powershell

• Có thể download miễn phí PowerShell

www.microsoft.com/powershell/

• Powershell được tự động cài đặt khi cài

đặt: – Từ SQL Server 2008 trở đi – Từ Windows Server 2008 trở đi (không được cài sẵn trong Windows 2003, Windows XP và Windows Vista)

GV Phi Loan - Khoa CNTT – HUI

4

Tại sao nên sử dụng Powershell

• Microsoft đã thiết kế PowerShell như 1 phần của common engineering criteria (CEC) cho tất cả sản phẩm server của Microsoft – Các administrator chung của hệ thống dù

không có kiến thức về SQL Server vẫn có thễ hiểu được các script về quản lý tự động SQL Server

– Công ty có thể vận hành hiệu quả hơn với ngôn ngữ kịch bản chung này và các nhà quản trị với kỹ năng dùng PowerShell sẽ trở nên đa năng hơn.

GV Phi Loan - Khoa CNTT – HUI

5

Cơ bản về Powershell

• Như mọi ngôn ngữ khác, PowerShell bao

gồm: – Commands, variables, functions, flow control methods, and other features necessary to enable work to be done. • Là ngôn ngữ thông dịch (interpreted

language)

GV Phi Loan - Khoa CNTT – HUI

6

cmdlet (command-let)

• Cmdlet là 1 tiện ích dòng lệnh với quy

ước đặt tên là verb-noun, nên dễ nhận biết được mỗi lệnh dùng để làm gì. • Microsoft cung cấp khoảng 130 cmdlet

trong PowerShell 1.0. – Phiên bản 2.0 (2009) được bổ sung thêm 1

số cmdlet.

GV Phi Loan - Khoa CNTT – HUI

7

Alias của cmdlet

• Cmdlets thường được gán bí danh, cho phép chạy 1 cmdlet hoặc bằng chính tên lệnh hay thông qua các bí danh của nó. • Ví dụ: để xem nội dung thư mục hiện hành,

lệnh của Powershell là Get-ChildItem, nhưng người dùng DOS quen dùng lệnh dir hơn, người dùng Unix quen dùng lệnh ls hơn. Cả 2 lệnh dir và ls được gán làm alias của lệnh Get-ChildItem của Powershell.

GV Phi Loan - Khoa CNTT – HUI

8

Các tính chất của Powershell

• Không phân biệt chữ hoa (not case

sensitive)

• Có khả năng pipe các đối tượng.

– Kết quả của lệnh này là input của lệnh kế

tiếp – Ví dụ:

get-process | sort-object workingset - descending |select-object -first 10

GV Phi Loan - Khoa CNTT – HUI

9

Khởi động Powershell • Có thể khởi động theo nhiều cách:

– Start ➪ Programs ➪ Windows PowerShell

1.0, chọn Windows PowerShell.

– Từ dấu nhắc lệnh của DOS, gõ vào lệnh

‘‘powershell’’

– Dùng lệnh sqlps.exe – Khởi động PowerShell trong SQL server

Management studio

• Nhận biết môi trường Powershell bằng dấu

nhắc lệnh PS>

GV Phi Loan - Khoa CNTT – HUI

10

Khai báo biến

• Tên biến phải bắt đầu bằng dấu $ • Kiều dữ liệu của biến được đặt trước

tên biến và trong cặp []

• Ví dụ:

– PS> $counter = 7  biến số nguyên counter

có giá trị khởi tạo là 7

– PS> [string] $counter = ‘7’  biến chuỗi

counter có giá trị khởi tạo là ‘7’

GV Phi Loan - Khoa CNTT – HUI

11

Khai báo biến tập hợp

• Biến có thể chứa 1 đối tượng hay 1 tập hợp

các đối tượng.

• Để tạo biến tập hợp, chỉ việc gán 1 danh

sách các giá trị cho biến – Ví dụ: PS> $stuff = 1,2,4,6,8  biến $stuff

chứa 1 tập hợp các số nguyên

• Để truy xuất các phần tử của biến tập hợp

dùng chỉ số phần tử: – Ví dụ: PS> $stuff[2]  4

GV Phi Loan - Khoa CNTT – HUI

12

Biến tập hợp

• PowerShell cung cấp 2 dạng foreach để truy xuất các đối tượng của 1 tập hợp.

• Dạng 1:

PS> $stuff | foreach-object {write-output $_} – Biến $_ dùng để chỉ đối tượng hiện hành

• Dạng 2:

PS> foreach ($thing in $stuff) {write-output $thing}

GV Phi Loan - Khoa CNTT – HUI

13

Toán tử so sánh (Comparition operator)

GV Phi Loan - Khoa CNTT – HUI

14

Lệnh Get-Content

• Cú pháp: Get-Content ‘path\filename’ • Ý nghĩa: lệnh sẽ đọc từng dòng nội dung

file

• Ứng dụng: thường lệnh này được pipe

với 1 biến tập hợp – Ví dụ:

$servers = Get-Content ‘servers.txt’ $server| foreach-object {write-output $_}

GV Phi Loan - Khoa CNTT – HUI

15

Lệnh Get-Help

• Cú pháp: Get-Help • Ý nghĩa: để hổ trợ bất kz cmdlet • Ví dụ: để xem hổ trợ của lệnh Get_Help Get-Help Get-Help

GV Phi Loan - Khoa CNTT – HUI

16

GV Phi Loan - Khoa CNTT – HUI

17

GV Phi Loan - Khoa CNTT – HUI

18

Ví dụ

if ($servers[0].Length -gt 0) {

#work }

get-service | where-object {$_.Status -eq "Running"}

Note - Chú thích bắt đầu bằng k{ hiệu # - Cặp ,- để xác định phạm vi thao tác

GV Phi Loan - Khoa CNTT – HUI

19

Tạo script

• Dùng 1 vài lệnh ngay tại cửa sổ lệnh của PowerShell để đánh giá tình trạng của hệ thống hay các thông tin khác. Nhưng điểm mạnh thực sự của PowerShell là viết các script.

• Có trong tay 1 tập hợp các script tốt để

thực thi các chức quản trị thông thường là dấu hiệu của một nhà quản trị giỏi .

GV Phi Loan - Khoa CNTT – HUI

20

File script

• PowerShell script tương đương với 1 file CMD của Windows hay 1 file batch của MS-DOS.

• File có phần mở rộng là.ps1

GV Phi Loan - Khoa CNTT – HUI

21

Chạy PowerShell script

• Sau khi cài đặt PowerShell, cần phải xác

lập chính sách thực thi (Execution Policy) thích hợp

• Lệnh Set-ExecutionPolicy cho phép thay đổi chọn lựa của người dùng đối với chính sách thực thi của shell.

GV Phi Loan - Khoa CNTT – HUI

22

Lệnh xác lập chính sách thực thi

Set-ExecutionPolicy [-executionPolicy] Policy

{ Unrestricted | RemoteSigned | AllSigned | Restricted | Default | Bypass | Undefined} [[-Scope] ExecutionPolicyScope ] [-Force] [-whatIf][-confirm] [CommonParameters]

• Chính sách mặc định là restricted đối với mọi

người dùng của máy tính

GV Phi Loan - Khoa CNTT – HUI

23

Ví dụ

• Để xác lập chính sách thực thi shell của người dùng là RemoteSigned và sau đó hiển thị chính sách thực thi hiện có

PS C:\> set-executionpolicy remotesigned;

get-executionPolicy

GV Phi Loan - Khoa CNTT – HUI

24

Chạy PowerShell script

• Có 2 cách để chạy 1 script của PowerShell • Cách 1 (default): gọi file script bằng toán

tử call (&) – Biến và hàm của script sẽ bị xóa khi script

kết thúc

• Cách 2: dùng dot source (.) file script

– Biến và hàm vẫn tiếp tục tồn tại khi script

kết thúc

GV Phi Loan - Khoa CNTT – HUI

25

Cách 1: chạy file script

PS C:\> & "C:\script\My first Script.ps1" • Nếu đường dẫn không có khoảng trắng,

có thể bỏ qua “” và toán tử &

PS C:\> C:\script\Myscript.ps1 • Nếu script nằm trong thư mục hiện hành,

phải chỉ rõ thư mục này .\ (hay ./)

PS C:\> .\Myscript.ps1

GV Phi Loan - Khoa CNTT – HUI

26

Cách 2: chạy file script

PS C:\> . "C:\script\My first Script.ps1" • Nếu chạy 1 file script trong thư mục hiện

hành

PS C:\> . .\Myscript.ps1"

GV Phi Loan - Khoa CNTT – HUI

27

Lệnh Get-WMIObject

• Windows Management Instrumentation (WMI) cung cấp thông tin về các server vật l{ mà trên đó SQL Server đang chạy thông qua các truy vấn (queries)

• Lệnh Get-WMIObject ( có alias là gwmi)

cung cấp thông tin của WMI.

GV Phi Loan - Khoa CNTT – HUI

28

File getsysinfo.ps1

GV Phi Loan - Khoa CNTT – HUI

29

Khai báo hàm

• Dạng 1:

• Dạng 2:

Function MyFunction

Function MyFunction { param (

($param) { #work

}

[int]$x = 7, [int]$y = 9 ) #work

}

• Sử dụng khối param để

khai báo các tham số bên trong hàm

GV Phi Loan - Khoa CNTT – HUI

30

Tạo PowerShell profile

• Profile sẽ nạp tự động SMO vào

PowerShell lúc khởi động.

• Để kiểm tra xem đã có profile chưa

Test-Path $profile Trả về true nếu đã có profile • Để kiểm tra đường dẫn nơi chứa

profile.ps1

$profile

GV Phi Loan - Khoa CNTT – HUI

31

Tạo PowerShell profile

• Thường nơi chứa profile là: C:\Users\Phi Loan\Documents\WindowsPowerShell • Tên file mặc định là:

Microsoft.PowerShell_profile.ps1

GV Phi Loan - Khoa CNTT – HUI

32

SQL SERVER POWERSHELL

GV Phi Loan - Khoa CNTT – HUI

33

SQL Server 2012 supports Windows PowerShell, which is a powerful scripting shell that lets administrators and developers automate server administration and application deployment

GV Phi Loan - Khoa CNTT – HUI

34

Các thành phần của SQL Server Powershell

• SQL Server cung cấp 1 module về Windows PowerShell có tên sqlps.

• Sqlps nạp các thành phần của SQL Server vào môi trường Windows PowerShell 2.0.

GV Phi Loan - Khoa CNTT – HUI

35

Các thành phần của SQL Server Powershell

• sqlps sẽ nạp 2 snap-in vào PowerShell:

– SQL Server provider – Set of cmdlets

• Và nạp cả SQL Server Management

Object (SMO) assemblies được dùng bởi provider và cmdlets

GV Phi Loan - Khoa CNTT – HUI

36

Chạy SQL Server PowerShell

• Cách 1: chạy Windows PowerShell, rồi

nạp sqlps

• Cách 2: khởi động instance, nhấp phải và

chọn lệnh Start PowerShell

GV Phi Loan - Khoa CNTT – HUI

37

Nạp sqlps vào Windows PowerShell

• Dùng lệnh Set-ExecutionPolicy cmdlet để

đặt execution policy các script là remotedSigned

• Dùng lệnh Import-Module cmdlet để

nạp sqlps

Import-Module “sqlps” -DisableNameChecking

GV Phi Loan - Khoa CNTT – HUI

38

SQL Server Management Objects (SMO)

• SMO là các đối tượng giúp quản l{ Microsoft SQL theo kiểu lập trình (programmatic way)

GV Phi Loan - Khoa CNTT – HUI

39

Các đối tượng SMO

• Đối tượng cơ bản là Server, việc quản l{ server sẽ bắt đầu khi đối tượng Server kết nối đến 1 server.

• Các đối tượng SMO được dùng để quản

l{ các CSDL của người dùng.

GV Phi Loan - Khoa CNTT – HUI

40

GV Phi Loan - Khoa CNTT – HUI

41

SqlConnection

GV Phi Loan - Khoa CNTT – HUI

42

Ví dụ: script để xuầt ra 25 người trong bảng Person

#employeeextract.ps1 $cn = new-object system.data.SqlClient.SqlConnection("Data Source=PHILOAN\PL1; Integrated Security=SSPI;Initial Catalog=AdventureWorks2008");

$ds = new-object "System.Data.DataSet" "dsPersonData" $q = "SELECT TOP 25 [Title]" $q = $q + " ,[FirstName]" $q = $q + " ,[LastName]" $q = $q + " FROM [AdventureWorks2008].[Person].[Person]" $da = new-object "System.Data.SqlClient.SqlDataAdapter" ($q, $cn) $da.Fill($ds) $dtPerson = new-object "System.Data.DataTable" "dtPersonData" $dtPerson = $ds.Tables[0] $dtPerson | FOREACH-OBJECT { [string]$_.Title + ": " + $_.FirstName + ", " +

$_.LastName }

GV Phi Loan - Khoa CNTT – HUI

43

Scripting SQL Server Tasks

• Administrators có thể tạo 2 loại script cơ

bản: – administrative tasks: thực hiện các chức

quản trị thông thường

– data-based tasks.

GV Phi Loan - Khoa CNTT – HUI

44

Nhiệm vụ quản trị

• Nhiệm vụ quan trọng nhất là backup CSDL. • Để biết nơi chứa các file backup, không thể

dùng lệnh Transact-SQL nhưng có thể dễ dàng sử dụng thuộc tính BackupDirectory từ tập hợp Settings của server.

GV Phi Loan - Khoa CNTT – HUI

45

SMO backup properties and methods

GV Phi Loan - Khoa CNTT – HUI

46

GV Phi Loan - Khoa CNTT – HUI

47

Nhiệm vụ về dữ liệu

• Tuy cách tốt nhất để tạo và sửa đổi các bảng trong SQL Server là dùng các lệnh Transact-SQL, nhưng trong 1 số trường hợp cần nhúng việc tạo và chỉnh sửa bảng này vào 1 ứng dụng thì việc dùng script của powerShell lại trở nên thuận tiện hơn.

GV Phi Loan - Khoa CNTT – HUI

48

SMO Database Table, Index, and Foreign Key objects

GV Phi Loan - Khoa CNTT – HUI

49

SMO Database Table, Index, and Foreign Key objects (tt)

GV Phi Loan - Khoa CNTT – HUI

50

Ví dụ: ý nghĩa mỗi lệnh

PS> $s = new-object

(’Microsoft.SqlServer.Management.Smo.Server’) ‘PHILOAN\PL1’

PS> $db = $s.Databases["AdventureWorks2008"] PS>$db PS> $tb= $db.tables PS>$tb | foreach –object {write-output $_.name} PS> $t1 = $tb*“ErrorLog”+ PS> $t1

GV Phi Loan - Khoa CNTT – HUI

51

Ví dụ

• Giả sử AdventureWorks vừa tiếp quản 1 công ty khác. Nhân viên của công ty này cần được nhập vào ứng dụng quản l{ nhân sự HR của AdventureWorks, nhưng các mục dữ liệu chính từ các bản ghi của công ty cũ cần được giữ lại trong 1 thời gian ngắn để tham khảo.

 Cần tạo 2 bảng dữ liệu mới.

GV Phi Loan - Khoa CNTT – HUI

52

Ví dụ

• Bảng 1: có tên là AcquisitionCompany, chứa tên và ngày được tiếp quản, cùng với CompanyID • Bảng 2: có tên là AcquisitionEmployee, chứa

employee ID cũ của nhân viên, ngày bắt đầu làm, số giờ còn được phép nghĩ trong năm, + 1 cột chỉ ra nhân viên có nhận được phần thưởng Star Employee hay không? + 1 cột tham chiếu đến bảng AcquisitionCompany.

• Cả hai bảng đều thuộc schema HumanResources

GV Phi Loan - Khoa CNTT – HUI

53

GV Phi Loan - Khoa CNTT – HUI

54

GV Phi Loan - Khoa CNTT – HUI

55

GV Phi Loan - Khoa CNTT – HUI

56

GV Phi Loan - Khoa CNTT – HUI

57

GV Phi Loan - Khoa CNTT – HUI

58

GV Phi Loan - Khoa CNTT – HUI

59

GV Phi Loan - Khoa CNTT – HUI

60

Ví dụ

• Sử dụng CSDL AdventureWorks2008 để xuất ra thông tin nhân viên từng phòng và lưu vào file vật l{ cho mỗi phòng, mỗi cột phân cách nhau dấu phầy.

• Phương thức ExecuteReader trả về đối

tượng DataReader và mỗi cột được khôi phục bằng phương thức GetValue.

(page 200)

GV Phi Loan - Khoa CNTT – HUI

61

SMO scripting objects

• Trong lúc tạo hay làm việc với các đối

tượng trong SMO, các đối tượng này có thể được script để lưu trữ và sử dụng lại sau đó.

GV Phi Loan - Khoa CNTT – HUI

62

SMO scripting objects

GV Phi Loan - Khoa CNTT – HUI

63

Các tùy chọn của scripter

• Server: cho phép đối tượng Scripter nối đến server. • ScriptDrops: xác định script có chứa lệnh DROP hay CREATE đối tượng hay không. Nếu tùy chọn là true, script sẽ chứa lệnh DROP cho từng đối tượng, nhưng tùy chọn là false sẽ làm cho scripter phát ra lệnh CREATE các đối tượng.

• WithDependencies : nếu là true, sẽ làm cho các đối tượng được script theo thứ tự tương ứng với sự phụ thuộc của 1 đối tượng này với 1 đối tượng khác.

• FileName: chứa đường dẫn đầy đủ của file kết quả.

GV Phi Loan - Khoa CNTT – HUI

64

Các tùy chọn của scripter (tt)

• IncludeHeaders: nếu là true, sẽ chứa

comment chỉ ra tên của đối tượng và thời điểm đối tượng được tạo

• AppendToFile: nếu là đúng thì sẽ chép vào cuối, nếu là false thì sẽ chép đè vào file có sẵn

• Mặc định kết quả script sẽ gửi kết quả ra

console, nếu ToFileOnly là true, thì kết quả sẽ gửi vào file

GV Phi Loan - Khoa CNTT – HUI

65

Các tùy chọn của scripter (tt)

• ClusteredIndexes: nếu là True sẽ đưa chỉ

mục clustered của bảng vào script

• Indexes: nếu là True sẽ cho phép đưa các

chỉ mục non-clustered vào script

• DriAll: nếu là True sẽ đưa tất cả các đối tượng được khai báo bảo toàn tham chiếu (referential integrity) sẽ được đưa vào script.

GV Phi Loan - Khoa CNTT – HUI

66

Provider

• Provider là tập hợp các tool được thiết kế để dễ dàng truy xuất vào dữ liệu. • Để kết hợp với SQL Server, provider tạo sẵn 1 ổ đĩa PowerShell kết nối trực tiếp với SQL Server, và 1 tập cmdlets để tương tác với SQL Server từ PowerShell.

GV Phi Loan - Khoa CNTT – HUI

67

SQL Server PowerShell Provider

• Provider tạo 1 phân cấp (hierarchy) cho

các đối tượng của SQL Server dưới dạng các path ( như path của các file hệ thống) – Cho phép user sử dụng path để chuyển đến các đối tượng và dùng các phương thức của mô hình SMO để thực thi các action trên các đối tượng.

GV Phi Loan - Khoa CNTT – HUI

68

Lợi ích của SQL Server PowerShell Provider

• Thông qua path dễ dàng tương tác với

các đối tượng của instance. – Cho phép sử dụng các lệnh viết tắt (alias) tương tự các lệnh trong cửa sổ lệnh DOS như cd, dir, …

GV Phi Loan - Khoa CNTT – HUI

69

Nhiệm vụ của Provider

• Dùng các lệnh cmdlets để chuyển đến

cac node trong 1 path, và nhận danh mục các đối tượng tại mỗi node.

• Dùng các method và property của SMO để báo cáo và thực hiện công việc trên các node trong path.

GV Phi Loan - Khoa CNTT – HUI

70

Nhiệm vụ của Provider

• Describes how to convert a SMO Uniform Resource Name (URN) to a SQL Server provider path.

• Describes how to open SQL Server

Authentication connections by using the SQL Server provider. By default, the provider uses Windows Authentication connections made using the credentials of the Windows account running the Windows PowerShell session

GV Phi Loan - Khoa CNTT – HUI

71

Navigate SQL Server PowerShell Paths

• Provider biểu diễn 1 tập các đối tượng trong 1 instance theo cấu trúc tương tự như file path – Có thể chuyển đổi qua lại giữa các path. – Tạo mới 1 ổ đĩa thay cho 1 path dài dòng.

GV Phi Loan - Khoa CNTT – HUI

72

SQL Server provider implements a subset of the provider cmdlets

GV Phi Loan - Khoa CNTT – HUI

73

Ví dụ

## Trả về tên hiện hành và các máy tính khác có

kết nối SQL hay WMI Set-Location SQLSERVER:\SQL Get-ChildItem

## Liệt kê các instances của Database Engine

trên máy tính Set-Location SQLSERVER:\SQL\localhost Get-ChildItem

GV Phi Loan - Khoa CNTT – HUI

74

Ví dụ

## Liệt kê các các đối tượng trong default instance của

máy tính Set-Location SQLSERVER:\SQL\localhost\DEFAULT Get-ChildItem

## Liệt kê các DB trong default instance. Dùng -force để

bao gồm cả DB hệ thống Set-Location SQLSERVER:\SQL\localhost\DEFAULT\Databases Get-ChildItem -force

GV Phi Loan - Khoa CNTT – HUI

75

Ví dụ

• Để xem danh mục các bảng trong

AdventureWorks2008 Set-Location SQLSERVER:\SQL\localhost\PL1\Databases Get-ChildItem tables

• Để xem danh sách các cột trong bảng

Product.Product

• Get-ChildItem tables\Production.Product\Columns

GV Phi Loan - Khoa CNTT – HUI

76

Tạo ổ đĩa tùy chọn

New-PSDrive [-Name]

[-PSProvider] [-Root] [-Description [Scope ]

-PSProvider có các giá trị là FileSystem,

Registry

GV Phi Loan - Khoa CNTT – HUI

77

Ví dụ Tạo ổ đĩa tùy chọn

New-PSDrive -Name Z

–psprovider systemfile -Root SQLSERVER:\SQL\localhost \PL1\Databases\ AdventureWorks2008

Set-Location Z:\Tables\Purchasing.Vendor

GV Phi Loan - Khoa CNTT – HUI

78

Làm việc với Path node

• Hai loại action:

– Chạy các lệnh Windows PowerShell cmdlet. – Gọi các method tùy theo đối tượng. Ví dụ

nếu đang ở 1 node là Database, có thể dùng các method và property của lớp Database

• PowerShell để quản l{ các đối tượng

trong instance, không dùng để làm việc với dữ liệu trong database

GV Phi Loan - Khoa CNTT – HUI

79

Lệnh get-member

• Xem các method và property của đối

tượng

• Ví dụ $MyDBVar = New-Object

Microsoft.SqlServer.Management.SMO.Database

$MyDBVar | Get-Member –Type Methods $MyDBVar | Get-Member -Type Properties

GV Phi Loan - Khoa CNTT – HUI

80

Lệnh get-item

Get-item [-LiteralPath] [-Exclude ] [-Include ] [-Force]

Liệt kê các item ở vị trí xác định

GV Phi Loan - Khoa CNTT – HUI

81

Ví dụ Lệnh get-item

• Get-item . • Get-item * • Get-item c:\ • .LastAccessTime • Get-item c:\Windows\* -include *.* -

exclude w*

GV Phi Loan - Khoa CNTT – HUI

82

Lệnh get-item

• Liệt kê các thuộc tính của collection database Set-Location

SQLSERVER:\SQL\localhost\DEFAULT\Databases

Get-Item . | Get-Member -Type Properties • Liệt kê các thuộc tính của đối tượng Set-Location

SQLSERVER:\SQL\localhost\DEFAULT\Databases\Adven tureWorks2008

Get-Item . | Get-Member -Type Properties

GV Phi Loan - Khoa CNTT – HUI

83

Sử dụng các SMO method và property

• Xem danh mục các bảng trong schema

Sales

cd SQLSERVER:\SQL\localhost\PL1\Databases

\adventureworks2008

cd tables dir| where {$_.schema –eq “Sales”}

GV Phi Loan - Khoa CNTT – HUI

84

Ổ đĩa PSDrive – SQLSERVER

• PowerShell cung cấp khả năng quản l{

(navigate) không chỉ hệ thống file trên đĩa mà cả registry của hệ thống như thể nó chỉ là 1 hệ thống file.

• SQL Server provider bổ sung 1 ổ đĩa PSDrive

mới được gọi là SQLSERVER:

• Lệnh Set-Location( alias là cd) được dùng thay đổi thư mục trong ổ đĩa SQLSERVER: và SQL Server có thể được quản l{ như hệ thống file.

GV Phi Loan - Khoa CNTT – HUI

85

Ổ đĩa PSDrive – SQLSERVER

• Bốn thư mục chính trong ổ đĩa SQLSERVER: – SQL: cung cấp việc truy xuất đến database engine, SQL Server Agent, Service Broker, Database Mail, ..

– SQLPolicy: cung cấp việc truy xuất đến policy-

based management

– SQLRegistration: cung cấp việc truy xuất đến

Registered Servers

– DataCollection: cho phép truy xuất đến các đối tượng Data Collector quản l{ Data Warehouse

GV Phi Loan - Khoa CNTT – HUI

86

Database Engine cmdlets

• Các lệnh dùng cho DB Engine chủ yếu để chạy các script T-SQL có sẵn từ script mới của PowerShel, đánh giá các chính sách quản l{ (management policies)

GV Phi Loan - Khoa CNTT – HUI

87

Lệnh Invoke-Sqlcmd

• Dùng để chạy các script chứa các lệnh Transact-SQL được hổ trợ bởi tiện ích sqlcmd – Các lệnh nào mà sqlcmd chạy được thì

Invoke-Sqlcmd chạy được

GV Phi Loan - Khoa CNTT – HUI

88

GV Phi Loan - Khoa CNTT – HUI

89

Ví dụ lệnh Invoke-Sqlcmd

Invoke-Sqlcmd -Query "SELECT GETDATE() AS

TimeOfQuery;" -ServerInstance “PhiLoan\PL1“

Invoke-Sqlcmd -InputFile

"C:\MyFolder\TestSQLCmd.sql"

|Out-File -filePath

C:\MyFolder\TestSQLCmd.rpt"

GV Phi Loan - Khoa CNTT – HUI

90

Run Windows PowerShell Steps in SQL Server Agent

• Script của Windows PowerShell có thể

chạy ở 1 job step trong SQL Server Agent bằng 1 trong 2 cách sau: – Tạo PowerShell Job Step – Tạo Command Prompt Job Step

GV Phi Loan - Khoa CNTT – HUI

91

Tạo PowerShell Job Step

• Trong hộp thoại New Job Step dialog

trong SQL Server Agent. • Chọn Type là PowerShell. • Trong hộp Run as chọn service account. • Trong hộp Command, nhập cú pháp chạy PowerShell script hoặc nhấp nút open đề chọn 1 file chưa cú pháp của script

GV Phi Loan - Khoa CNTT – HUI

92

Tạo Command Prompt Job Step

• Trong hộp thoại New Job Step, chọn Type

là Operating system (CmdExec).

• Trong hộp Run as chọn service account • Trong hộp Process exit code of a

successful gõ vào giá trị 0 đến 999999.

• Trong hộp Command, gõ vào

powershell.exe với tham số thích hợp để xác định PowerShell script nào sẽ chạy.

GV Phi Loan - Khoa CNTT – HUI

93