Windows 認証は、デフォルトの認証モードで、SQL Server 認証よりも安全です。Windows 認証を使用することで、ドメインレベルで Windows グループを作成し、そのグループ全体に対して SQL Server 上でログインを作成することができます。Windows 認証を使用するためには、以下のことが必要です。
Agent インストール時に作成したサービスアカウントを使用し、このアカウントが SQL Server への適切なアクセス権を持っていることを確認します。
connection_string: "Trusted_Connection=yes" を設定し、username と password フィールドを省略します。Trusted_Connection=yes の接続属性は、SQL Server 用 OLE DB ドライバーが Windows 認証を使用してログインを確認するように指示します。
SQL Server の認証は Windows のユーザーアカウントではなく、インスタンスで作成され、SQL Server 自体に保存されます。SQL 認証では、SQL Server インスタンス構成で username と password を設定して接続する必要があります。
datadog_checks.sqlserver.connection.SQLConnectionError:
Unable to connect to SQL Server for instance foo.com,1433 - master:
OperationalError(com_error(-2147352567, 'Exception occurred.',
(0, 'Microsoft OLE DB Provider for SQL Server',
'Invalid connection string attribute', None, 0, -2147467259), None),
'Error opening connection to "ConnectRetryCount=2;Provider=SQLOLEDB;Data Source=foo.com,1433;Initial Catalog=master;User ID=datadog;Password=******;"')
-2147217843“login failed for user”: これは、Agent がホストへの接続を確立することに成功したが、何らかの理由でログインが拒否されたことを意味します。
-2147467259“could not open database requested for login”: このエラーは、ネットワークの問題または不明なデータベースが原因で表示されます。
どちらの手順でも問題が解決しない場合、または表示されるエラーコードがリストにない場合、Datadog は MSOLEDBSQL ドライバーまたは Microsoft ODBC Driver for SQL Server を使用することを推奨しています。これらのドライバーは、より詳細なエラーメッセージを提供し、接続が失敗している理由のトラブルシューティングに役立ちます。
SQL Server インスタンスが暗号化を必要としない接続の場合 (AWS では rds.force_ssl=0)、接続文字列に Use Encryption for Data=False; を追加して更新してください。例:
# example uses windows authenticationinstances:- host:<INSTANCE_ENDPOINT>,<PORT>connection_string:"Trust Server Certificate=True;Use Encryption for Data=False;"connector:adodbapiadoprovider:MSOLEDBSQL19
# example uses windows authenticationinstances:- host:<INSTANCE_ENDPOINT>,<PORT>connection_string:"Trusted_Connection=yes;"connector:adodbapiadoprovider:MSOLEDBSQL
MSOLEDBSQL 2019 以外の OLE DB ドライバーまたは ODBC ドライバーを使用している場合、接続文字列に TrustServerCertificate=yes を設定することで、このエラーを解決することができます。例えば、ODBC ドライバーの場合:
# この例では、SQL Server 認証を使用していますinstances:- host:<INSTANCE_ENDPOINT>,<PORT>username:datadogpassword:<DD_AGENT_PASSWORD>connection_string:"TrustServerCertificate=yes;"connector:odbcdriver:'{ODBC Driver 18 for SQL Server}'
SQL Server の conf.yaml を構成して、odbc コネクターを使用し、odbcinst.ini ファイルに示されているように適切なドライバーを指定します。
init_config:instances:- host:<HOST>,<PORT># enable the odbc connectorconnector:odbc# enable the ODBC driverdriver:ODBC Driver 13 for SQL Serverusername:<USERNAME>password:<PASSWORD>
SQL Server Agent Job のチェックには、msdb データベースに対する SELECT 権限が必要です。エラー The SELECT permission was denied on the object 'sysjobs' (SELECT 権限がオブジェクト ‘sysjobs’ で拒否されました) が表示された場合は、Agent が SQL Server インスタンスへの接続に使用しているユーザーに SELECT 権限を付与する必要があります。