1. Trang chủ
  2. » Công Nghệ Thông Tin

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

13 594 0
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Microsoft Windows PowerShell và SQL Server 2005 SMO – Phần 8
Trường học University of Information Technology
Chuyên ngành Information Technology
Thể loại Tài liệu
Năm xuất bản 2005
Thành phố Ho Chi Minh City
Định dạng
Số trang 13
Dung lượng 220,02 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Phần 6 là nghiên cứu vấn đề backup một cơ sở dữ liệu SQL Server bằng PowerShell và SMO và phần 7 là cách tạo một danh sách các đối tượng trong một cơ sở dữ liệu.. Trong phần 8 này chúng

Trang 1

Microsoft Windows PowerShell và SQL Server 2005 SMO – Phần 8

Nguồn : quantrimang.com 

The MAK

Phần 1 và phần 2 của loạt bài này chúng tôi đã giới thiệu về cài đặt

PowerShell và SMO, WMI cmdlets đơn giản Trong phần 3 chúng tôi đã giới thiệu về cách lập kịch bản cho PowerShell và kết nối SQL Server

Phần 4 đã giới thiệu cách sử dụng kịch bản PowerShell để lặp trong nội dung file

và kết nối các máy chủ khác nhau Phần 5 là giới thiệu về cách tạo cơ sở dữ liệu SQL Server bằng PowerShell và SMO Phần 6 là nghiên cứu vấn đề backup một

cơ sở dữ liệu SQL Server bằng PowerShell và SMO và phần 7 là cách tạo một danh sách các đối tượng trong một cơ sở dữ liệu

Trong phần 8 này chúng tôi sẽ giới thiệu cho các bạn cách sử dụng PowerShell kết hợp với SMO để hiển thị các thuộc tính đối tượng cho tất cả các đối tượng SQL Server

Phương pháp 1

Chúng ta hãy giả dụ rằng sẽ hiển thị đặc tính bảng của tất cả các bảng trong cơ

sở dữ liệu AdventureWorks từ máy chủ “HOME\SQLEXPRESS” Thực thi

cmdlets dưới đây như thể hiện trong hình 1.1 bên dưới

[System.Reflection.Assembly]::LoadWithPartialName

("Microsoft.SqlServer.Smo") | out-null

$srv=New-Object

"Microsoft.SqlServer.Management.Smo.Server" "HOME\SQLEXPRES S"

$db = $srv.Databases["adventureworks"]

foreach ($tbl in $db.tables) {$tbl}

Hình 1.1 Khi cmdlets ở trên được thực thi, nó sẽ hiển thị đặc tính bảng của tất cả các bảng trong cơ sở dữ liệu AdventureWorks, như thể hiện bên dưới (xem hình 1.2)

Kết quả

Parent : [adventureworks]

Trang 2

AnsiNullsStatus : True

CreateDate : 4/26/2006 11:44:31 AM

DataSpaceUsed : 808

DateLastModified : 4/26/2006 11:45:46 AM

FakeSystemTable : False

FileGroup : PRIMARY

HasAfterTrigger : True

HasClusteredIndex : True

HasDeleteTrigger : False

HasIndex : True

HasInsertTrigger : True

HasInsteadOfTrigger : False

HasUpdateTrigger : False

ID : 2130106629

IndexSpaceUsed : 80

IsIndexable : True

IsPartitioned : False

IsSystemObject : False

PartitionScheme :

QuotedIdentifierStatus : True

Replicated : False

RowCount : 701

TextFileGroup : PRIMARY

Events :

Microsoft.SqlServer.Management.Smo.TableEvents

Checks : {}

ForeignKeys :

{FK_Store_Customer_CustomerID,FK_Store_SalesPerson_SalesPer sonID}

PartitionSchemeParameters : {}

RowCountAsDouble : 701

Triggers : {iStore}

Indexes : {AK_Store_rowguid,

IX_Store_SalesPersonID,PK_Store_CustomerID,PXML_Store_Demog raphics}

Statistics : {AK_Store_rowguid,

IX_Store_SalesPersonID,PK_Store_CustomerID}

ExtendedProperties : {MS_Description}

Columns : {CustomerID, Name,

SalesPersonID,Demographics }

FullTextIndex :

Schema : Sales

Name : Store

Urn :

Trang 3

Server[@Name='HOME\SQLEXPRESS']/Database[@Name='adventurewo rks']

/Table[@Name='Store' and

@Schema='Sales']

Properties : {CreateDate, DataSpaceUsed, FakeSystemTable,FileGroup }

UserData :

State : Existing

Parent : [adventureworks]

AnsiNullsStatus : True

CreateDate : 4/26/2006 11:44:31 AM

