2009/03/16

Windows PowerShell で SQL Server 2008 の管理を行う


Windows PowerShell で SQL Server 2008 を管理する方法を調べてみました。

今回使用した SQL Server は SQL Server 2008 Express になります。

最初、SQL Server 2008 Express では Windows PowerShell が使用できないかと思っていたのですが、Windows PowerShell 1.0 を先にインストールしておけば、SQL Server 2008 Express でも Windows PowerShell で SQL Server を操作できるようになります。

SQL Server PowerShell is an option component in SQL Express 2008. Optional in this case means that we do not make Windows PowerShell 1.0 a prerequisite for SQL Express 2008, but it is required to use the new SQL PowerShell scripting. If you're interested in playing with SQL Server PowerShell, you should install Windows PowerShell 1.0 before you install SQL Express for it to work correctly.

SQL Server Express WebLog : SQL Server 2008 Express is now live!

意外だったのが、Windows PowerShell は SQL Server 2008 だけでなく、SQL Server 2000/2005 も管理できるということです。

サポートされる SQL Server のバージョン

SQL Server PowerShell を実行するには、SQL Server 2008 クライアント コンポーネントを使用する必要があります。SQL Server PowerShell は、SQL Server 2008、SQL Server 2005、または SQL Server 2000 のインスタンスに接続できます。SQL Server 2005 の使用できる最も古いバージョンは SP2 です。SQL Server 2000 の使用できる最も古いバージョンは SP4 です。SQL Server PowerShell が SQL Server 2005 および SQL Server 2000 に接続する場合、その機能は、SQL Server のこれらのバージョンで利用できる機能に制限されます。

SQL Server PowerShell の実行

今回調べた内容は、いままでの SQL コマンドを Windows PowerShell 上で実行する方法になります。

いかにも Windows PowerShell っぽい操作方法もあるのですが、システム管理者は既存の SQL コマンドを利用することの方が多いと思いますし。Windows PowerShell っぽい操作方法は参考サイトをご確認ください。

サンプルスクリプトでは、最初に SQL Server のスナップインを読み込んだ後に、データベースとテーブルを作成しています。

なお、サンプルスクリプト内の 'MYPC' はコンピューター名、'SQLEXPRESS' は SQL Server のインスタンス名になります。

#
# 関数宣言(PSSNAPIN存在チェック)
#
function ExistsPsSnapin {
  param($snapinname)
  foreach ($snapin in get-pssnapin) {
    if ($snapin.name -eq $snapinname) {
      return ($true)
    }
  }
  return ($false)
}

#
# 初期処理(SQL Server の PSSNAPIN 読み込み)
#
$PROVIDER_SNAPIN_NAME = "sqlserverprovidersnapin100"
$CMDLET_SNAPIN_NAME = "sqlservercmdletsnapin100"

if (!(ExistsPsSnapin($PROVIDER_SNAPIN_NAME))){add-pssnapin $PROVIDER_SNAPIN_NAME}
if (!(ExistsPsSnapin($CMDLET_SNAPIN_NAME))){add-pssnapin $CMDLET_SNAPIN_NAME}

cd "SQLSERVER:/SQL/MYPC/SQLEXPRESS"

#
# データベース作成
#
$DB_NAME = "TESTDB"
$DATA_PATH = "C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\"
$DB_FILE_PATH = $DATA_PATH + "TESTDB_DATA.mdf"
$LOG_FILE_PATH = $DATA_PATH + "TESTDB_LOG.ldf"

$dbSql = "IF DB_ID(N'$DB_NAME') IS NOT NULL DROP DATABASE $DB_NAME;"
$dbSql += "CREATE DATABASE $DB_NAME "
$dbSql += "ON (NAME=N'TEST_DATA', FILENAME = N'$DB_FILE_PATH', SIZE = 10, FILEGROWTH = 10%) "
$dbSql += "LOG ON (NAME=N'TEST_LOG', FILENAME = N'$LOG_FILE_PATH', SIZE = 10, FILEGROWTH = 10%);"

invoke-sqlcmd -query $dbSql

#
# テーブル作成
#
$tblSql = "USE $DB_NAME;"
$tblSql += "CREATE TABLE TBL1(Field1 nchar(10) not null, Field2 nvarchar(50) null);"

invoke-sqlcmd -query $tblSql

#
# 終了処理(SQL Server から抜ける)
#
cd "c:\script"

■参考書籍

■参考サイト

■関連エントリー


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。

    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから