Microsoft SQL Serverでデータベースを設定
データベース要件1 - 大文字と小文字の区別なし
大文字と小文字を区別しない方法でSQLを解釈するようにデータベースを設定済みであることが必要です。大文字と小文字を区別しない照合は、Latin1_General_CI_ASとしてください。
データベース要件2 - 混合認証モード
混合認証モードは通常、SQL Serverのインストール処理中に設定されます。
- サインインして、ツリーのルート(SQL Server Expressのインスタンス)を右クリックします。
- [Security] (セキュリティ)に移動します。
- [SQL Server and Windows Authentication mode] (SQL ServerとWindows認証モード)を選択します。
データベース要件3 - TCP/IPプロトコルが有効である
TCP/IPプロトコルが、SQL Server Configuration Manager内で、名前付きインスタンスとクライアントプロトコルの両方に対して有効になっている必要があります。変更後にサービスを再起動します。
データベース要件4 - データベースの所有者である
Talend Data CatalogをSQL Serverデータベースに接続するデータベースログインは、データベースの所有者である必要があります。
データベース要件5 - SQL Server 2017以降のSQL共通言語ランタイム(CLR)の厳密なセキュリティがある
データベースメンテナンスなどのデータベース集約的な操作はすべて、MIRRepoと呼ばれるストアドプロシージャアセンブリでコンパイルされたC#で書かれたストアドプロシージャーによってSQL Serverに実装されています。このアセンブリは、SAFEに設定された権限で作成されるようにサインされています。
- CLRを有効にします。これは、ストアドプロシージャーを介して.NETアセンブリを実行するためのデフォルトの要件です。
EXEC sp_configure 'clr enabled',1 RECONFIGURE;
-
SQL Server 2017以降を使っている場合、CLRの厳密なセキュリティはデフォルトで有効になっています。以下の手順のいずれか1つを実行する必要があります。
-
データベース内のストアドプロシージャーアセンブリにサインするために使う証明書をインポートし、次のコマンドを使ってUNSAFEアセンブリ権限を付与する。
CREATE CERTIFICATE MIRRepoCert FROM BINARY = 0x308203663082024ea00302010202045eece216300d06092a864886f70d01010b05003075310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d4d6f756e7461696e2056696577312a3028060355040a0c214d65746120496e746567726174696f6e20546563686e6f6c6f67792c20496e632e310d300b06035504030c044d6d4462301e170d3230303630313037303030305a170d3330303630313037303030305a3075310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d4d6f756e7461696e2056696577312a3028060355040a0c214d65746120496e746567726174696f6e20546563686e6f6c6f67792c20496e632e310d300b06035504030c044d6d446230820122300d06092a864886f70d01010105000382010f003082010a0282010100c2ccf729a28a90958f71a68f6acca9f20b5c256b7c76565b2ece0cd1789bec85e9ab538ac38dc268e48c10e17d3eca1aeb14034bc67bafc05475ed013495aada683c74885f12a8bdbf2025ec3c5a0172010e7055ab27a853e77611ee6ae846453702d18ae3080977ddaee50a282b9dab3f077fe1630804b24f05c58280621dc1426fff7115e8a791435687096c09f754608bb9a6ce00002f7131f09cffd417678bddb8f7a703e4e688f2f0af501c52ecef2cbea3d37c45da4239ddb53295adaddb11dc0118b3188adf812c983d5676c5b7356d68e2258ea32cd3216db21dae49df16d2aa1aef39c618e393ce7e1b131b241c557414424fb6c17c825022a5a4270203010001300d06092a864886f70d01010b05000382010100a1db34a6cda0729a796e5ed0fe5b2f4813ff74bf96300c9ca30fb84be44bd7d0bc46c96a0726eae5e829985429ff4ff09b50ece907c5b8c7f8a71f7a16781103d7eaf2e1c7afa39e4774293610e0d04e6b0c76dc9a85891e6f5fed09059960dc7e2a7c1dc14d64aab9718747752d394b22e339da2c7e6ced1626dde991818cbcaf049d8f112a98b2aa2e80d1168f797a6c992e304e4572b4edcf40d270a281f82d7bde64e8d8b5d83574ecf5470f3d1a9d710498e133e9309a043f63b1682972678fba2a33267999795b5d040524e2f875b667dcec08d310e27b6086b2667dde70d4401fe501944f70581e559d5f3f5b72e49ff722e58594b84a8d15d5dd1414; CREATE LOGIN MIRRepoCertLogin FROM CERTIFICATE MIRRepoCert; GRANT UNSAFE ASSEMBLY TO MIRRepoCertLogin;
- 次の手順でSQL Server CLRの厳密なセキュリティを無効にする。
EXEC sp_configure 'show advanced options', 1; RECONFIGURE with override; EXEC sp_configure 'clr strict security', 0; RECONFIGURE with override; EXEC sp_configure 'show advanced options', 0; RECONFIGURE with override;
-
- 2017よりも前のバージョンのSQL Serverを使っている場合は、CLRの厳密なセキュリティを次の手順で有効にする必要があります。
EXEC sp_configure 'clr strict security', 1 RECONFIGURE;
CLRの厳密なセキュリティについては、Microsoft SQLのドキュメンテーションをご参照ください。
データベースのプレパレーション
- サーバー管理者ロールを持つユーザーとしてSQL Serverにログインします。
- SQL Serverのバージョンに応じてCLRの厳密なセキュリティを設定します。
- 以下のコマンドを実行して、データベースMMとユーザーMMを作成します。パスワードはたとえばMM123!とします。
Go CREATE LOGIN MM WITH PASSWORD = 'MM123!'; CREATE DATABASE MM; ALTER DATABASE MM SET SINGLE_USER WITH ROLLBACK IMMEDIATE; ALTER DATABASE MM SET READ_COMMITTED_SNAPSHOT ON; ALTER DATABASE MM SET MULTI_USER WITH ROLLBACK IMMEDIATE; ALTER AUTHORIZATION ON DATABASE::MM to MM;
製品は、ファイルからではなくバイナリからロードされるMIRRepoという名前の1つのアセンブリに依存しています。このバイナリはSAFE権限で作成されたものです。MMユーザーは、データベース所有者であることに加え、CREATE ASSEMBLY権限を付与されている必要があります。
データベース接続
高度なSQL Serverの管理者は、SQL Serverをネットワーク経由で実行するためのTCP/IPポートのセットを定義(「ハードコード」)できます。Microsoftは現在、SQL Server Browserサービスの実行を推奨しています。これは、[Services] (サービス)パネルまたはSQL Server Configuration Managerのいずれかで実行できます。
詳細は、リモート接続を受け入れるためにExpressを設定する方法をご参照ください。
jdbc:sqlserver://<dbServer>:<dbPortNumber>;databasename=<dbName>
その他のSQL Serverエディションの場合、SQL Server Expressのデフォルトデータベースインスタンス名はsqlexpressとsqlserverです。
デフォルトのSQL Server TCP/IPポート番号は1433です。
デフォルト以外の名前付きSQL Serverインスタンスに接続できます。
- [SQL Server browser] (SQL Server ブラウザー)サービスが実行中の場合。
ケース アクション 名前付きインスタンスがダイナミックポートをリッスンするように設定されている場合
インストーラーで、HOSTNAME\INSTANCENAMEの形式でインスタンス名のみを指定し、ポートは指定しません。ポートフィールドは空のままにしておきます。例: jdbc:sqlserver://localhost\sqlexpress;databaseName=MM;
名前付きインスタンスが静的IPポートをリッスンするように設定されている場合
SQL Serverインスタンスは静的TCP/IPポートで実行されるように設定されている必要があり、そのポートはたとえば次のようにインストーラーで指定されている必要があります: jdbc:sqlserver://localhost\sqlexpress:1433;databaseName=MM;
-
[SQL Server browser] (SQL Serverブラウザー)サービスが実行されていない場合。
インストーラーで、たとえば次のようにインスタンスのポートのみを指定します: jdbc:sqlserver://localhost:1433;databaseName=MM;
- [SQL Server browser] (SQL Server ブラウザー)サービスが実行中の場合。
- ドメインアカウントを使ってSQL Serverに接続できます。
- %OMM_HOME%\java\Jdbc\mssqlでmssql JDBCドライバーを見つけます(mssql-jdbc-7.4.1.jre11.jarなど)。
- SQL Server用のMicrosoft JDBCドライバー(同じバージョン)をダウンロードして、コンテンツを抽出します。
sqljdbc_auth.dllはMicrosoft JDBC driver x.x for SQL Server\sqljdbc_x.x\enu\auth\x64で、mssql-jdbc-x.x.x.jre11.jarはMicrosoft JDBC driver x.x for SQL Server\sqljdbc_x.x\enuで見つかります。
- sqljdbc_auth.dllを%OMM_HOME%\binにコピーします。
- %OMM_HOME%\java\Jdbc\mssqlにあるmssql-jdbc-x.x.x.jre11.jarを、Microsoft JDBC driver x.x for SQL Server\sqljdbc_x.x\enuにあるもので置き換えます。
- [Configure Database Connection] (データベース接続の設定)ウィンドウで、データベースURLの末尾に;integratedSecurity=trueという文字列を追加します(例: jdbc:sqlserver://localhost:1433;databasename=MM;integratedSecurity=true)。
- 他のフィールドを指定して、[TEST CONNECTION] (接続のテスト)をクリックします。