DataSpaceUsed : 40

DateLastModified : 4/26/2006 11:45:45 AM

FakeSystemTable : False

FileGroup : PRIMARY

HasAfterTrigger : False

HasClusteredIndex : True

HasDeleteTrigger : False

HasIndex : True

HasInsertTrigger : False

HasInsteadOfTrigger : False

HasUpdateTrigger : False

ID : 30623152

IndexSpaceUsed : 120

IsIndexable : True

IsPartitioned : False

IsSystemObject : False

PartitionScheme :

QuotedIdentifierStatus : True

Replicated : False

RowCount : 753

TextFileGroup :

Events :

Microsoft.SqlServer.Management.Smo.TableEvents

Checks : {}

ForeignKeys :

{FK_StoreContact_Contact_ContactID,

FK_StoreContact_ContactType_ContactTypeID, FK_StoreCont act_Store_CustomerID}

PartitionSchemeParameters : {}

RowCountAsDouble : 753

Triggers : {}

Indexes : {AK_StoreContact_rowguid,

Trang 4

IX_StoreContact_ContactID, IX_StoreContact_ContactTypeID, PK_Stor

eContact_CustomerID_ContactID} Statistics : {AK_StoreContact_rowguid,

IX_StoreContact_ContactID, IX_StoreContact_ContactTypeID, PK_Stor

eContact_CustomerID_ContactID} ExtendedProperties : {MS_Description}

Columns : {CustomerID, ContactID,

ContactTypeID, rowguid }

FullTextIndex :

Schema : Sales

Name : StoreContact

Urn :

Server[@Name='HOME\SQLEXPRESS']/Database[@Name='adventurewo rks']/Table[@Name='StoreContact'

and @Schema='Sales']

Properties : {CreateDate, DataSpaceUsed, FakeSystemTable, FileGroup }

UserData :

State : Existing

Hình 1.2

Phương pháp 2

Chúng ta hãy giả dụ rằng sẽ hiển thị đặc tính của tất cả các bảng trong cơ sở dữ

liệu AdventureWorks từ máy chủ “HOME\SQLEXPRESS” Vấn đề này có thể

được thực hiện theo các cmdlets dưới đây (xem hình 1.3)

[reflection.assembly]::LoadWithPartialName("Microsoft.SqlSe rver.Smo") | out-null

$srv=New-Object "Microsoft.SqlServer.Management.Smo.Server"

"HOME\SQLEXPRESS"

$db = $srv.Databases["adventureworks"]

echo "Tables Properties"

echo " -"

foreach ($tbl in $db.Tables) {$tbl}

echo "Synonyms Properties"

echo " -"

foreach ($Synonyms in $db.Synonyms) {$Synonyms}

echo "Stored Procedures Properties"

echo " -"

foreach ($StoredProcedures in $db.StoredProcedures)

Trang 5

{$StoredProcedures}

echo "Assemblies Properties"

echo " -"

foreach ($Assemblies in $db.Assemblies) {$Assemblies} echo "UserDefined Functions Properties" echo " -"

foreach ($UserDefinedFunctions in $db.UserDefinedFunctions) {$UserDefinedFunctions} echo "Views Properties" echo " -"

foreach ($Views in $db.Views) {$Views} echo "ExtendedStoredProcedures Properties" echo " -"

foreach ($ExtendedStoredProcedures in $db) {$ExtendedStoredProcedures} Hình 1.3 Bằng cách thực thi cmdlets ở trên, bạn có thể thấy đặc tính đối tượng của tất cả các đối tượng, kiểu đối tượng khác nhau trong cơ sở dữ liệu AdventureWorks trên máy chủ “HOME\SQLEXPRESS” như thể hiện bên dưới Xem hình 1.4 Kết quả ExtendedProperties : {MS_Description} DatabaseOptions :

Microsoft.SqlServer.Management.Smo.DatabaseOptions Synonyms : {}

Tables : {AWBuildVersion, DatabaseLog, ErrorLog, Department }

StoredProcedures :

{uspGetBillOfMaterials, uspGetEmployeeManagers, uspGetManagerEmployees, uspGetWher eUsedProductID }

Assemblies : {}

UserDefinedTypes : {}

UserDefinedAggregates : {}

FullTextCatalogs : {}

Certificates : {}

SymmetricKeys : {}

AsymmetricKeys : {}

ExtendedStoredProcedures :

{sp_AddFunctionalUnitToComponent, sp_batch_params,

sp_bindsession, sp_control_dbma

Trang 6

sterkey_password } UserDefinedFunctions :

{ufnGetAccountingEndDate, ufnGetAccountingStartDate,

ufnGetContactInformation, ufn

GetDocumentStatusText }

