SSブログ

VMware 仮想 Guestサーバ(Windows 2008)のディスク拡張

通常、仮想デバイスノードが SCSI で、システムドライブでなければ、
オンラインでディスク容量の拡張ができる

Guestサーバを選択し、[サマリ] タブ から、"設定の編集" を開く >
拡張したいハードディスクを選択し、
"ディスクプロビジョニング" で 希望の拡張サイズを指定 > [OK] とする

Guestサーバ(Windows 2008)のサーバマネージャを開き、
記憶域 > ディスクの管理 を開く >
拡張を実施したディスクに、拡張したサイズ分の "未割り当て" 領域が
表示されていることを確認

コマンドプロンプトを開き、diskpart.exe で割り当て領域を拡張する

==========
C:\Users\Administrator>diskpart

Microsoft DiskPart バージョン 6.0.6002
Copyright (C) 1999-2007 Microsoft Corporation.
コンピュータ: ESX-HOST1

DISKPART> list volume

  Volume ###  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> extend

DiskPart はボリュームを正常に拡張しました。

DISKPART> list volume

  Volume ###  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サーバのシステムドライブの容量の拡張


タグ:VMWare Windows

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) 
 

タグ:SQL SSIS

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)
 

ODBCリンクを作成するVBA


タグ:SQL ODBC access

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)
 


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