どうやら以前に下記の様なポストをしていて、PowerShell から SQL Server 2008 に対していろいろやっていたみたいな痕跡が残っていました。
・PowerShell から SQLServer に データベースやテーブルを作成
・PowerShell から SQLServer の データベースやテーブルの定義を変更
・PowerShell から SQLServer のデータベースやテーブルを削除
今回は SQL Server 2012 で、ユーザーの追加や認証モードの変更などを作業した際のメモを、ブログにもなんとなく残しておこうと思います。
■ 前提
なにはともあれ、まずは sqlps モジュールを読み込んでおく必要がありますね。
Import-Module "sqlps" -DisableNameChecking
■ 認証の変更
認証モードを変更する場合。
混合認証モード
$sql = new-object Microsoft.SqlServer.Management.Smo.Server "InstanceName" $sql.Settings.LoginMode = [Microsoft.SqlServer.Management.SMO.ServerLoginMode]::Mixed $sql.Alter()
Windows 認証モード
$sql = new-object Microsoft.SqlServer.Management.Smo.Server "InstanceName" $sql.Settings.LoginMode = [Microsoft.SqlServer.Management.SMO.ServerLoginMode]::Integrated $sql.Alter()
■ ユーザー
追加
パスワードの有効期限なし の SQL 認証のユーザーを追加
$SQL_LOGINNAME = "test-user" $SQL_LOGINPSWD = "password" $sql = new-object Microsoft.SqlServer.Management.Smo.Server "InstanceName" $login = New-Object Microsoft.SqlServer.Management.Smo.Login $sql, $SQL_LOGINNAME $login.LoginType = [Microsoft.SqlServer.Management.Smo.LoginType]::SqlLogin $login.PasswordExpirationEnabled = $false $login.Create($SQL_LOGINPSWD)
変更
上で追加したユーザーを sysadmin ロールに追加して、パスワードの有効期限あり に変更
$SQL_LOGINNAME = "test-user" $sql = new-object Microsoft.SqlServer.Management.Smo.Server "InstanceName" $login = New-Object Microsoft.SqlServer.Management.Smo.Login $sql, $SQL_LOGINNAME $login.AddToRole('sysadmin') $sql.Logins[$SQL_LOGINNAME].PasswordExpirationEnabled = $true $sql.Logins[$SQL_LOGINNAME].Alter()
削除
上で追加したユーザーを削除
$SQL_LOGINNAME = "test-user" $sql = new-object Microsoft.SqlServer.Management.Smo.Server "InstanceName" $sql.Logins[$SQL_LOGINNAME].Drop()
今回はココまでにしておきます。次回も なんやかんや です。
[参考]
Microsoft.SqlServer.Management.Smo 名前空間
http://technet.microsoft.com/ja-jp/library/Microsoft.SqlServer.Management.Smo.aspx
ServerLoginMode 列挙体
http://technet.microsoft.com/ja-jp/library/microsoft.sqlserver.management.smo.serverloginmode.aspx
Login クラス
http://technet.microsoft.com/ja-jp/library/Microsoft.SqlServer.Management.Smo.Login.aspx