Tài liệu Microsoft Windows PowerShell và SQL Server 2005 SMO – Phần 3 docx

10 429 0
Tài liệu Microsoft Windows PowerShell và SQL Server 2005 SMO – Phần 3 docx

Đang tải... (xem toàn văn)

Thông tin tài liệu

Microsoft Windows PowerShell SQL Server 2005 SMO Phần 3 Ngu ồn : quantrimang.com  The MA K Phần I Phần II của loạt bài này đã chỉ dẫn các thiết lập PowerShell SMO, các cmdlet WMI đơn giản. Phần 3 này sẽ giới thiệu cách viết mã cho cmdlet PowerShell thực thi chúng. Mã kịch bản là yếu tố cần thiết cho các thao tác tự động lặp đi lặp lại. Chính sách thực thi 4 loại chính sách thực thi khác nhau của Windows PowerShell là Restricted, AllSigned, RemoteSigned Unrestricted. Chúng ta sẽ tìm chính sách thực thi của Windows PowerShell trên vùng làm việc. [Hình 1.0] Cmdlet: Get-executionpolicy Kết quả: Restricted Hình 1.0 Giả sử ta có dòng code sau trên PowerShell script 'a.ps1'. [Hình 1.1] Echo “test” Hình 1.1 Nếu thử thực hiện mã lệnh khi chính sách thực thi của PowerShell là restricted, thì sẽ xuất hiện thông báo lỗi sau. [Hình 1.2] Lệnh thực hiện mã PowerShell . /a.ps1 Kết quả File C:\ps\a.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_signing" for more details. At line:1 char:3 + ./a <<<< Hình 1.2 Hãy thay đổi chính sách thực thi thành unrestricted. Lệnh thực hiện mã PowerShell đã có thể được thi hành bởi cmdlet sau. [Hình 1.3] Hình 1.3 Bây giờ hãy thử thực thi đoạn mã a.ps1 như hiển thị trong hình dưới đây. [Hình 1.4] Lệnh ./a Kết quả Test Hình 1.4 Điều khiển Input trong mã PowerShell Khi thực hiện các thao tác lặp đi lặp lại, chúng ta thích ứng dụng để tương tác hơn xây dựng ứng dụng để đòi hỏi đầu vào từ người sử dụng. Ta có thể thực hiện t ương tự với PowerShell. Hãy tạo một mã PowerShell chấp nhận tên của trường SQL Server tên cơ sở dữ liệu. Ngoài ra, hãy để PowerShell hiển thị tất cả các bảng trên cơ sở dữ liệu đó. Điều này có thể được thực hiện với cmdlet read-host. Thí dụ 1: [Hình 1.5] Read-host “Please Enter Second Number”. Hình 1.5 Thí dụ 2 Chúng ta có thể gán giá trị cmdlet là một biến số. [Hình 1.6] $a=read-host "Please Enter Second Number" $a Hình 1.6 Kết hợp thí dụ 1 thí dụ 2 kết nối với SQL Server. Tạo mã PowerShell có tên connectsql.ps1. [Hình 1.7] $SQLSERVER=read-host "Enter SQL Server Name:" $Database=read-host "Enter Database Name:" $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Server=$SQLSERVER;Database=$DATABASE;Integrated Security=True" $SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = "select name from sysobjects where type='u'" $SqlCmd.Connection = $SqlConnection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet) $SqlConnection.Close() $DataSet.Tables[0] Hình 1.7 Bây giờ hãy thực hiện mã connectsql.ps1 trên. [Hình 1.8] ./connectsql Enter SQL Server Name:: HOME\SQLEXPRESS Enter Database Name:: AdventureWorks Chú ý : HOME là máy chủ SQLEXPRESS là tên ví dụ của SQL Server. Hãy thay thế tên này bằng tên máy chủ SQL Server của bạn. AdventureWorks là tên cơ sở dữ liệu. Bạn cũng chú ý thay thế tên cơ sở dữ liệu này cho tương ứng với tên cơ sở dữ liệu trên máy chủ. Hình 1.8 Mã connectsql gán giá trị được nhập vào các biến $SQLSERVER $DATABASE, kết nối chuỗi sử dụng các biến đó hiển thị ra kết quả. Kết quả: name ---- ProductProductPhoto StoreContact Address ProductReview TransactionHistory AddressType ProductSubcategory AWBuildVersion TransactionHistoryArchive ProductVendor BillOfMaterials UnitMeasure Vendor PurchaseOrderDetail Contact VendorAddress VendorContact PurchaseOrderHeader ContactCreditCard WorkOrder ContactType CountryRegionCurrency WorkOrderRouting CountryRegion CreditCard Culture Currency SalesOrderDetail CurrencyRate Customer SalesOrderHeader CustomerAddress Department Document Employee SalesOrderHeaderSalesReason SalesPerson EmployeeAddress EmployeeDepartmentHistory EmployeePayHistory SalesPersonQuotaHistory Illustration SalesReason Individual SalesTaxRate JobCandidate Location SalesTerritory Product SalesTerritoryHistory ScrapReason Shift ProductCategory ShipMethod ProductCostHistory ProductDescription ShoppingCartItem ProductDocument ProductInventory SpecialOffer ProductListPriceHistory SpecialOfferProduct ProductModel StateProvince ProductModelIllustration DatabaseLog ProductModelProductDescriptionCulture ErrorLog Store ProductPhoto Tuy nhiên, khi viết mã tự động, bạn không muốn người dùng nhập dữ liệu. Thay vào đó, ta nên chấp nhận các tham số. Hãy nâng cấp đoạn mã trên bằng cách chấp nhận các tham số.[Hình 1.9] param ( [string] $SQLSERVER, [string] $Database ) $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = "Server=$SQLSERVER;Database=$DATABASE;Integrated Security=True" $SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = "select name from sysobjects where type='P'" $SqlCmd.Connection = $SqlConnection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet) $SqlConnection.Close() $DataSet.Tables[0] Hình 1.9 Thực hiện các đoạn mã như hình dưới. [Hình 2.0] Hình 2.0 connectsql gán các giá trị như một tham số tới các biến riêng biệt $SQLSERVER $DATABASE, kết nối các chuỗi sử dụng các biến đó hiển thị ra kết quả. Kết quả name ---- uspPrintError uspLogError uspGetBillOfMaterials uspGetEmployeeManagers uspGetManagerEmployees uspGetWhereUsedProductID uspUpdateEmployeeHireInfo uspUpdateEmployeeLogin uspUpdateEmployeePersonalInfo   . Microsoft Windows PowerShell và SQL Server 2005 SMO – Phần 3 Ngu ồn : quantrimang.com  The MA K Phần I và Phần II của loạt bài này. hợp thí dụ 1 và thí dụ 2 kết nối với SQL Server. Tạo mã PowerShell có tên connectsql.ps1. [Hình 1.7] $SQLSERVER=read-host "Enter SQL Server Name:"

Ngày đăng: 22/12/2013, 02:16

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan