データベースとアクセス許可を作成する (SQL Server と RevoScaleR のチュートリアル)
適用対象: SQL Server 2016 (13.x) 以降のバージョン
これは、SQL Server で RevoScaleR 関数を使用する方法についての RevoScaleR チュートリアル シリーズのチュートリアル 1 です。
このチュートリアルでは、SQL Server データベースを作成し、このシリーズの他のチュートリアルを完了するために必要なアクセス許可を設定する方法について説明します。 SQL Server Management Studio または別のクエリ エディターを使用して、次のタスクを完了します。
- 2 つの R モデルのトレーニングとスコアリングに使用するデータを格納するための新しいデータベースを作成します
- データベース オブジェクトを作成および使用するための権限を持つデータベース ユーザー ログインを作成する
データベースの作成
このチュートリアルでは、データとコードを格納するデータベースが必要です。 管理者でない場合は、DBA に、データベースとあなたのログイン情報の作成を依頼してください。 データの書き込みと読み取り、および R スクリプトの実行をするためのアクセス許可が必要です。
SQL Server Management Studio で、R が有効にされたデータベース インスタンスに接続します。
[データベース] を右クリックして、 [新しいデータベース] をクリックします。
新しいデータベースの名前を入力します:RevoDeepDive。
ログインを作成します
[新しいクエリ] をクリックして、データベース コンテキストを master データベースに変更します。
新しい [クエリ] ウィンドウで、次のコマンドを実行してユーザー アカウントを作成し、このチュートリアルで使用するデータベースに割り当てます。 必要に応じてデータベースの名前を変更します。
ログインを確認するには、新しいデータベースを選択し、 [セキュリティ] 、 [ユーザー] の順に展開します。
Windows ユーザー
-- Create server user based on Windows account
USE master
GO
CREATE LOGIN [<DOMAIN>\<user_name>] FROM WINDOWS WITH DEFAULT_DATABASE=[RevoDeepDive]
--Add the new user to tutorial database
USE [RevoDeepDive]
GO
CREATE USER [<user_name>] FOR LOGIN [<DOMAIN>\<user_name>] WITH DEFAULT_SCHEMA=[db_datareader]
SQL ログイン
-- Create new SQL login
USE master
GO
CREATE LOGIN [DDUser01] WITH PASSWORD='<type password here>', CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;
-- Add the new SQL login to tutorial database
USE RevoDeepDive
GO
CREATE USER [DDUser01] FOR LOGIN [DDUser01] WITH DEFAULT_SCHEMA=[db_datareader]
アクセス許可の割り当て
このチュートリアルでは、R スクリプトと DDL 操作のデモを実行します。これには、テーブルとストアド プロシージャの作成と削除、および SQL Server における外部プロセスの R スクリプトの実行が含まれます。 この手順では、これらのタスクを許可するためのアクセス許可を割り当てます。
この例では、SQL ログイン (DDUser01) が想定されていますが、Windows ログインを作成した場合は、それを代わりに使用します。
USE RevoDeepDive
GO
EXEC sp_addrolemember 'db_owner', 'DDUser01'
GRANT EXECUTE ANY EXTERNAL SCRIPT TO DDUser01
GO
接続のトラブルシューティング
このセクションでは、データベースを設定する過程で発生する可能性がある一般的な問題を示します。
データベースの接続と SQL クエリを確認するにはどうすればよいですか。
サーバーを使用して R コードを実行する前に、R の開発環境からデータベースにアクセスできることを確認したい場合があります。 Visual Studio のサーバー エクスプローラー と SQL Server Management Studio はどちらも、強力なデータベース接続と管理機能を持つ無償のツールです。
新しいデータベース管理ツールをインストールしたくない場合は、コントロール パネルの ODBC データ ソース アドミニストレーター を使用して、SQL Server インスタンスへのテスト接続を作成できます。 データベースが正しく構成されていて、正しいユーザー名とパスワードを入力した場合は、先に作成したデータベースを表示し、既定のデータベースとして選択することができます。
接続エラーの一般的な理由として、サーバーに対してリモート接続が有効になっていない、および名前付きパイプ プロトコルが有効になっていないことが挙げられます。 この記事では、その他のトラブルシューティングのヒントを得ることができます。SQL Server データベース エンジンへの接続のトラブルシューティング。
テーブル名に datareader というプレフィックスが付くのはなぜですか。
このユーザーの既定のスキーマを db_datareader と指定すると、このユーザーが作成したすべてのテーブルとその他の新しいオブジェクトの名前の前に、このスキーマ名が付加されます。 スキーマは、オブジェクトを整理するためにデータベースに追加できるフォルダーのようなものです。 スキーマでは、データベース内でのユーザーの権限も定義されています。
スキーマが 1 つの特定のユーザー名に関連付けられている場合は、そのユーザーがスキーマの所有者です。 オブジェクトを作成するときは、別のスキーマに作成することを明示的に要求しない限り、常に自分用のスキーマに作成されます。
たとえば、TestData という名前のテーブルを作成し、既定のスキーマが db_datareader である場合、テーブルは
<database_name>.db_datareader.TestData
という名前で作成されます。このため、テーブルが異なるスキーマに属していれば、1 つのデータベースに同じ名前の複数のテーブルを含めることができます。
テーブルを検索するときにスキーマを指定しないと、データベース サーバーはユーザーが所有するスキーマを探します。 そのため、自分のログインに関連付けられているスキーマ内のテーブルにアクセスするときは、スキーマ名を指定する必要はありません。
DDL 特権を持っていません。 それでもチュートリアルを実行できますか。?
はい。ただし、SQL Server テーブルにデータを事前に読み込んで、次のチュートリアルに進むように依頼する必要があります。 DDL 特権が必要な関数は、可能なときにはいつでもチュートリアルで呼び出されます。
また、管理者に、すべての外部スクリプトを実行する権限を付与してくれるよう依頼します。 これは、リモートまたは
sp_execute_external_script
を使用して R スクリプトを実行する場合に必要です。