Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2025 (17.x)
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric
Bu makalede, T-SQL Object_ID söz dizimini kullanarak Azure SQL Veritabanı, Fabric SQL veritabanı, Azure SQL Yönetilen Örneği ve SQL Server 2025 ve sonraki sürümlerde, benzersiz olmayan görüntüleme adlarına sahip Microsoft Entra oturum açma bilgileri ve kullanıcılar oluşturmayı öğreneceksiniz.
Uyarı
Fabric SQL veritabanında kullanıcı oluşturabilirsiniz, ancak oturum açma bilgilerini oluşturamazsınız.
Genel Bakış
Microsoft Entra ID, hizmet sorumluları için kimlik doğrulamasını destekler. Ancak, Microsoft Entra ID'de benzersiz olmayan bir görünen ada sahip bir hizmet sorumlusu kullanmak, SQL Server, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde oturum açma veya kullanıcı oluştururken hatalara yol açar.
Örneğin, uygulama myapp benzersiz değilse aşağıdaki hatayla karşılaşabilirsiniz:
Msg 33131, Level 16, State 1, Line 4
Principal 'myapp' has a duplicate display name. Make the display name unique in Azure Active Directory and execute this statement again.
Aşağıdaki T-SQL deyimini çalıştırmaya çalışırken:
CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER
Uzantı WITH OBJECT_ID
Yinelenen görünen ad hatası, Microsoft Entra kimliği Microsoft Entra uygulaması (hizmet sorumlusu) için yinelenen görünen adlara izin verdiğinden, SQL Server ve Azure SQL için Microsoft Entra oturum açma bilgileri ve kullanıcıları oluşturmak için benzersiz adlar gerektiğinden oluşur. Bu sorunu hafifletmek için, oturum açma bilgileri ve kullanıcılar oluşturmaya yönelik Veri Tanımı Dili (DDL) deyimi, Azure kaynağının WITH OBJECT_ID Nesne Kimliğini içerecek şekilde şu WITH OBJECT_ID yan tümcesiyle genişletilmiştir.
Uyarı
Microsoft Entra ID'deki çoğu benzersiz olmayan gösterim adı, hizmet ilkeleriyle ilgilidir, ancak bazen grup adları da benzersiz olmayabilir. Microsoft Entra kullanıcı asıl adları benzersizdir çünkü iki kullanıcı aynı kullanıcı sorumlusuna sahip olamaz. Ancak, kullanıcı asıl adıyla aynı görünen adla bir uygulama kaydı (hizmet sorumlusu) oluşturulabilir.
Hizmet sorumlusu görüntüleme adı yinelenen değilse, varsayılan CREATE LOGIN veya CREATE USER deyimi kullanılmalıdır.
WITH OBJECT_ID uzantısı, nonunique hizmet sorumlularıyla kullanılmak üzere uygulanan bir sorun giderme onarım öğesidir. Benzersiz bir hizmet ilkesiyle kullanılması tavsiye edilmez. Sonek eklemeden hizmet sorumlusu için WITH OBJECT_ID uzantısını kullanmak başarıyla çalışır, ancak oturum açma veya kullanıcının hangi hizmet sorumlusu için oluşturulduğu belirgin olmaz. Hizmet sorumlusunu benzersiz bir şekilde tanımlamak için sonek kullanarak bir diğer ad oluşturmanız önerilir.
WITH OBJECT_ID Uzantı SQL Server 2025 ve sonraki sürümlerde desteklenir.
T-SQL, benzersiz olmayan görünen adlar için oturum açma/kullanıcı söz dizimi oluşturma
CREATE LOGIN [login_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
CREATE USER [user_name] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'objectid'
Nesne Kimliği ile giriş veya kullanıcılar oluşturmak için T-SQL DDL destekleyici uzantısını kullanarak 33131 hatasını önleyebilir ve ayrıca Nesne Kimliği ile oluşturduğunuz giriş veya kullanıcıya bir takma ad belirleyebilirsiniz. Örneğin, aşağıdaki T-SQL örneği uygulama Nesne Kimliği'ni myapp4466ekullanarak bir oturum açma bilgisi aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb oluşturur.
CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER
WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'
- Bu T-SQL sorgusunu yürütmek için belirtilen Nesne Kimliği, SQL kaynağının bulunduğu Microsoft Entra kiracısında bulunmalıdır. Aksi takdirde komut
CREATEşu hata iletisiyle başarısız olur:Msg 37545, Level 16, State 1, Line 1 '' is not a valid object id for '' or you do not have permission. - Oturum açma veya kullanıcı adı,
CREATE LOGINveyaCREATE USERdeyimi kullanılırken, kullanıcı tanımlı bir sonek ile genişletilmiş özgün hizmet asıl adını içermelidir. En iyi yöntem olarak, sonek Nesne Kimliğinin ilk bölümünü içerebilir. Örneğin,myapp2ba6cnesne kimliğibbbbbbbb-1111-2222-3333-cccccccccccciçin. Ancak, özel bir sonek de tanımlayabilirsiniz. Nesne Kimliği'nden sonek oluşturmak gerekli değildir.
Bu adlandırma kuralının, veritabanı kullanıcısını açıkça ilişkilendirmesi veya Microsoft Entra Id'deki nesnesiyle yeniden oturum açması önerilir.
Uyarı
Diğer ad, 128 karaktere kadar uzunluk dahil olmak üzere, sysname T-SQL belirtimine uygundur. Son eki Nesne Kimliğinin ilk beş karakteriyle sınırlamanızı öneririz.
Microsoft Entra Id içindeki hizmet sorumlusunun görünen adı, veritabanı oturum açma veya kullanıcı diğer adıyla eşitlenmez.
CREATE LOGIN veya CREATE USER çalıştırmak, Azure portalında görünen adı etkilemez. Benzer şekilde, Microsoft Entra Id görünen adını değiştirmek veritabanı oturum açma bilgilerini veya kullanıcı diğer adını etkilemez.
Uygulama için oluşturulan kullanıcıyı belirleme
Nonunique hizmet sorumluları için Microsoft Entra diğer adının doğru uygulamaya bağlı olduğunu doğrulamak önemlidir. Kullanıcının doğru hizmet sorumlusu (uygulama) için oluşturulduğunu denetlemek için:
Azure SQL veya SQL Server'da oluşturulan kullanıcıdan uygulamanın Uygulama Kimliğini veya Microsoft Entra grubunun Nesne Kimliğini alın. Aşağıdaki sorgulara bakın:
Hizmet sorumlusunun Uygulama Kimliğini oluşturulan kullanıcıdan almak için aşağıdaki sorguyu yürütür:
SELECT CAST(sid as uniqueidentifier) ApplicationID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'Örnek çıkış:
Uygulama Kimliği, belirtilen oturum açma veya kullanıcı adı için güvenlik kimlik numarasından (SID) dönüştürülür; bunu bir sonraki T-SQL sorgusunu yürüterek ve son birkaç rakamı karşılaştırarak ve tarih oluşturarak onaylayabiliriz:
SELECT SID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c'Örnek çıkış:
Oluşturulan kullanıcıdan Microsoft Entra grubunun Nesne Kimliğini almak için aşağıdaki sorguyu yürütür:
SELECT CAST(sid as uniqueidentifier) ObjectID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'Örnek çıkış:
Microsoft Entra grubunun SID'sini, oluşturduğunuz kullanıcıdan kontrol etmek için aşağıdaki sorguyu yürütün:
SELECT SID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b'Örnek çıkış:
PowerShell kullanarak uygulamanın Nesne Kimliğini ve Uygulama Kimliğini almak için aşağıdaki komutu çalıştırın:
Get-AzADApplication -DisplayName "myapp2ba6c"
Azure portalına gidin ve Kurumsal uygulamanızda veya Microsoft Entra grup kaynağınızda sırasıyla Uygulama Kimliği veya Nesne Kimliği'ni denetleyin. Önceki sorgudan elde edilen sorguyla eşleşip eşleşmediğini görün.
Uyarı
Hizmet ilkesi ile kullanıcı oluştururken, WITH OBJECT_ID yan tümcesi T-SQL deyimiyle kullanıldığında Nesne Kimliği gereklidir. Bu, SQL Server'da takma adı doğrulamaya çalışırken döndürülen Uygulama Kimliği'nden farklıdır. Bu doğrulama işlemini kullanarak, Microsoft Entra Id'de SQL diğer adıyla ilişkili hizmet sorumlusunu veya grubu tanımlayabilir ve nesne kimliğine sahip oturum açma bilgileri veya kullanıcılar oluştururken olası hataları önleyebilirsiniz.
Doğru Nesne Kimliğini bulma
Hizmet sorumlusunun Nesne Kimliği hakkında bilgi için bkz. Hizmet sorumlusu nesnesi. Azure portalında , Kurumsal uygulamalar altında uygulama adının yanında listelenen hizmet sorumlusunun Nesne Kimliğini bulabilirsiniz.
Uyarı
Uygulama kaydına Genel Bakış sayfasında elde edilen Nesne Kimliği, Kurumsal uygulamalara Genel Bakış sayfasında elde edilen Nesne Kimliği'nden farklıdır. Uygulama kaydına Genel Bakış sayfasındaysanız, Kurumsal uygulamalara Genel Bakış sayfasında doğru Nesne Kimliği'ne gitmek için yerel dizin uygulama adında bağlı Yönetilen uygulamayı seçin.