by kusakari
4. 12月 2009 19:40
前回、PowerShellから、SQLServerにデータベースとテーブルを作成しました。
今回は、データベースやテーブルの定義変更をしてみたいと思います。
※SQLServer2008では、PowerShellがサポートされ専用のコマンドレットを使うことが出来ます。
方法としては、イロイロあると思いますが、今回は下記の2通りの方法を紹介いたします。
- System.Data.SqlClient
- 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
それぞれの方法で実行後の、データベースとテーブルは下図のようになります。
■データベース
■テーブル
今回、データベースやテーブルの変更で使用したクエリは、簡単なテスト目的でのクエリです。排他ロックなどの例外処理に関しては記載してありません。また、クエリに関して他の設定を行う場合は、下記のMSDNをご覧ください。
06d2b18b-8ced-4234-b91b-89e816b086ad|0|.0
Category: PowerShell, SQL
Tags: