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

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

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 (445.75 KB, 8 trang )

Microsoft Windows PowerShell và SQL Server 2005 SMO – Phần 10
Ngu
ồn : quantrimang.com 
The MAK

Sử dụng kịch bản PowerShell để tạo kịch bản SQL Server cho cơ sở dữ
liệu và các bảng

Phần 10 này chúng tôi sẽ giới thiệu cách sử dụng các kịch bản PowerShell kết
hợp với SMO và các tham số để tạo kịch bản SQL Server. Việc tạo các 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.

Chúng ta hãy giả dụ rằng muốn có một script PowerShell để tạo kịch bản “Create
Database” cho một cơ sở dữ liệu hoặc kịch bản “Create object” cho tất cả các
đối tượng từ một cơ sở dữ liệu đã có. Thêm vào đó, tên máy chủ và tên cơ sở
dữ liệu sẽ được thông qua như các tham số đối với kịch bản PowerShell.

Chúng ta có thể thực hiện công việ
c này bằng cách tạo một kịch bản PowerShell
như bên dưới.

Tạo C:\PS\ScriptSQL.ps1 như thể hiện bên dưới. Tham khảo hình 1.0
param
(
[string] $ServerName,
[string] $DatabaseName,
[string] $scriptType
)


[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"
"$ServerName"
$db = $srv.Databases["$DatabaseName"]
$MyScripter.Server=$srv

if ($scriptType -eq "Database")
{
echo "Database Scripts "
echo "-----------------"

$MyScripter.Script($srv.databases["$DatabaseName"])
}

if ($scriptType -eq "Tables")
{
echo "Table Scripts "
echo "-----------------"

$MyScripter.Script($srv.Databases["$DatabaseName"].tables)
}

Hình 1.0
Thực thi kịch bản PowerShell như bên dưới (Hình 1.1)
./ScriptSQL "HOME\SQLEXPRESS" "Admin" "Database"
Hình 1.1
Giải thích các tham số

:

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

HOME là hostname

SQLEXPRESS là tên máy chủ SQL instance trên host HOME

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

Database là tham số khi được thông qua sẽ tạo kịch bản “Create
database”
Script này tạo kịch bản “Create Database” bên dưới (Hình 1.2)
Database Scripts
-----------------
CREATE DATABASE [Admin] ON PRIMARY
( NAME = N'admin', FILENAME = N'C:\Program Files\Microsoft
SQL Server\MSSQL.1\MSSQL\DATA\admin.mdf' , SIZE = 2240KB ,
M
AXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'admin_log', FILENAME = N'C:\Program
Files\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\admin_log.LDF' , SIZE = 76
8KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
COLLATE SQL_Latin1_General_CP1_CI_AS
EXEC dbo.sp_dbcmptlevel @dbname=N'Admin', @new_cmptlevel=90
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [Admin].[dbo].[sp_fulltext_database] @action =

'enable'
end
ALTER DATABASE [Admin] SET ANSI_NULL_DEFAULT OFF
ALTER DATABASE [Admin] SET ANSI_NULLS OFF
ALTER DATABASE [Admin] SET ANSI_PADDING OFF
ALTER DATABASE [Admin] SET ANSI_WARNINGS OFF
ALTER DATABASE [Admin] SET ARITHABORT OFF
ALTER DATABASE [Admin] SET AUTO_CLOSE ON
ALTER DATABASE [Admin] SET AUTO_CREATE_STATISTICS ON
ALTER DATABASE [Admin] SET AUTO_SHRINK OFF
ALTER DATABASE [Admin] SET AUTO_UPDATE_STATISTICS ON
ALTER DATABASE [Admin] SET CURSOR_CLOSE_ON_COMMIT OFF
ALTER DATABASE [Admin] SET CURSOR_DEFAULT GLOBAL
ALTER DATABASE [Admin] SET CONCAT_NULL_YIELDS_NULL OFF
ALTER DATABASE [Admin] SET NUMERIC_ROUNDABORT OFF
ALTER DATABASE [Admin] SET QUOTED_IDENTIFIER OFF
ALTER DATABASE [Admin] SET RECURSIVE_TRIGGERS OFF
ALTER DATABASE [Admin] SET ENABLE_BROKER
ALTER DATABASE [Admin] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
ALTER DATABASE [Admin] SET DATE_CORRELATION_OPTIMIZATION
OFF
ALTER DATABASE [Admin] SET TRUSTWORTHY OFF
ALTER DATABASE [Admin] SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE [Admin] SET PARAMETERIZATION SIMPLE
ALTER DATABASE [Admin] SET READ_WRITE
ALTER DATABASE [Admin] SET RECOVERY FULL
ALTER DATABASE [Admin] SET MULTI_USER
ALTER DATABASE [Admin] SET PAGE_VERIFY CHECKSUM
ALTER DATABASE [Admin] SET DB_CHAINING OFF


Hình 1.2
Lúc này thực thi kịch bản PowerShell như bên dưới (Hình 1.3)
./ScriptSQL "HOME\SQLEXPRESS" "VixiaTrack""Tables"
Hình 1.3
Giải thích các tham số
:

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

HOME là hostname

SQLEXPRESS là tên máy chủ SQL Server instance trên host HOME

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

“Tables” là tham số khi được thông gua sẽ tạo kịch bản “Create table”
Script này sẽ tạo kịch bản “Create Database” dưới đây (Hình 1.4)
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[StockCriteriaHistory](
[StockCriteriaHistoryID] [int] IDENTITY(1,1) NOT
NULL,
[LocationID] [int] NULL,
[LocationDescription] [varchar](100) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[SiteID] [int] NULL,
[Site] [varchar](100) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[WingID] [int] NULL,
[Wing] [varchar](100) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,

[BuildingID] [int] NULL,
[Building] [varchar](100) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[FloorNo] [varchar](100) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[DepartmentID] [int] NULL,
[Department] [varchar](100) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[RoomNo] [varchar](100) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[RoomTypeID] [int] NULL,
[RoomType] [varchar](100) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[VixiaLocationType] [varchar](100) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[VixiaLocationNo] [varchar](100) COLLATE
SQL_Latin1_General_CP1_CI_AS NULL,
[TargetCount] [int] NULL,
[LowAlertCount] [int] NULL,

×