Tôi muốn dùng thử tính năng người dùng cơ sở dữ liệu chứa trên Azure SQL Database V12, nhưng tôi gặp vấn đề khi xác thực có vẻ kỳ lạ đối với tôi.
Tôi đã tạo ra một cơ sở dữ liệu được gọi là Classifier
. Tôi đã thêm IP của mình vào các quy tắc tường lửa để tôi có thể kết nối với máy chủ db Azure từ SSMS trên máy trạm của mình. Khi tôi có thể kết nối thông qua SSMS để quản trị, tôi đã thử thêm người dùng bằng mật khẩu vào cơ sở dữ liệu, như sau:
CREATE USER classifier WITH PASSWORD='thepassword'
Tôi cũng đã thêm người dùng này vào vai trò người đọc và ghi dữ liệu:
exec sp_addrolemember 'db_datawriter', 'classifier'
exec sp_addrolemember 'db_datareader', 'classifier'
Sau này, tôi có thể kết nối với cơ sở dữ liệu với các thông tin đăng nhập từ SSMS:
Nhưng đây là lúc mọi thứ trở nên tồi tệ: Tôi đã thử một số câu thần chú chuỗi kết nối khác nhau và dường như không thể kết nối trong một ứng dụng web mà tôi đang làm việc. Nó không hoạt động trong môi trường Azure, vì vậy tôi đang chạy trên localhost với chuỗi kết nối đến cơ sở dữ liệu Azure và nó sẽ không kết nối. Đây là chuỗi kết nối tôi đang sử dụng tại thời điểm này:
<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"/>
Tôi đã thử đặt lại mật khẩu (thông qua SSMS) cho người dùng và sau đó cập nhật chuỗi kết nối; Tôi cũng đã kiểm tra lại mật khẩu bằng cách sao chép nó ngay từ chuỗi kết nối này và vào hộp thoại kết nối trong SSMS để đảm bảo rằng tôi không có lỗi đánh máy nào đó ở đó.
Tôi đã kích hoạt kiểm toán trong máy chủ Azure Azure với hy vọng có được một số chi tiết về lý do tại sao nó không thành công, nhưng tất cả những gì tôi nhận được là:
Và đây là nơi tôi bị mắc kẹt. Hầu hết những gì tôi có thể tìm thấy bằng tài liệu hoặc blog chỉ ra rằng việc cần làm là xem nhật ký SQL Server để xem trạng thái lỗi thực sự sẽ cho thấy bản chất của sự thất bại hẹp hơn, nhưng vì tôi Tôi đang làm việc với Azure không có cách nào để làm điều đó (theo như tôi biết).
Điều gì có thể khiến ứng dụng thất bại khi SSMS (và LinqPad và Visual Studio Server Explorer, tình cờ) thành công?