Azure SQL Database V12に含まれるデータベースユーザー機能を試してみたかったのですが、認証に問題があり、奇妙に思えます。
というデータベースを作成しましたClassifier
。ワークステーションのSSMSからAzure dbサーバーに接続できるように、ファイアウォールルールにIPを追加しました。管理のためにSSMSを介して接続できるようになったら、次のようにパスワードを持つユーザーをデータベースに追加してみました。
CREATE USER classifier WITH PASSWORD='thepassword'
また、このユーザーをデータライターおよびリーダーの役割に追加しました。
exec sp_addrolemember 'db_datawriter', 'classifier'
exec sp_addrolemember 'db_datareader', 'classifier'
この後、SSMSからのこれらの資格情報を使用してデータベースに接続できます。
しかし、これが問題の原因です。いくつかの異なる接続文字列の呪文を試してみましたが、作業中のWebアプリで接続できないようです。Azure環境では機能しなかったため、Azureデータベースへの接続文字列を使用してlocalhostで実行していますが、接続できません。現在使用している接続文字列は次のとおりです。
<add name="Classifier" connectionString="Data Source=xxxxxxx.database.secure.windows.net;Initial Catalog=Classifier;User ID=classifier;Password=xxxxxxxxxxxxx;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient"/>
ユーザーのパスワードを(SSMS経由で)リセットしてから、接続文字列を更新しようとしました。また、この接続文字列からSSMSの接続ダイアログにパスワードをコピーしてパスワードを再確認し、そこに何らかのタイプミスがないことを確認しました。
Azure dbサーバーで監査を有効にし、失敗の理由に関する詳細を取得することを期待していますが、取得できるのはこれだけです:
そして、これは私が立ち往生しているところです。ドキュメントやブログで見つけることができたもののほとんどは、SQL Serverログを調べて、エラーの性質をより厳密に示す実際のエラー状態を確認することを示していますが、 Azureを扱っているので、それを行う方法はありません(私の知る限り)。
SSMS(およびLinqPadおよびVisual Studio Server Explorer)が成功した場合、アプリケーションが失敗する原因は何ですか?