Tải bản đầy đủ (.pdf) (11 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (484.19 KB, 11 trang )

Microsoft Windows PowerShell và SQL Server 2005 SMO – Phần 9
Ngu
ồn : quantrimang.com
 
The MA
K
Sử dụng PowerShell và SMO để tạo kịch bản SQL Server

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 nghiên cứu vấn đề backup một
cơ sở dữ liệu SQL Server bằng PowerShell và SMO, 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 và phần 8 là cách liệt kê tất cả
các thuộc tính của các đối tượng trong cơ sở dữ liệu bằng PowerShell và SMO.

Trong phần 9 của loạt bài 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 để tạo kịch bản SQL Server. Tạo kịch bản SQL
Server là một nhiệm vụ quan trọng cho quản trị viên và các chuyên gia phát triển
cơ sở dữ liệu SQL Server.

Phương pháp 1

Hãy giả dụ rằng chúng ta muốn tạo một kịch bản “Create Database” cho cơ sở
dữ liệu AdventureWorks từ máy chủ “HOME\SQLEXPRESS”. Thực thi cmdlets
dưới đây (xem hình 1.1)


[reflection.assembly]::LoadWithPartialName
("Microsoft.SqlServer.Smo") | out-null
$MyScripter=new-object
("Microsoft.SqlServer.Management.Smo.Scripter")
$srv=New-Object "Microsoft.SqlServer.Management.Smo.Server"
"HOME\SQLEXPRESS"
$MyScripter.Server=$srv
$MyScripter.Script($srv.databases["AdventureWorks"])

Hình 1.1
Lệnh này sẽ tạo một kịch bản “Create Database” cho cơ sở dữ liệu
AdventureWorks như thể hiện bên dưới (xem hình 1.2)
CREATE DATABASE [AdventureWorks] ON PRIMARY
( NAME = N'AdventureWorks_Data',
FILENAME =
N'C:\Program Files\Microsoft SQL Server\MSSQL.1\
MSSQL\Data\AdventureWorks_Data.mdf' ,
SIZE = 180992KB , MAXSIZE = UNLIMITED, FILEGROWTH =
16384KB )
LOG ON
( NAME = N'AdventureWorks_Log', FILENAME =
N'C:\Program Files\Microsoft SQL Server\MSSQL.1\
MSSQL\DATA\AdventureWorks_Log.ldf' ,
SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 16384KB )
COLLATE Latin1_General_CI_AS
EXEC dbo.sp_dbcmptlevel @dbname=N'AdventureWorks',
@new_cmptlevel=90
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [AdventureWorks].[dbo].[sp_fulltext_database] @action

= 'enable'
end
ALTER DATABASE [AdventureWorks] SET ANSI_NULL_DEFAULT OFF
ALTER DATABASE [AdventureWorks] SET ANSI_NULLS ON
ALTER DATABASE [AdventureWorks] SET ANSI_PADDING ON
ALTER DATABASE [AdventureWorks] SET ANSI_WARNINGS ON
ALTER DATABASE [AdventureWorks] SET ARITHABORT ON
ALTER DATABASE [AdventureWorks] SET AUTO_CLOSE ON
ALTER DATABASE [AdventureWorks] SET AUTO_CREATE_STATISTICS
ON
ALTER DATABASE [AdventureWorks] SET AUTO_SHRINK OFF
ALTER DATABASE [AdventureWorks] SET AUTO_UPDATE_STATISTICS
ON
ALTER DATABASE [AdventureWorks] SET CURSOR_CLOSE_ON_COMMIT
OFF
ALTER DATABASE [AdventureWorks] SET CURSOR_DEFAULT GLOBAL
ALTER DATABASE [AdventureWorks] SET CONCAT_NULL_YIELDS_NULL
ON
ALTER DATABASE [AdventureWorks] SET NUMERIC_ROUNDABORT OFF
ALTER DATABASE [AdventureWorks] SET QUOTED_IDENTIFIER ON
ALTER DATABASE [AdventureWorks] SET RECURSIVE_TRIGGERS OFF
ALTER DATABASE [AdventureWorks] SET DISABLE_BROKER
ALTER DATABASE [AdventureWorks] SET
AUTO_UPDATE_STATISTICS_ASYNC OFF
ALTER DATABASE [AdventureWorks] SET
DATE_CORRELATION_OPTIMIZATION OFF
ALTER DATABASE [AdventureWorks] SET TRUSTWORTHY OFF
ALTER DATABASE [AdventureWorks] SET
ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE [AdventureWorks] SET PARAMETERIZATION SIMPLE

ALTER DATABASE [AdventureWorks] SET READ_WRITE
ALTER DATABASE [AdventureWorks] SET RECOVERY SIMPLE
ALTER DATABASE [AdventureWorks] SET MULTI_USER
ALTER DATABASE [AdventureWorks] SET PAGE_VERIFY CHECKSUM
ALTER DATABASE [AdventureWorks] SET DB_CHAINING OFF

Hình 1.2
Phương pháp 2

Chúng ta hãy giả dụ rằng muốn tạo một kịch bản cho 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 (tham khảo hình 1.3)
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlSe
rver.Smo") | out-null
$MyScripter=new-object
("Microsoft.SqlServer.Management.Smo.Scripter")
$srv=New-Object "Microsoft.SqlServer.Management.Smo.Server"
"HOME\SQLEXPRESS"
$MyScripter.Server=$srv
$MyScripter.Script($srv.Databases["adventureworks"].tables)

Hình 1.3
Lệnh này tạo kịch bản CREATE TABLE cho các bảng trong cơ sở dữ liệu
AdventureWorks từ máy chủ “HOME\SQLEXPRESS”. Thực thi cmdlets dưới đây
(tham khảo hình 1.4)
.....
.....

CREATE TABLE [Sales].[SpecialOffer](
[SpecialOfferID] [int] IDENTITY(1,1) NOT NULL,

[Description] [nvarchar](255) COLLATE
Latin1_General_CI_AS NOT NULL,
[DiscountPct] [smallmoney] NOT NULL,
[Type] [nvarchar](50) COLLATE Latin1_General_CI_AS
NOT NULL,
[Category] [nvarchar](50) COLLATE
Latin1_General_CI_AS NOT NULL,
[StartDate] [datetime] NOT NULL,
[EndDate] [datetime] NOT NULL,
[MinQty] [int] NOT NULL,
[MaxQty] [int] NULL,
[rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[ModifiedDate] [datetime] NOT NULL
) ON [PRIMARY]


SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [Sales].[SpecialOfferProduct](
[SpecialOfferID] [int] NOT NULL,
[ProductID] [int] NOT NULL,
[rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[ModifiedDate] [datetime] NOT NULL
) ON [PRIMARY]


SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [Sales].[Store](
[CustomerID] [int] NOT NULL,

[Name] [dbo].[Name] NOT NULL,
[SalesPersonID] [int] NULL,
[Demographics] [xml](CONTENT
[Sales].[StoreSurveySchemaCollection]) NULL,
[rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[ModifiedDate] [datetime] NOT NULL
) ON [PRIMARY]


SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [Sales].[StoreContact](
[CustomerID] [int] NOT NULL,
[ContactID] [int] NOT NULL,
[ContactTypeID] [int] NOT NULL,
[rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[ModifiedDate] [datetime] NOT NULL
) ON [PRIMARY]
......
......

×