Views : {vEmployee,

vEmployeeDepartment, vEmployeeDepartmentHistory,

vJobCandidate }

Users : {dbo, guest,

INFORMATION_SCHEMA, sys}

Schemas : {db_accessadmin,

db_backupoperator, db_datareader, db_datawriter }

Roles : {db_accessadmin,

db_backupoperator, db_datareader, db_datawriter }

ApplicationRoles : {}

LogFiles : {AdventureWorks_Log} FileGroups : {PRIMARY}

Defaults : {}

Rules : {}

UserDefinedDataTypes : {AccountNumber, Flag, Name, NameStyle }

XmlSchemaCollections :

{HRResumeSchemaCollection,

AdditionalContactInfoSchemaCollection, ManuInstructions SchemaCollection, ProductDescriptionSchemaCollection }

PartitionFunctions : {}

PartitionSchemes : {}

ActiveDirectory : [adventureworks]

MasterKey :

Triggers :

{ddlDatabaseTriggerLog}

ServiceBroker :

Microsoft.SqlServer.Management.Smo.Broker.ServiceBroker Parent : [HOME\SQLEXPRESS] ActiveConnections : 0

AutoCreateStatisticsEnabled : True

AutoUpdateStatisticsEnabled : True

CaseSensitive : False

Collation : Latin1_General_CI_AS CompatibilityLevel : Version90

CreateDate : 6/26/2007 1:07:37 AM DatabaseGuid :

Trang 7

53b3fe26-b1f1-478a-8421-f7d30ae78ba0

DatabaseSnapshotBaseName :

DataSpaceUsage : 101024

DboLogin : True DefaultFileGroup : PRIMARY DefaultFullTextCatalog :

DefaultSchema : dbo ID : 9

IndexSpaceUsage : 59080

IsAccessible : True IsDatabaseSnapshot : False IsDatabaseSnapshotBase : False IsDbAccessAdmin : True IsDbBackupOperator : True IsDbDatareader : True IsDbDatawriter : True IsDbDdlAdmin : True IsDbDenyDatareader : False IsDbDenyDatawriter : False IsDbOwner : True IsDbSecurityAdmin : True IsFullTextEnabled : True IsMailHost : False IsMirroringEnabled : False IsSystemObject : False IsUpdateable : True LastBackupDate : 1/1/0001 12:00:00 AM LastLogBackupDate : 1/1/0001 12:00:00 AM LogReuseWaitStatus : Nothing MirroringFailoverLogSequenceNumber : MirroringID :

MirroringPartner :

MirroringPartnerInstance :

MirroringRoleSequence :

MirroringSafetyLevel : None MirroringSafetySequence :

MirroringStatus : None MirroringWitness :

MirroringWitnessStatus : None

Owner : HOME\MAK

PrimaryFilePath : C:\Program

Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA

RecoveryForkGuid : fec6dd7c-016d-4aaf-a706-9a0a47917486

Trang 8

ReplicationOptions : 0

ServiceBrokerGuid : 8778510e-22e8-489d-b934-3b0d71d77302

Size : 178.75

SpaceAvailable : 16136

Status : Normal

UserName : dbo

Version : 611

Events :

Microsoft.SqlServer.Management.Smo.DatabaseEvents

Name : adventureworks

Urn :

Server[@Name='HOME\SQLEXPRESS']/Database[@Name='adventurewo rks']

Properties : {ActiveConnections, CompatibilityLevel, CreateDate, DataSpaceUsage }

UserData :

State : Existing

Hình 1.4

Phương pháp 3

Hãy kết hợp phương pháp 1 và phương pháp 2 thành một kịch bản PowerShell

để hiển thị thuộc tính của tất cả các đối tượng cho kiểu đối tượng đã cho và cho

cơ sở dữ liệu trên máy chủ đã cho Tạo c:\ps\DisplayObjectProperty.ps1 như

hình bên dưới (xem hình 1.5)

param

(

[string] $ServerName,

[string] $DatabaseName,

[string] $ObjectType

)

[reflection.assembly]::LoadWithPartialName("Microsoft.SqlSe rver.Smo") | out-null

$srv=New-Object "Microsoft.SqlServer.Management.Smo.Server"

"$ServerName"

$db = $srv.Databases["$DatabaseName"]

if ($ObjectType -eq "TABLES")

{

echo "Tables Properties"

Trang 9

echo " -"

foreach ($tbl in $db.Tables) {$tbl}

}

if ($ObjectType -eq "SYNONYMS")

{

echo "Synonyms Properties"

echo " -"

foreach ($Synonyms in $db.Synonyms) {$Synonyms}

}

if ($ObjectType -eq "SP")

