PowerShell から SQLServer の データベースやテーブルの定義を変更

by kusakari 4. 12月 2009 19:40

前回、PowerShellから、SQLServerにデータベースとテーブルを作成しました。
今回は、データベースやテーブルの定義変更をしてみたいと思います。
※SQLServer2008では、PowerShellがサポートされ専用のコマンドレットを使うことが出来ます。

方法としては、イロイロあると思いますが、今回は下記の2通りの方法を紹介いたします。

  1. System.Data.SqlClient
  2. Invoke-Sqlcmd


なお、今回の実験は、前回の環境からの続きになります。


■1. System.Data.SqlClient
System.Data.SqlClient でデータベースやテーブルの定義変更をしてみます。


【データベース変更】
下記は、ローカルのSQLServerに作成されている PS という名前のデータベースを PowerShell という名前に変更しています。

$query = @"
ALTER DATABASE PS
Modify Name = PowerShell
"@

$strConn = 'Data Source = localhost; Integrated Security = True'
$conn = New-Object System.Data.SqlClient.SqlConnection($strConn)
$cmd = New-Object System.Data.SqlClient.SqlCommand($query, $conn)
$conn | % `
{
    $_.Open();
    [void]$cmd.ExecuteNonQuery();
    $_.Close();
    $_.Dispose();
}




【テーブル変更】
下記は、ローカルのSQLServerのPSデータベースにあるtbl_psテーブルに、「col_ps_4」列を追加しています。

$query = @"
ALTER TABLE tbl_ps
ADD col_ps_4 int
"@

$strConn = 'Data Source = localhost; Initial Catalog = ps; Integrated Security = True'
$conn = New-Object System.Data.SqlClient.SqlConnection($strConn)
$cmd = New-Object System.Data.SqlClient.SqlCommand($query, $conn)
$conn | % `
{
    $_.Open();
    [void]$cmd.ExecuteNonQuery();
    $_.Close();
    $_.Dispose();
}




■2. Invoke-Sqlcmd
Invoke-Sqlcmd を使ってデータベースやテーブルの定義を変更してみたいと思います。
なお、Invoke-Sqlcmd を使う場合は下記のコマンドなどで追加してください。

Add-PSSnapin SqlServerCmdletSnapin100
Add-PSSnapin SqlServerProviderSnapin100




【データベース変更】
下記は、ローカルのSQLServerに作成されている PS という名前のデータベースを PowerShell という名前に変更しています。

$query = @"
ALTER DATABASE PS
Modify Name = PowerShell
"@

Invoke-Sqlcmd -Query $query




【テーブル変更】
下記は、ローカルのSQLServerのPSデータベースにあるtbl_psテーブルに、「col_ps_4」列を追加しています。

$query = @"
ALTER TABLE tbl_ps
ADD col_ps_4 int
"@

Invoke-Sqlcmd -Database PS -Query $query





それぞれの方法で実行後の、データベースとテーブルは下図のようになります。

■データベース
200912418_390


■テーブル
200912418_391





今回、データベースやテーブルの変更で使用したクエリは、簡単なテスト目的でのクエリです。排他ロックなどの例外処理に関しては記載してありません。また、クエリに関して他の設定を行う場合は、下記のMSDNをご覧ください。

ALTER DATABASE 
http://msdn.microsoft.com/ja-jp/library/ms174269.aspx
ALTER TABLE http://msdn.microsoft.com/ja-jp/library/ms190273.aspx

 

 

コメントを書く


(アイコンを表示しますか Gravatar )

  Country flag

biuquote
  • コメント
  • プレビュー
Loading



Calendar

<<  7月 2010  >>
月曜火曜水曜木曜金曜土曜日曜
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

View posts in large calendar

RecentComments

Comment RSS