VMware 仮想 Guestサーバ(Windows 2008)のディスク拡張
通常、仮想デバイスノードが SCSI で、システムドライブでなければ、
オンラインでディスク容量の拡張ができる
Guestサーバを選択し、[サマリ] タブ から、"設定の編集" を開く >
拡張したいハードディスクを選択し、
"ディスクプロビジョニング" で 希望の拡張サイズを指定 > [OK] とする
Guestサーバ(Windows 2008)のサーバマネージャを開き、
記憶域 > ディスクの管理 を開く >
拡張を実施したディスクに、拡張したサイズ分の "未割り当て" 領域が
表示されていることを確認
コマンドプロンプトを開き、diskpart.exe で割り当て領域を拡張する
==========C:\Users\Administrator>diskpartMicrosoft DiskPart バージョン 6.0.6002Copyright (C) 1999-2007 Microsoft Corporation.コンピュータ: ESX-HOST1DISKPART> list volumeVolume ### Ltr Label Fs Type Size Status Info---------- --- ----------- ---- ---------- ------- --------- --------Volume 0 E VMware Data CDFS DVD-ROM 499 MB 正常Volume 1 C NTFS Partition 60 GB 正常 システムVolume 2 D ボリューム NTFS Partition 60 GB 正常DISKPART> select Volume 2ボリューム 2 は選択されたボリュームです。DISKPART> extendDiskPart はボリュームを正常に拡張しました。DISKPART> list volumeVolume ### Ltr Label Fs Type Size Status Info---------- --- ----------- ---- ---------- ------- --------- --------Volume 0 E VMware Data CDFS DVD-ROM 499 MB 正常Volume 1 C NTFS Partition 60 GB 正常 システムVolume 2 D ボリューム NTFS Partition 100 GB 正常==========
サーバマネージャ > 記憶域 > ディスクの管理 に戻り、正常に拡張されていることを確認
ちなみに、仮想デバイスノードが IDE の場合、このような拡張はできない
参考:
以下に、IDE を SCSI に変換して拡張できるようにした記事があった
(ESXi 4.1, 5.0.1, vCenter Srver 4.1.0, 5.0.1, Windows Server 2008 R2, Windows Server 2003 R2, Windows 7)
VMware Guestサーバのシステムドライブの容量の拡張
Windows 2008 Server には、ディスクのクリーンアップ ボタン がない
Windows Server 2008 では、Windowsエクスプローラのドライブのプロパティダイアログに
表示される [ディスクのクリーンアップ] ボタン がない
また、
Windows 7 で、同様の現象の場合に、スタート > プログラムとファイルの検索 で
"cleanmgr.exe" を検索すれば、実行させることが可能であるが、
Windows Server 2008 では、これもヒットしない
デフォルトでは、
この状態が正常で、デスクトップ エクスペリエンス機能のインストールが必要とのこと
手順は以下のようになる
スタート > 管理ツール > サーバー マネージャー で "機能" ページを展開する >
"機能の概要" セクションで、[機能の追加] をクリック >
"デスクトップ エクスペリエンス" をチェックして [次へ] > [インストール]
デスクトップ エクスペリエンスには、
Windows メール、
Windows Media Player、
およびその他のデスクトップ エクスペリエンス機能
が含まれるとのこと
参考:
(Windows 2008 Server R2, Windows 7)
タグ:Windows
リモートデスクトップ接続を 接続元のPC の Windowsファイアウォール で制限する
通常、リモートデスクトップの接続を制限するには、接続されるサーバ側のWindowsファイアウォールで、
接続元のIPアドレスを限定するなどして、接続を制限(=特定の接続元からの接続のみを許可)する。
ここでは、
接続元のPC側で、特定のサーバだけに、リモートデスクトップ接続ができように制限しなければならない
事情が発生したため、試したことをメモしておく。
接続元のPC側で、
Windowsファイアウォール > 詳細設定 > "Windowsファイアウォールのプロパティ" >
ドメイン/プライベート/パブリック の各々のタブについて、
"状態" の "送信接続" を "許可(規定)" から "ブロック" へ変えたうえで、
以下の例外設定をする
"送信の規則" > "新しい規則" >
プログラム : %SystemRoot%\System32\mstsc.exe ※ポート番号(TCPの3389番)
操作 : 接続を許可する
プロファイル : すべて選択
名前 : 適当
として規則を作成後、作成した規則のプロパティを開き直し、スコープを設定
リモートIPアドレス > これらのIPアドレス を指定
許可する 接続先のサーバのIPアドレスを設定する
(Windows 7, RDP)
タグ:Windows
Excelで他のブックのセルを参照する セル式
サーバや共有ドライブの Excel ファイルのセル値を参照する セル式 は、
='\\<HostName>\<FolderPath>\[<FileName.xls>]<SheetName>'!$A$10
ファイル名を [ ] で括る、パス名、ファイル名、シート名までを ' ' (シングルクオテーション)で括る、! で区切ってセルを指定
なお、セルの指定は、$A$1 でも A1 でも ok
(Excel 2010)
タグ:Excel
SQL Server 2008 の復旧モデルとトランザクション ログの肥大化
SQL Server のトランザクションログは、復旧モデルによって変化し、完全モデルでは肥大化する
復旧モデルは、
完全
一括ログ
単純
があり、復旧モデルの確認/変更は、データベースのプロパティで実行する
SQLコマンドラインでは、ALTER DATABASE で以下のようにする
USE master
ALTER DATABASE [DatabaseName] SET RECOVERY { FULL | BULK_LOGGED | SIMPLE }
完全(Full)モデル(デフォルトの復旧モデル)
トランザクションログへ、すべての処理履歴を完全に記録する
このため、障害発生時に、障害が発生した直前まで、あるいは、指定時刻まで、
データを復旧することができる
一括ログ(Bulk Logged)モデル
トランザクションログへ記録する処理履歴を最小限に抑える
一括(bulk:バルク)操作のパフォーマンスを向上を優先する
インデックスの作成や再構築、
bcp コマンド、
BULK INSERT ステートメント、
Integration Services パッケージ、
SELECT INTO、
INSERT INTO など
このため、障害発生時に、期待通りの復旧ができない可能性がある
単純(Simple)モデル
チェックポイントが完了するごとに、トランザクションログを切り捨てる
ログの肥大化を防ぐことができる
障害発生時に、障害が発生した直前にはデータを復旧できない
(バックアップを取得した時点までの復旧となる)
トランザクションログのバックアップもとれない
※ ログの肥大化で、ディスク領域を圧迫している場合、
完全 から 単純 に切り替えて、バックアップを実行し、ログを切り捨てる
(Windows Server 2008 R2, SQL Server 2008 R2)
タグ:SQL
Windowsサーバ Listen port 確認
Windowsのネットワーク・サービスは、特定のTCPやUDPのポートで
リッスン(待ち受け = クライアントからの要求受付)している
どのサービスやプロセスがどのポートを使用しているか netstat で確認できる
----------
C:\>netstat -oan
Active Connections
Proto Local Address Foreign Address State PID
:
:
TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING 7052
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING 2292
:
:
----------
-a : アクティブなコネクションとリッスンしているポートを表示
-n : ポート番号を表示
-o : ポートを使用しているプロセスIDを表示
PID 7052 を タスクマネージャで探してみると、MSSQLSERVER であることが見て取れる
また、ポート番号 1433 は、
ポート番号とサービス名の対応を記述した services ファイル
(%windir%\system32\drivers\etc\services)
を覗いてみると、以下の記述より、SQL-Server であることが分かる
# <service name> <port number>/<protocol> [aliases...] [#<comment>]
ms-sql-s 1433/tcp #Microsoft-SQL-Server
(Windows 2008 R2, netstat)
タグ:network
SQL Server 2008 R2 SSISパッケージで Import/Export を定期実行する
SSISパッケージをウィザードで作成し、SQLエージェントで実行させる。
.csv ファイルのImportのケースについて記述。Exportは、この逆の設定になる。
DTS wizard を起動する
"C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSWizard.exe"
データソースの選択
全般ページで、
データソース = "フラットファイルソース"
ファイル名 = import する .csv ファイルを選択
ロケール = "日本語”
コードページ = 932(shift-JIS)を選択
形式 = "区切り記号"
テキスト修飾子 = '"'(ダブルクオテーション)
ヘッダ行区切り記号 = {CR}{LF}
スキップするヘッダ行 = 0
"先頭データを列名として使用する" をチェック
詳細設定ページで、
import後の 各列 の 型定義
[次へ]
変換先の選択
変換先 = "SQL Server Native Client 10.0"
サーバ名 = import先のサーバ名
認証 = "SQL Server 認証を使用する"
ユーザ名/パスワードを指定する
データベース = import先のデータベース名
[次へ]
コピー元のテーブルおよびビューを選択
変換元 = import する .csv ファイル
変換先 = import先のテーブル名
必要に応じて、[マッピングの編集] や [プレビュー] を行う
[次へ]
パッケージの保尊および実行
"すぐに実行する" をチェック
"SSISパッケージを保存する" をチェック
"ファイルシステム" を選択
(SQL Server内に保存すると、転用ができずメンテナンス性も悪くなる)
"パッケージの保護レベル" は "すべてのデータをパスワードで暗号化する"
パスワードを設定する
[次へ]
SSISパッケージの保存
名前/説明 = 任意の名前、説明を設定
ファイル名 = SSISパッケージの出力先のパスを指定
(D:\ssis\CsvImport.dtsx など)
[次へ]
ウィザードの完了
設定内容の一覧を確認し [完了] とすると、
.dtsx ファイルが出力され、データ import が実施される
SQL Server Management Studio で job を構成する
SQL Serverエージェント > ジョブ を右クリックして "新しいジョブ" を開く
全般ページ
名前 = 任意の名前を指定
説明 = 必要により記述
ステップ ページ
※import先のテーブルに既にデータがある場合 trancate する(つまりdelete&insert)
新規作成
ステップ名 = 任意の名前を指定(RunDeleteなど)
種類 = Transact-SQLスクリプト(T-SQL)
データベース = import先のデータベース名
コマンド = USE [DBname]
GO
Truncate Table [dbo].[TableName];
[OK]
新規作成
ステップ名 = 任意の名前を指定(RunSSISpkgなど)
種類 = SQL Server Integration Service パッケージ
パッケージソース = ファイルシステム
パッケージ = 作成したSSISパッケージのパスを指定
[OK]
設定したパッケージのパスワードを聞かれるので入力する
スケジュールページ
定期実行するスケジュールを設定する
[OK]
(Windows Server 2008 R2, SQL Server 2008 R2, SSIS, DTS)
Access起動時にSQL serverとのODBC接続を自動更新させる
ODBC接続を行うVBAモジュールを作成し、これをAccess2010のマクロ "AutoExec" からcallする
AccessDB.accdb を開き、
作成 > 標準モジュール > VBA の Module1 編集画面で、
VBA のコード(ex. RefreshODBCLink) を記述する
作成 > マクロ > マクロ作成画面で 、
"プロシージャの実行" を選択し、"プロシージャ名" で RefreshODBClink() を入力 > [保存] >
マクロ名を "AutoExec" として保存する
VBAモジュールの例:
----------
Function RefreshODBClink()
Dim Dbs As DAO.Database
Dim Tdf As DAO.TableDef
Dim strODBC As String
Set Dbs = CurrentDb
strODBC = "ODBC;DRIVER=SQL Server;UID=uid;PWD=password;LANGUAGE=日本語;DATABASE=dbname;SERVER=servername;"
' ODBCLink の再接続
For Each Tdf In Dbs.TableDefs
If Tdf.Connect Like "ODBC;*" Then
Debug.Print "Set Tdf Connect:" & Tdf.Name & ":" & strODBC
Tdf.Connect = strODBC
Tdf.RefreshLink
Tdf.Fields.Refresh
End If
DoEvents
Next Tdf
Dbs.TableDefs.Refresh
End Function
----------
ODBCリンクを作成するVBA
(Windows7, SQL Server 2008 R2, ODBC, Access 2010)
SQL Server 2008 データベースのバックアップ job
2つの方法についての備忘録
SQL Server エージェント job で実行
.bat を Windowsタスクスケジューラで実行
(メンテナンスプランでの設定は割愛)
SQL Server エージェント job の作成
"SQL Server Management Studio" を開く >
"オブジェクトエクスプローラ" で "SQL Server エージェント" を右クリック > 新規作成 > ジョブ
"新しいジョブ" ダイアログが開く
"全般" ページで、
名前 : 任意の名前を指定
有効 : チェックする
"ステップ" ページで、
[新規作成] > "新しいジョブステップ" ダイアログが開く
"全般" ページで
ステップ名 : 任意の名前を指定
種類 : オペレーティングシステム(CmdExec)
コマンド : 以下のコマンドを入力
sqlcmd -S [ServerName\MSSQLSERVER] -U [UserName] -P [Password]
-Q "BACKUP DATABASE [DatabaseName] TO DISK='[D:\BackupPath\DatabaseName.bak]' WITH INIT"
"詳細設定" ページで
"成功した場合のアクション" : "成功を報告してジョブを終了する"
"失敗した場合のアクション" : "失敗を報告してジョブを終了する"
"履歴にステップ出力を含める" : チェックする
[OK] > [OK]
"スケジュール" ページで
[新規作成] > ジョブを実行するスケジュールを設定する
[OK]
作成された job を右クリック > ステップでジョブを開始 として動作を確認する
上記コマンドで .sql ファイル を外だしにする場合
以下の内容の script.sql ファイルを作成する
BACKUP DATABASE [DatabaseName] TO DISK='[D:\BackupPath\DatabaseName.bak]' WITH INIT
Go
上記コマンドでは、以下のように .sql ファイルを指定
sqlcmd -S [ServerName\MSSQLSERVER] -U [UserName] -P [Password]
-i '[D:\ScriptPath\]script.sql'
.bat を作成し Windowsタスクスケジューラを設定
以下の内容で BackupSQL.bat ファイルを作成する
sqlcmd -S [ServerName\MSSQLSERVER] -U [UserName] -P [Password]
-Q "BACKUP DATABASE [DatabaseName] TO DISK='D:\BackupSQL\[DatabaseName.bak]' WITH INIT" > D:\BkupSQL\result.log
Windowsタスクスケジューラで、ジョブを実行するスケジュールを設定する
(Windows 2008 R2, SQL Server 2008 R2)
SQL server 2008 デタッチ、アタッチでデータベースを移行
移行元のサーバにて "SQL Server Management Studio" を開く >
"オブジェクトエクスプローラ" で 移行したいデータベースを右クリック > プロパティ >
"プロパティ" ダイアログが開く
"ファイル" ページで、.mdf ファイルのあるパスを確認して [キャンセル]
移行したいデータベースを右クリック > タスク > デタッチ
Windows Explorerで、確認したパスにある
データファイル(mdf、ndf)、ログ ファイル (ldf) を
移行先のサーバへコピー
通常は、移行元、移行先とも以下のような SQL server インスタンス配下になる
D:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
移行先のサーバにて "SQL Server Management Studio" を開く >
"オブジェクトエクスプローラ" で "データベース" を右クリック > アタッチ
"データベースのアタッチ" ダイアログが開く
[追加] として、コピーしたファイルを選択して [OK]
デタッチした移行元のデータベースも再びタッチしておく
(Windows 2008 R2, SQL Server 2008 R2)