21
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

全テーブルのCreate Table文を作成する

Last updated at Posted at 2012-09-14

ManagementStudioで出力した感じのスクリプトを作成します。
参考にしたサイト:SQL Server PowerShell を使用した管理手法 第 2 回 実践編

CreateTable.ps1
[void][reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")

$serverName = "localhost\SQLEXPRESS"
$databaseName = "AdventureWorks"

$scriptFile = "D:\テーブル.sql"

#追記するので既にファイルがある場合は出力ファイルを削除する
if (Test-Path $scriptFile) {
    Remove-Item $scriptFile
}

#データベース選択のコマンドを出力
Add-Content -Path $scriptFile -encoding Unicode -Value "USE [$databaseName]"
Add-Content -Path $scriptFile -encoding Unicode -Value "GO"


$server = New-Object Microsoft.SqlServer.Management.Smo.Server($serverName)
$db = $server.Databases[$databaseName]

$scripter = New-Object Microsoft.SqlServer.Management.Smo.Scripter($server)
#出力するスクリプトの設定
$scripter.Options.FileName = $scriptFile          #出力先ファイル
$scripter.Options.Indexes = $true                 #インデックスを含める
$scripter.Options.ClusteredIndexes = $true        #クラスター化インデックスを含める
$scripter.Options.WithDependencies = $false       #依存オブジェクトを含めない
$scripter.Options.DriAll = $true                  #参照整合性の出力を含める
$scripter.Options.ToFileOnly = $true              #コンソール出力しない
$scripter.Options.Triggers = $true                #トリガーを含める
$scripter.Options.AnsiPadding = $true             #
$scripter.Options.AppendToFile = $true            #ファイルに追記する

[Microsoft.SqlServer.Management.Smo.SqlSmoObject[]]$db.Tables | 
%{
    $datetime = (Get-Date).ToString("MM/dd/yyyy hh:mm:ss.fff")
    $schema = $_.Schema
    $tableName = $_.Name

    #Drop文を出力
    Add-Content -Path $scriptFile -encoding Unicode -Value "/****** Object:  Table [$schema].[$tableName]    Script Date: $datetime ******/"
    $scripter.Options.ScriptDrops = $true
    $scripter.Script($_)

    #Create文を出力
    Add-Content -Path $scriptFile -encoding Unicode -Value "/****** Object:  Table [$schema].[$tableName]    Script Date: $datetime ******/"
    $scripter.Options.ScriptDrops = $false
    $scripter.Script($_)
}
21
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?