Azure SQL Veritabanı Uygulamada "Oturum açma kullanıcı için başarısız oldu", ancak SSMS'de iyi çalışıyor


14

Azure SQL Veritabanı V12'de bulunan veritabanı kullanıcıları özelliğini denemek istedim , ancak kimlik doğrulamasının bana garip geldiği bir sorun yaşıyorum.

Adlı bir veritabanı oluşturdum Classifier. IP adresimi güvenlik duvarı kurallarına ekledim, böylece iş istasyonumdaki SSMS'den Azure db sunucusuna bağlanabildim. Yönetim için SSMS ile bağlanabildiğimde, veritabanına şifre olan bir kullanıcıyı aşağıdaki gibi eklemeyi denedim:

CREATE USER classifier WITH PASSWORD='thepassword'

Bu kullanıcıyı veri yazarı ve okuyucu rollerine de ekledim:

exec sp_addrolemember 'db_datawriter', 'classifier'
exec sp_addrolemember 'db_datareader', 'classifier'

Bundan sonra, veritabanına SSMS'den bu kimlik bilgileriyle bağlanabiliyorum:

resim açıklamasını buraya girin

Ama işlerin ters gittiği yer: Birkaç farklı bağlantı dizisi büyüsünü denedim ve üzerinde çalıştığım bir web uygulamasına bağlanamıyorum. Azure ortamında çalışmadı, bu yüzden Azure veritabanına bir bağlantı dizesi ile localhost üzerinde çalışıyorum ve sadece bağlanmayacak. İşte şu anda kullandığım bağlantı dizesi:

<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"/>

Kullanıcı için parolayı (SSMS aracılığıyla) sıfırlamayı ve bağlantı dizesini güncellemeyi denedim; Ayrıca, bu bağlantı dizesinden ve SSMS'deki bağlantı iletişim kutusuna kopyalayarak parolayı iki kez kontrol ettim, orada bir tür yazım olmadığından emin olmak için.

Neden başarısız olduğuna ilişkin bazı ayrıntılar almayı umarak Azure db sunucusunda denetimi etkinleştirdim, ancak tüm aldığım bu:

Err 18456, Seviye 14, Durum 1, Sunucu SQL Azure, Satır 1Giriş kullanıcısı 'sınıflandırıcı' için başarısız oldu

Ve burada sıkışıp kaldım. Belgeler veya bloglar aracılığıyla bulabildiğim şeylerin çoğu, hatanın doğasını daha dar bir şekilde gösterecek olan gerçek hata durumunun ne olduğunu görmek için SQL Server günlüklerine bakmak olduğunu gösteriyor, ancak ben Azure ile uğraşıyorum, bunu yapmanın bir yolu yok (bildiğim kadarıyla).

SSMS'nin (ve bu arada LinqPad ve Visual Studio Server Explorer'ın) başarılı olduğu durumlarda uygulamanın başarısız olmasına ne neden olabilir?

Yanıtlar:


15

İçerdiği veritabanlarında / içerdiği kullanıcılarda şunları belirtmeniz gerektiğini bulduk:

GRANT CONNECT TO [YOUR_USER]

Aksi takdirde CONNECTvarsayılan olarak iptal edilmiş gibi görünür. Yukarıdaki değişikliği yaptıktan sonra veritabanına erişebildik.


Çalışmakta olan ve daha sonra çalışmayı durduran mevcut bir hesabımız vardı. Tekrar bağlanmak zorunda kaldım.
Shane Courtrille

Azure'da, Cannot find the user 'myuser', because it does not exist or you do not have permission.kullanıcı adı Güvenlik> Girişler altında olmasına rağmen MyDatabse> Güvenlik> Kullanıcılar altında olmamasına rağmen hata alıyorum . Denedim CREATE USER [myuser] FOR LOGIN [myuser] WITH DEFAULT_SCHEMA=[mydb] GOama hata aldımThe login already has an account under a different user name.
Korayem

Benzer bir sorun yaşadım. Geliştirme ortamında her şey sql Azure'a bağlanır, ancak yayınlandıktan sonra bu hatayı atar. Ancak ben komut çalıştıramaz veya kullanıcı oluşturmak, kimse farklı bir şey çalışıyor?
Ricker Silva

@dezso Benzer bir sorunla karşılaşıyorum. ADO.NET ve EF (DBContext) kodum yerel makinede iyi çalışıyor (Azure'da denemedim) Ancak IdentityDBConext kullanılarak uygulanan EF kodu başarısız oluyor. Neyin yanlış olduğundan veya IdentityDBConext'in hangi özelliklerinin sunucuya erişim gerektirdiğinden emin değilim. İşte orijinal sorum stackoverflow.com/questions/40260720/…
Hiren Desai

5

Yeni bir içerilen kullanıcı aracılığıyla bir Azure veritabanına bağlanmak için API'mızı değiştirirken, bağlantı dizemizi aşağıdakileri içerecek şekilde değiştirmek zorunda kaldık:

Persist Security Info=True;

Bu değişikliğin neden gerekli olduğunu anlamasam da, gelecekte başka birine yardımcı olması ihtimaline karşı buraya posta göndermek istedim.

Başlangıçta bunu bu sorudan denemeye geldik .


2

Benim sorunum farklı, ama ilgili: SQL Server Management Studio (SSMS) içerdiği bir kullanıcı kullanarak bir Azure SQL veritabanına bağlanmaya çalışıyordum . SSMS'de "Oturum açma kullanıcı için başarısız oldu" iletisi alıyordum.

Çözüm: sorgu penceresinin SSMS bağlantı seçeneklerinde "Veritabanına Bağlan" ı bağlanmaya çalıştığım veritabanının adına ayarlamıştım.

Açıklama: Geçmişte bunun nedeni açıktı: içerdiği kullanıcıların yalnızca oluşturuldukları veritabanlarına bağlanmasına izin verilir.


Aşağı oyu açıklamak ister misiniz?
Vince Horst

1
Ben değildim ama muhtemelen cevabın sorunun tam tersi olduğu için. Yine de yararlı ve bu SSMS iletişim kutusunun kötü tasarımı sayesinde yapmak kolay bir hata!
Simon_Weaver

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.