SSブログ
前の10件 | -

Hyper-Vのチェックポイント(snapshot)のマージ

Hyper-VでGuestOSを構築し、チェックポイント(snapshot)を何世代か残す運用をしていた。
チェックポイントをマージするときの注意点をメモ書きしておく。

 ・ チェックポイントのマージは、GuestOSをshutdownしておく(保存はダメ)。
 ・ GuestOSのサイズと同等以上の空き容量を確保しておく。
 ・ 時間がかかるので、実施タイミングは余裕のある時に行う。

以下は、今回の顛末。

構成として Windows8.1(C:\ が 約500GB) 上に、Windows7のGuestOSが3台稼働しており、
C:\ の空き容量が 約100GB の状態。

Hyper-Vマネージャで、約120GBのGuestOS(win7guest1.vhdx)のチェックポイントを削除した。
すると、
  win7guest1_xxxxxx.avhdx にrenameされて、
  win7guest1.vhdx が新規作成され、これに対してマージ処理が始まる。
win7guest1.vhdx のサイズはどんどん大きくなり、空き容量を食いつぶして止まってしまった。

残りのGuestOS 2台のうち1台を、他のstoreageに移動し、空き容量を確保。
マージ処理が再開されるが、途中から進まなくなる。

GuestOSが稼働中だったため、"保存"としたが、進展しないため、"起動"しなおした後、
"shutdown"をするとマージ処理が再開された。
マージが終了すると、
  win7guest1_xxxxxx.avhdx は削除され、
  win7guest1.vhdx が残る
GuestOSの正常起動を確認。

(Windows 8.1、Windows 7、Hyper-V) 


タグ:Hyper-V Windows

パフォーマンスモニタで閾値を監視、alertメールを送信する


1. メール送信タスクの作成
2. パフォーマンスカウンターの設定
3. 作成したメール送信タスクを指定

サーバーマネージャ > 構成 > タスクスケジューラ を右クリック > タスクの作成  で "タスクの作成" ダイアログが開く。
全般タブで、
   名前を指定:ex)警告メール送信
   セキュリティオプション:"ユーザがログオンしているかどおうかにかかわらず実行する" を選択
   [ユーザまたはグループ] をクリックして、タスクを実行するアドミン権限を有するアカウントを指定する
操作タブで、
   [新規] をクリックして、"新しい操作" ダイアログを開く
   操作を選択:"電子メールの送信"
   差出人:ex)administrator@host.domeinname
   送信先:管理者のメールアドレス
   件名:ex)警告:使用率の超過
   テキスト:ex)メモリの使用率が閾値を超えました。。。。。。システムの状態を確認してください。

サーバーマネージャ > 診断 > パフォーマンス > データコレクターセット > ユーザ定義 を右クリック >
   新規作成 > で データコレクターセット で "新しいデータコレクターセットを作成します" ダイアログが開く。
   名前を指定:ex)CPU使用率
   "手動で作成する(詳細)" を選択 > [次へ]
   "パフォーマンスカウンターの警告" を選択 > [次へ]
   [追加] をクリック
   "使用可能なカウンター" 一覧から、ex)"% Processor Time" を選択
   "選択したオブジェクトのインスタンス" で "Total" を選択 > [追加] > [OK]
   "警告する時間" 欄で、"より上" を選択し、"制限値" に ex)90 を入力 > [次へ]
   "保存して閉じる" を選択 > [完了]

サーバーマネージャ > 診断 > パフォーマンス > データコレクターセット > ユーザ定義 > CPU使用率 を
   選択 > DataCollector01 を右クリックして "プロパティ" を開く
警告タブで、
   "サンプルの間隔" を指定
警告のタスクタブで、
   "警告が出されたときに実行するタスク" に、作成したタスク "警告メール送信" を入力 > [OK]

サーバーマネージャ > 診断 > パフォーマンス > データコレクターセット > ユーザ定義 > CPU使用率 を
   右クリック > "開始" を選択
 
(Windows 2008 R2) 
 

タグ:Windows

Round関数 は、五捨五入

レポートビルダー3.0で、round関数で小数点以下を丸めるとき。
 
最近接偶数への丸め(round to the nearest even; RN)となるので、期待値と異なってしまうことも。。。。
 
      端数 < 0.5 なら切り捨て、端数 > 0.5 なら切り上げ、端数 = 0.5 なら最も近い偶数へ丸める。
 
      ="五捨五入"="偶数丸め"="最近接丸め"="JIS丸め"="ISO丸め"="銀行丸め" とも言うらしい。
 
(SQL Server 2008 R2, ReportBuilder3.0)
 

タグ:SQL SSRS

Windows標準の diskpart でディスクを削除する

Diskpartを起動して対象のディスクを選択する

C:\>diskpart
DISKPART> list disk

  Disk ###  Status           Size     Free     Dyn  Gpt
  --------  ---------------  -------  -------  ---  ---
  Disk 0    オンライン        233 GB  1012 MB
  Disk 1    オンライン         75 GB   314 MB
  Disk 2    オンライン        233 GB      0 B

DISKPART> select disk 2
DISKPART> list disk

  Disk ###  Status           Size     Free     Dyn  Gpt
  --------  ---------------  -------  -------  ---  ---
  Disk 0    オンライン        233 GB  1012 MB
  Disk 1    オンライン         75 GB   314 MB
* Disk 2    オンライン        233 GB      0 B