{

echo "Stored Procedures Properties"

echo " -"

foreach ($StoredProcedures in $db.StoredProcedures)

{$StoredProcedures}

}

if ($ObjectType -eq "ASM")

{

echo "Assemblies Properties"

echo " -"

foreach ($Assemblies in $db.Assemblies) {$Assemblies}

}

if ($ObjectType -eq "UDF")

{

echo "UserDefined Functions Properties"

echo " -"

foreach ($UserDefinedFunctions in $db.UserDefinedFunctions) {$UserDefinedFunctions}

}

if ($ObjectType -eq "VIEWS")

{echo "Views Properties"

echo " -"

foreach ($Views in $db.Views) {$Views}

}

if ($ObjectType -eq "XP")

{

echo "ExtendedStoredProcedures Properties"

echo " -"

Trang 10

foreach ($ExtendedStoredProcedures in

$db.ExtendedStoredProcedures) {$ExtendedStoredProcedures} }

Hình 1.5 Kịch bản PowerShell ở trên có thể được thực thi như thể hiện bên dưới, xem hình 1.6

./DisplayObjectProperty "HOME\SQLEXPRESS" "AdventureWorks"

"UDF"

Hình 1.6 Giải thích về các tham số:

listobjects là kịch bản listobjects.ps1 trong thư mục c:\ps

HOME là hostname

SQLEXPRESS là tên ví dụ sql server trên host HOME

AdventureWorks là tên cơ sở dữ liệu cư trú trong SQLEXPRESS

UDF là tham số để hiển thị tất cả các User Defined Function có trong cơ

sở dữ liệu AdventureWorks

Tham số hợp lệ cho các kiểu đối tượng là:

• UDF cho User Defined Functions

• TABLES cho Tables

• ASM cho Assemblies

• SP cho Stored Procedures

• XP cho Extended Stored Procedures

• VIEWS cho views

• SYNONYMS cho synonyms

Kịch bản PowerShell ở trên hiển thị đặc tính của đối tượng cụ thể từ cơ sở dữ liệu cụ thể trong một máy chủ cụ thể (hình 1.7)

Kết quả

Parent : [AdventureWorks]

AnsiNullsStatus : True

AssemblyName :

ClassName :

CreateDate : 4/14/2006 4:01:06 AM

DateLastModified : 4/14/2006 4:01:06 AM

Trang 11

ExecutionContext : Caller

ExecutionContextPrincipal :

FunctionType : Inline

ID : -1024577103

ImplementationType : TransactSql

IsDeterministic : False

IsEncrypted : False

IsSchemaBound : False

IsSystemObject : True

MethodName :

QuotedIdentifierStatus : True

ReturnsNullOnNullInput :

TableVariableName :

Events :

Microsoft.SqlServer.Management.Smo.UserDefinedFunctionEvent

s

Schema : sys

Name : fn_dump_dblog

Urn :

Server[@Name='HOME\SQLEXPRESS']/Database[@Name='AdventureWo rks']/UserDefinedFunction[@Name=

'fn_dump_dblog' and

@Schema='sys']

Properties : {AnsiNullsStatus,

BodyStartIndex, CreateDate, DataType }

UserData :

State : Existing

ExtendedProperties : {}

Parameters : {}

Indexes : {}

Columns : {db_name, current_principal, mirroring_role, mirroring_state}

Checks : {}

DataType :

TextBody : begin

insert into @mirrorinstances select databases.name as

db_name,

sys.fn_GetCurrentPrincipal(databases.name) as

current_principal,

db_mirroring.mirroring_role

as mirroring_role,

Trang 12

db_mirroring.mirroring_state as mirroring_state

from sys.database_mirroring db_mirroring, sys.databases databases where

db_mirroring.database_id = databases.database_id

and (databases.is_published

= 1 or databases.is_merge_published = 1)

and

db_mirroring.mirroring_role is NOT NULL

return

end

TextHeader : create function

sys.fn_EnumCurrentPrincipals()

RETURNS @mirrorinstances TABLE (

db_name sysname,

current_principal sysname,

mirroring_role int NULL,

mirroring_state int NULL

)

as

TextMode : True

Parent : [AdventureWorks]

AnsiNullsStatus : True

AssemblyName :

ClassName :

CreateDate : 4/14/2006 4:03:46 AM

DateLastModified : 4/14/2006 4:03:46 AM

ExecutionContext : Caller

ExecutionContextPrincipal :

FunctionType : Table

ID : -485928087

ImplementationType : TransactSql

IsDeterministic : False

IsEncrypted : False

IsSchemaBound : False

IsSystemObject : True

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

TỪ KHÓA LIÊN QUAN