Cloud DB for MSSQL を開始する

Prev Next

VPC環境で利用できます。

Cloud DB for MSSQLを開始するでは、Cloud DB for MSSQL動作環境とサポート環境を確認して全体使用シナリオ用語を熟知した後、Cloud DB for MSSQLを正常に使用するためにユーザーがすべきことを説明します。Cloud DB for MSSQLを開始するで説明する内容は、次の通りです。

  • NAVERクラウドプラットフォームコンソールでアプリケーションサーバを作成する方法
  • アプリケーションサーバへのアクセステストを行う方法
  • NAVERクラウドプラットフォームコンソールでの MSSQL Serverの作成方法
  • MSSQL Serverへのアクセステスト方法

ここまで完了したら、Cloud DB for MSSQL使用のための基本過程を完了したことになります。今後さらに効率的なサーバ管理や運用を行うために、以下のようなタスクも行えます。

  • NAVERクラウドプラットフォームの Cloud Insightを活用したイベントと通知(アラーム)の設定
  • NAVERクラウドプラットフォームの Sub Accountを活用した運用権限管理

このタスクは Cloud DB for MSSQLではなく Cloud Insight、Sub Accountでご利用の申し込み後に行えます。本ガイドでは詳しく説明いたしません。詳細は、Cloud Insight ご利用ガイドSub Account ご利用ガイドをご参照ください。

アプリケーションサーバ作成

NAVERクラウドプラットフォームコンソールでアプリケーションサーバを作成する方法は、次の通りです。

参考

ここでは、アプリケーションサーバの作成方法を簡単に説明します。全体作成方法についての詳細は、Serverご利用ガイドをご参照ください。

  1. NAVERクラウドプラットフォームコンソールにアクセスします。
  2. コンソール画面右上の リージョン&プラットフォーム をクリックします。
  3. 利用中のリージョンと VPC プラットフォームを選択し、 [適用] ボタンをクリックします。
  4. コンソール画面左上の i_menuをクリックします。
  5. Services > Compute > Server メニューを順にクリックします。
  6. [サーバ作成] ボタンをクリックします。
  7. Windows サーバイメージをクリックして選択し、[次へ] ボタンをクリックします。
  8. 必要な情報を入力し、 [次へ] ボタンをクリックします。
  9. 保有中の認証キーがない場合、新しい認証キーを作成して [次へ] ボタンをクリックします。
  10. 保有中の ACGがない場合、新規 ACGを作成します。
  11. 最終確認後、 [サーバ作成] ボタンをクリックします。
注意
  • リモートデスクトップ接続のために3.で Windowsタイプのサーバイメージを選択します。
  • アプリケーションサーバの ACG名は、今後 MSSQL Serverに ACGを追加する時に使用します。

アクセス環境設定

NAVERクラウドプラットフォームコンソールの VPC環境でサーバアクセス環境を設定するには、パブリック IPアドレスを設定します。

参考

ここでは、アクセス環境の設定方法を簡単に説明します。アクセス環境の設定方法に関する詳細は、以下のガイドをご参照ください。

パブリック IPアドレスの設定

パブリック IPアドレスを設定する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、 i_menu > Services > Compute > Server メニューを順にクリックします。
  2. Public IP メニューをクリックします。
  3. [パブリック IPアドレスの申し込み] ボタンをクリックします。
  4. 適用サーバを選択してメモを入力した後、 [次へ] ボタンをクリックします。
  5. [作成] ボタンをクリックします。

管理者パスワードの確認

パブリック IPアドレスの設定後にアプリケーションサーバへのアクセスに必要な管理者(root)パスワードを確認する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、 i_menu > Services > Compute > Server メニューを順にクリックします。
  2. [サーバ管理と設定変更] ボタンをクリックし、管理者パスワードの確認メニューをクリックします。
  3. サーバの作成時に作った認証キーを入力します。
  4. [パスワード確認] ボタンをクリックします。
  5. パスワードを確認します。

アプリケーションサーバアクセステスト

リモートデスクトップ接続を利用してアプリケーションサーバに正常にアクセスできるかテストする方法は、次の通りです。

  1. 開始する > すべてのプログラム > アクセサリ > リモートデスクトップ接続 メニューを順にクリックします。
  2. コンピュータ にサーバアクセス用パブリック IPアドレスを入力します。
    clouddbformssql-start-appconnect_vpc_ko
  3. [接続] ボタンをクリックします。
  4. ユーザー認証情報入力 のポップアップが表示されたら、管理者パスワードの確認で取得した IDとパスワードを入力します。
    clouddbformssql-start-appconnect2_vpc_ko
  5. [確認] ボタンをクリックします。
  6. リモートデスクトップ接続 警告画面が表示されたら、[はい(Y)] ボタンをクリックします。
    clouddbformssql-start-appconnect3_vpc_ko
