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

Chia sẻ: Hoang Nhan | Ngày: | Loại File: PDF | Số trang:13

0
84
lượt xem
28
download

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

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Microsoft Windows PowerShell và SQL Server 2005 SMO – Phần 8

  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]
  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 :
  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,
  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)
  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
  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 : 53b3fe26-b1f1-478a-
  7. 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
  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"
  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 "------------------------"
  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
  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,
  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
  13. MethodName : QuotedIdentifierStatus : True ReturnsNullOnNullInput : TableVariableName : @mirrorinstances Events : Microsoft.SqlServer.Management.Smo.UserDefinedFunctionEvent s Schema : sys Name : fn_EnumCurrentPrincipals Urn : Server[@Name='HOME\SQLEXPRESS']/Database[@Name='AdventureWo rks']/UserDefinedFunction[@Name= 'fn_EnumCurrentPrincipals' and @Schema='sys'] Properties : {AnsiNullsStatus, BodyStartIndex, CreateDate, DataType...} UserData : State : Existing Kết luận Phần 8 của loạt bài này đã giới thiệu cho các bạn cách sử dụng PowerShell và SMO để tìm tất cả các kiểu đối tượng cụ thể và hiển thị các thuộc tính của nó trong một cơ sở dữ liệu đã cho trên máy chủ đã cho.  
Đồng bộ tài khoản