ディスクの管理領域のみ削除する場合

DISKPART> clean
DiskPart はディスクを正常にクリーンな状態にしました。



ディスクの全体を削除する(全セクタに対して 0 を書き込む)場合
(確認なしにすぐ実行される)

DISKPART> clean all
DiskPart はディスクを正常にクリーンな状態にしました。



DISKPART> exit
DiskPart を終了しています...
 
(Windows 2008 R2, Windows 7)
 

タグ:Windows

Accessのリンクテーブル「ODBC--呼び出しが失敗しました」タイムアウト設定とパススルークエリ

Access2010 から、SQL Server 2008 R2 のDBへODBC接続して、リンクテーブルを設定する。
Access側でローカルクエリを実行すると、
 
   「ODBC--呼び出しが失敗しました。[ODBC SQL SERVER DRIVER]時間切れになりました」 
 
となってしまう。
 
そもそも、リンクテーブルに対して、joinの多用や、クエリの入れ子が深いとパフォーマンスは期待できない。
 
さらに、SQL Server側で、SSISやレプリケーションなどのトランザクション実行時は、レコードが参照できなくなり、
参照したい場合は "ダーティリード" という指定をする必要があるらしい。
 
ここでは、タイムアウトの設定とパススルークエリについてまとめ、 ダーティリードについては、別の機会にまとめる。
 
◆タイムアウトの設定
Accessのクエリをデザインモードで開く
[デザイン] タブ の [プロパティシート] をクリックして開く
[ODBCタイムアウト] の項目値を変更する  (デフォルト=60(秒)、0=タイムアウトなし)
 
◆パススルークエリ
Accessのクエリをデザインモードで開く
  作成 > クエリデザイン > [テーブルの表示] ダイアログは閉じる
[デザイン] タブ の [パススルー] をクリック
同じく [プロパティシート] をクリックしえ開く 
[ODBC 接続文字列] の項目に接続文字列を設定 
  たとえば、
  "ODBC;DRIVER=SQL Server;LANGUAGE=日本語;DATABASE=DBname;
     SERVER=HostPathname;Integrated Security=SSPI;Auto Translate=True;"
接続文字列情報にパスワードとログオン名を保存する場合、確認ダイアログが表示されるので、[はい] をクリック 
SQL パススルー クエリ ウィンドウにコピーしたAccessクエリを貼り付ける
   ここでAccessクエリをSQLクエリに準じて書き換える
   たとえば、
   dbo_Tablename は、dbo.Tablename という記述に、IIF文は、case文に、といった具合

(Windows Server 2008R2, SQL Server 2008 R2、Windows 7、 Access2010、ODBC)
 

タグ:Windows ODBC SQL

SQL Server 2008r2 整数型の最大値

SQL Server 2008r2 整数型の最大値
    int     (4byte) -2^31(-2,147,483,648) ~ 2^31-1(2,147,483,647)
    smallint(2byte)        -2^15(-32,768) ~        2^15-1(32,767)
    tinyint (1byte)                    0  ~                  255
 
decimal/numeric は少数を表現 
    decimal(p, s) 
    p=整数部+小数部の桁数、最大は 38桁
    s=小数部の桁数、最大は pの桁数
 
 (SQL Server 2008 R2)

タグ:SQL

SQL Server で テーブルのコピー

use [dbname]
go
    
SELECT * INTO dbo.DistinationTablename
FROM dbo.SoourceTablename
go
 
(SQL Server 2008 R2)
 

タグ:SQL Windows

Windows Server 2008 R2 で イベントエラー 1006

RDP接続で、ログアウトせずに切断したまま、ユーザpwが変更されると発生する
 
    System Event
    Microsoft-Windows-GroupPolicy
    ID:1006
      グループポリシーの処理に失敗しました。
      ドメインコントローラーのActive Directoryサービスへの認証ができませんでした。
      (LDAP バインド関数の呼び出しに失敗しました。)
      <Data Name="ErrorDescription">資格情報が無効です</Data>
 
  -> リモートデスクトップ サービスマネージャ、もしくは、タスクマネージャ で ユーザセッションを ログオフ する
 
(Windows Server 2008 R2、RDP)
 

タグ:Windows RDP

SQL server のシステム情報(データベース一覧など)の確認

SQLServerのデータベース情報は、システムデータベースに格納されている
これをカタログ ビュー(Transact-SQL)を介して参照する

データベース sys.datebase
テーブル sys.tables
テーブル列 sys.columns
ビュー sys.views
プロシージャ sys.procedures
 
    SELECT name, database_id, create_date
    FROM sys.databases ;
    GO
 

(SQL server 2008 R2)
 


タグ:SQL Windows

ファイル内の文字列を bat で書き換える

ファイル内の 日時 指定文字列を動的に置き換えるための bat を考えた
 
@echo off
 
rem 1日前の固定時間の文字列をset
set /a dd=%date:~-2%-1
set dt=%date:~-10,4%-%date:~-5,2%-%dd%T15:00:00.000Z
 
rem SourceおよびDistinationファイル名set
cd "D:\<TargetFolderPath>\"
set dstfname=conf.xml
set header=conf.header
set srcfname=conf.template
 
type nul >%dstfname%
type %header%>>%dstfname%
 
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%A in (%srcfname%) do (
    set line=%%A
    echo !line:RepStr=%dt%!>>%dstfname%
)
endlocal

前の10件 | -

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。