参考

Ctrl + Alt + End > パスワード変更 を通じてパスワードを変更できます。

MSSQL Server作成

NAVERクラウドプラットフォームで提供するサービスの中から一部は、コンソールでご利用の申し込み手続を経た後、実際に使用することになります。しかし、Cloud DB for MSSQLの場合は別途ご利用の申し込みがなく、MSSQL Server作成と共に使用を開始します。NAVERクラウドプラットフォームコンソールで MSSQL Serverを作成する方法は、次の通りです。

参考
  • ここでは、DB Serverの作成方法を簡単に説明します。全体作成方法に関する詳細は、 MSSQL Server作成をご参照ください。
  • Cloud DB for MSSQLは別途ご利用の申し込みがなく、解約手続きも別途存在しません。Cloud DB for MSSQLの使用を停止して課金されないようにするには、作成して運用中であった MSSQL Serverを削除します。MSSQL Serverを削除する方法は、MSSQL Server削除をご参照ください。
  1. NAVERクラウドプラットフォームコンソールの VPC環境で、 Services > Database > Cloud DB for MSSQL メニューを順にクリックします。
  2. DB Server メニューをクリックします。
  3. [DB Server作成] ボタンをクリックします。
  4. サービスの申し込み画面が表示されたら、必要な情報を入力した後に [次へ] ボタンをクリックします。
  5. [作成] ボタンをクリックします。

ACG設定

NAVERクラウドプラットフォームコンソールで MSSQL Serverの ACG(Access Control Group)を設定する方法は、次の通りです。

参考

ここでは、ACGの設定方法を簡単に説明します。ACGの設定方法に関する詳細は、ACGご利用ガイドをご参照ください。

  1. NAVERクラウドプラットフォームコンソールの VPC環境で、 i_menu > Services > Database > Cloud DB for MSSQL メニューを順にクリックします。
  2. ACG メニューをクリックします。
    clouddbformssql-start_acg_vpc_ko
  3. 設定する ACGをクリックして選択した後、 [ACG設定] ボタンをクリックします。
    • 自動で作成された MSSQLサーバの ACGを選択
  4. アクセスソース にアプリケーションサーバの ACG名を入力します。
  5. 許可ポート にポート番号を入力します。
  6. [追加] ボタンをクリックします。
  7. [適用] ボタンをクリックします。

MSSQL Serverアクセステスト

MSSQL Clientをインストールして作成した MSSQL Serverに正常にアクセスできるかテストする方法は、次の通りです。

  1. MSSQL Serverにアクセスするための DNS名、DBアクセスポート、アカウント IDとパスワード情報を確認します。
    • Services > Database > Cloud DB for MSSQL > DB Server メニューをクリックします。
    • アクセスする MSSQL Serverのサービス名をクリックした後、次を確認します。
      • DNS名: Privateドメイン を確認
      • DBアクセスポート: DBアクセスポート を確認
    • [DB管理] > DB User管理 でアカウント IDとパスワードを確認します。
  2. アプリケーションサーバにアクセスした後、SSMSダウンロードしてインストールします。
  3. SSMSにアクセスします。
  4. サーバ接続のポップアップに DBサーバ情報を入力します。
    database-9-1-501_ko
    • サーバタイプ : データベースエンジン
    • サーバ名 : DNS名、DBアクセスポート(コンマで区切って入力)
      • DNS名 : アクセスする MSSQL Serverの Privateドメイン
      • DBアクセスポート : アクセスする MSSQL Serverのアクセスポート
    • 認証 : SQL Server認証
    • ログイン : アクセスする MSSQL Serverのユーザーアカウント名
    • パスワード : アクセスする MSSQL Serverのユーザーアカウントのパスワード
  5. [接続] ボタンをクリックします。

データマイグレーション(バックアップ復旧)

オンプレミスで運用中であったデータベースを Cloud DB for MSSQL(CDB-MSSQL)にマイグレーションしたり、CDB-MSSQLからオンプレミスに移動するためにはウィンドウアプリケーションサーバを作成します。データマイグレーションは SQL Serverのバックアップと復旧を利用して実行し、アプリケーションサーバにオンプレミスで運用中であったデータベースのバックアップをアップロードした後に行ったり、CDB-MSSQLのバックアップを当該アプリケーションサーバを対象に実行できます。

