リストアしたデータベースのユーザーマッピングを修正する
ログインユーザーを作成してからリストアしてもユーザーマッピングが不正になってしまう。
しょうがないからリストア後にユーザマッピングを修正する。
ログインユーザーを作成する
use master
CREATE LOGIN [apuser] WITH
PASSWORD=N'apuser',
DEFAULT_DATABASE=[master],
DEFAULT_LANGUAGE=[日本語],
CHECK_EXPIRATION=OFF,
CHECK_POLICY=OFF
GO
ALTER LOGIN [apuser] ENABLE
GO
$newDBServerName = "NEW"
$userName = "sa"
$password = "password"
$scriptDir=Split-Path $MyInvocation.MyCommand.Path -Parent
$createLoginUserSQL = $scriptDir + "\..\SQL\createLoginUser.sql"
sqlcmd -S $newDBServerName -U $userName -P $password -i $createLoginUserSQL
ユーザーマッピングを修正する
リストアしたデータベースのユーザーとログインユーザーをマッピングしなおす。
USE TEST
EXEC sp_change_users_login 'Update_One', 'apuser', 'apuser'
GO
$newDBServerName = "NEW"
$userName = "sa"
$password = "password"
$scriptDir=Split-Path $MyInvocation.MyCommand.Path -Parent
$modifyUserMappingSQL = $scriptDir + "\..\SQL\modifyUserMapping.sql"
sqlcmd -S $newDBServerName -U $userName -P $password -i $modifyUserMappingSQL
まとめ
これでDBサーバーの構築が自動化できそうだ。。。
$newDBServerName = "NEW"
$userName = "sa"
$password = "password"
$scriptDir=Split-Path $MyInvocation.MyCommand.Path -Parent
$createLoginUserSQL = $scriptDir + "\..\SQL\createLoginUser.sql"
$modifyUserMappingSQL = $scriptDir + "\..\SQL\modifyUserMapping.sql"
# ログインユーザー作成
sqlcmd -S $newDBServerName -U $userName -P $password -i $createLoginUserSQL
# ユーザーマッピング修正
sqlcmd -S $newDBServerName -U $userName -P $password -i $modifyUserMappingSQL