以下のスクリプトを使用してデータとログ ファイルの情報を取得し、以下の xml ノードに従って出力を調整しようとしています。
param
(
$ClientName,
$Sourcedatabase,
$DestServer,
$DESTINATIONDB
)
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$DataSet = New-Object System.Data.DataSet
$SqlConnection.ConnectionString = "Server = $DestServer; Database = '$DESTINATIONDB'; Integrated Security = True"
$SqlCmd.CommandText = "select f.physical_name from sys.master_files f, sys.databases d where f.database_id = d.database_id and
d.name = 'master'"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter.SelectCommand = $SqlCmd
$SqlAdapter.Fill($DataSet)|out-null
foreach ($Row in $Dataset.Tables[0].Rows)
{
$dev1 = $($Row[0])
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$DataSet = New-Object System.Data.DataSet
$SqlConnection.ConnectionString = "Server = $ClientName; Database = $Sourcedatabase; Integrated Security = True"
$SqlCmd.CommandText = "select f.name ,f.physical_name from sys.master_files f, sys.databases d where f.database_id = d.database_id and
d.name = '$Sourcedatabase'"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter.SelectCommand = $SqlCmd
$SqlAdapter.Fill($DataSet)|out-null
foreach ($Row in $Dataset.Tables[0].Rows)
{
if($dev1.EndsWith(".mdf") -and $($Row[1]).EndsWith(".mdf"))
{
$dev = "<device>|" + $Sourcedatabase + "|#12!" + $DESTINATIONDB
$dev = $dev + "|#12!" + $($Row[0]) +"|#12!"
$dev = $dev + $dev1 +"|#12!"
$dev = $dev + $($Row[1])
$dev = $dev + "</device>"
$dev
}
if($dev1.EndsWith(".ldf") -and $($Row[1]).EndsWith(".ldf"))
{
$dev = "<device>|" + $Sourcedatabase + "|#12!" + $DESTINATIONDB
$dev = $dev + "|#12!" + $($Row[0]) +"|#12!"
$dev = $dev + $dev1 +"|#12!"
$dev = $dev + $($Row[1])
$dev = $dev + "</device>"
$dev
}
}
}
出力は次のようになります
|test_restore|#12!testCDC|#12!test_replication|#12!D:\MSSQL\DATA\MSSQL10.MSSQLSERVER\MSSQL\DATA\master.mdf|#12!D:\MSSQL\DATA\Test _Restore.mdf | test_restore|#12!testCDC|#12!test_replication_log|#12!D:\MSSQL\DATA\MSSQL10.MSSQLSERVER\MSSQL\DATA\mastlog.ldf|#12!L:\MSSQL\LOG\ Test_Restore_log.ldf
出力を取得できます...しかし、データベースに複数のデータファイルがある場合...データファイルは1つしか取得できません...これについて私を助けてください...
前もって感謝します...