参考
  • アプリケーションサーバは CDB-MSSQLと同じ VPCネットワーク環境にします。
  • アプリケーションサーバを利用したバックアップ復旧のために、アプリケーションサーバのネットワークと共有センターで「パスワード保護共有オフ」を設定します。
  • アプリケーションサーバデータを保護するための適切な ACG設定が必要です(アプリケーションサーバ TCP 445 Portは必ずオープン)。
  1. アプリケーションサーバ作成
    • CDB-MSSQLの VPCと Subnetを確認
      clouddbformssql-start-vpc_backup

    • アプリケーションサーバの VPCと Subnetを確認
      clouddbformssql-start-vpc_appserver

    • 作成されたアプリケーションサーバで backupフォルダの作成後に共有設定(Everyone、 Read/Write)
      clouddbformssql-start-vpc_backup-everyone

    • パスワード保護共有オフ

      • Control Panel > Network and Internet > Network and Sharing Center > Advanced sharing settings
      • Password protected sharingオプション > Turn off password protected sharing選択 > 適用
        clouddbformssql-start-vpc_password-setting
  • アプリケーション Serverの ACG設定
    • アプリケーション Serverインバウンド445ポートが VPC帯域でオープンされている必要があります。
      clouddbformssql-start-vpc_appserver-agc-setting_1
  • MSSQL Serverの ACG設定
    • MSSQL Serverアウトバウンド445ポートが VPC帯域でオープンされている必要があります。
      clouddbformssql-start-vpc_appserver-agc-setting_2
  1. バックアップ(サンプル)

    backup database testdb to disk ='\\10.0.1.9\backup\testdb.bak'
    

    database-mssql-backup-sample_ko

  2. 復旧(サンプル)

    • データベースの復旧時に、必ず d:\dataフォルダに復旧します。その他のパスで復旧されたデータベースの安定性は保障しません。
    restore database testdb2 from disk ='\\10.0.1.9\backup\testdb.bak'
    with
      move 'testdb' to 'd:\data\testdb2.mdf',
      move 'testdb-log' to 'd:\data\testdb2_log.ldf'
    

    clouddbformssql-start-vpc_restore_ko

注意
  • 正常に使用するには、ON-PREMISE復旧対象データベースに CDB-MSSQL管理者アカウントがデータベースの所有者の状態でバックアップを行います。
  • ON-PREMISEと CDB-MSSQLユーザーアカウントが同じ場合でも、SIDが異なると復旧後にデータベースを使用できません。
  • 以下のスクリプトを参照し、SIDを同一に設定して ON-PREMISEでバックアップした後、CDB-MSSQLに復元します。

SID のトラブルシューティング

データマイグレーション(バックアップ復旧)で SIDが一致しないために発生した問題に対する解決ガイドです。

  1. ソースサーバに db_ownerを変更して復元する方法(ON-PREMISE → CDB-MSSQL)
タスクサーバ 実行スクリプトの説明と参照 T-SQL Query
CDB-MSSQL
  • 以下の T-SQLコマンドを通じて SIDを確認します。作成した基本管理者アカウントが dbuseridと仮定します。
      SELECT SID FROM master.sys.sql_logins WHERE name='dbuserid'
  • 結果例
      0xDBB5F4FE1DBC594FBF806E807AFE72D6
  • ON-PREMISE
  • ユーザーがマイグレーションするローカル対象サーバへのログインを以下のコマンドを利用して作成します。異なるパスワードでも構いません。
      CREATE LOGIN [dbuserid] WITH PASSWORD = 'P@ssw0rd', SID =0xDBB5F4FE1DBC594FBF806E807AFE72D6, DEFAULT_DATABASE=[master], CHECK_POLICY=OFF, CHECK_EXPIRATION=OFF
  • 既存のデータベース所有者に sysadmin権限を付与し、所有者変更によるエラーの発生を防止します。
  • マイグレーション対象データベース [userdatabase] でデータベース所有者を上記で作成したユーザーに変更します。
  • 以下のコマンドはローカル対象サーバで sa、または administratorアカウントでアクセスして以下のコマンドを行います。
      USE [userdatabase]
      GO
      EXEC sp_changedbowner 'dbuserid'
      GO
  • マイグレーション対象データベースをバックアップします。
      BACKUP DATABASE [userdatabase] TO disk = 'C:\temp\userdatabase.full'
    • バックアップしたデータベースのバックアップファイルを同じ VPC帯域に作成されたアプリケーションサーバに移動します。
  • CDB-MSSQL
  • RESTOREする前にファイルリストを確認します(ユーザーが作成したアプリケーションサーバ VPC IPアドレスが10.0.0.7である場合です)。
      RESTORE filelistonly FROM dist='\\10.0.0.7\backup\userdatabase.full'
  • 確認済みのファイルリストをベースに d:\databaseフォルダに当該データベースを復元します。
  • 同じ名のファイルが存在する場合、エラーが発生することがあります。
      RESTORE DATABASE userdatabase FROM disk='\\\10.0.0.7\backup\userdatabase.full'
      with
      MOVE 'userdatabase' TO 'd:\data\userdatabase.mdf', MOVE 'userdatabase_log' TO 'd:\data\userdatabase.log.ldf'
    1. 復旧対象サーバに db_ownerを追加して使用する方法(CDB-MSSQL → CDB-MSSQL)
    タスク内容、サーバ、ユーザー 実行スクリプトの説明と参照 T-SQL Query
  • AServerAdmin SIDの確認
  • ソースサーバ(AServer)で AServerAdminとして実行
  • ソースサーバ(AServer)で AServerAdminとして実行し、SIDを確認します。
      SELECT SID FROM master.sys.sql_logins WHERE name='AServerAdmin'
  • 結果例
      0xB1CFFCE0AEF0234FB49273E7DD713FFA
  • AServerDB復旧(RESTORE)
  • 復旧対象(BServer)で BServerAdminとして実行
  • Cloud DB for MSSQL を開始するを参照
      RESTORE DATABASE AServerDB FROM DISK='remote path'
  • AServerAdminの SIDと同一に BServerに AServerAdminを作成
  • 復旧対象(BServer)で BServerAdminとして実行
  • パスワードは AServerと一致する必要はありません。
      CREATE LOGIN [AServerAdmin] WITH PASSWORD='P@ssw0rd', SID=0xB1CFFCE0AEF0234FB49273E7DD713FFA, DEFAULT_DATABASE=[master], CHECK_POLICY=OFF, CHECK_EXPIRATION=OFF
      GO
  • BServerに復旧した AServerDBに BServerAdmin db_owner権限を付与
  • 復旧対象(BServer)で AServerAdminとして実行
  • USE AserverDB
    GO
    CREATE USER BServerAdmin FOR LOGIN BServerAdmin
    GO
    ALTER ROLE [db_owner] ADD MEMBER BServerAdmin
    GO
  • BServerに一時的に作った AServerAdminを削除
  • 復旧対象(BServer)で BServerAdminとしてログイン後に実行
  • SELECT SPID FROM sysprocesses WHERE loginame = 'AServerAdmin' コマンドで照会されるすべての SPIDを KILL後に AServerAdminを削除します。
      DROP LOGIN [AServerAdmin]
      GO
  • 参考

    SIDが一致しないためにデータベースを使用できない場合は、コンソールでデータベースを削除できます。

    Agent Jobの設定

    高可用性サーバを選択して作成したサーバで、SQL Server Agent Jobは Principalデータベースサーバでのみ動作するように適切に構成する必要があります。そうでない場合、Mirrorサーバにコピーされた Agent Jobがミラー中のデータベースを対象に動作してエラーを発生させます。
    以下のスクリプトを参照して設定します。スクリプトは冗長化構成サーバでも動作し、冗長化構成で Stand-Aloneに変更しても正常に動作します。

    1. データベース作成および冗長化のためのオプション変更

      • データベースの復旧レベルが単純の場合、データベースの冗長化ができません。
      CREATE DATABASE DBTEST1
      GO
      ALTER DATABASE DBTEST1 SET RECOVERY FULL 
      GO
      
      USE DBTEST1 
      GO
      
      CREATE TABLE TBLX 
      (
      IDX INT IDENTITY(1,1)
      ,CDATETIME DATETIME
      ,CINT INT
      )
      GO
      
      CREATE OR ALTER PROC USP_A 
      AS 
      INSERT INTO TBLX (CDATETIME, CINT) VALUES (GETDATE(), 1)
      GO
      
    2. Agent Jobの Step設定

      • 対象データベースを指定して、exec ('databasename.schemaname.userproc')の形で実行します。
        clouddbformssql-start-vpc_agentjob_ko
      SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
      DECLARE @DB_NAME VARCHAR(1000) = 'DBTEST1'
      
      IF EXISTS (
          SELECT *
          FROM SYS.DATABASES A 
          WHERE HAS_DBACCESS(DB_NAME(A.[DATABASE_ID])) = 1 
               AND DB_NAME(A.DATABASE_ID) = @DB_NAME
      ) 
      BEGIN 
          EXEC ('DBTEST1.DBO.USP_A')
      END 
      ELSE 
      BEGIN 
          SELECT 'MIRROR SERVER JOB SKIPPED'
      END