SQL Server'da, mevcut bir kullanıcı için nasıl oturum açma oluştururum?


17

Bir SQL Server örneğinden farklı bir SQL Server örneğine bir veritabanı geri yükledim. Veritabanı zaten kullanıcılara ekledi. Ancak yeni SQL Server örneği için Oturum Açma bilgileri yoktur.

Yeni kullanıcılar için nasıl yeni girişler oluşturacağımı biliyorum, ancak mevcut kullanıcılar için Giriş bilgilerini nasıl oluşturabilirim?

Yanıtlar:


9

Sorun, geri yükleme orijinal sunucu örneğinden db kullanıcılarını geri getiriyor ama yeni örnek genellikle bu kullanıcı oturum açma hiçbir şey bilmiyor olmasıdır. Bunları db düzeyinde Güvenlik altında görürsünüz, ancak karşılık gelen sunucu düzeyinde girişleri yoktur.

Veritabanını geri yüklediğiniz örnekte sunucu oturum açma özellikli veritabanı kullanıcılarını yeniden bağlamanız gerekir.

Bununla ilgili birkaç yol var:

  1. Yeni örnekte onlar için yeni girişler oluşturun. Daha sonra bunları yeni örnekte veritabanı kullanıcıları olarak kaldırmanız ve yeni giriş bilgilerini eklemeniz gerekir. Aynı giriş adlarını oluşturabildiğiniz göz önüne alındığında bu garip görünüyor, ancak SID'ler (güvenlik tanımlayıcıları) farklı olacak ve SQL'in kullanıcı kimliği için kullandığı şey budur. Bu, bir veya iki oturum açma için yeterince kolaydır.

  2. Aynı kullanıcıları korumak ve aynı SID'leri tutmak istiyorsanız, sp_help_revlogin saklı yordamını kullanın . Gerekli saklı yordamları oluşturacak bağlantıdan kodu kopyalayın ve kullanıcıları kopyalamak istediğiniz sunucuda çalıştırın. SID'leri, şifreleri, her şeyi taşıyan aynı kullanıcıları oluşturmak için hedef sunucunuzda çalıştırabileceğiniz bir SQL komut dosyası oluşturur. Hedef örnekte yeniden bağlamanız gereken çok sayıda veritabanı kullanıcısı varsa veya kaynak örnekte bir veya daha fazla SQL Oturum Açma parolasını bilmiyorsanız, bu yöntem kullanılabilir.


10

Ben her zaman sp_change_users_login komutunu veritabanı kullanıcısını sunucu girişiyle yeniden bağlamak için 'Update_One' eylemiyle çalıştırıyorum :

sp_change_users_login 'Update_One', 'database user', 'server login'


Cool Bunu kullandım: EXEC sp_change_users_login 'Auto_Fix', 'User', NULL, 'password';bunun yerine. :)
user2173353

Bu sadece hem veritabanı kullanıcısı hem de sunucu girişiniz varsa, ancak aralarındaki bağlantı koptuğunda yapmak mümkün mü?
wenzzzel

2

İşte bulduğum şey.

Squillman büyüdükçe, kullanıcılar veritabanıyla kopyalanır, ancak girişler kopyalanmaz. Sorunu çözmek için kullanabileceğiniz sp_change_users_login adlı bir mağaza işlemi var. Bunu yapmak için atılan adımlar bu aritcle'da detaylandırılmıştır . Mağaza işlemini kullanma ile ilgili detaylar bu sayfada bulunabilir .


2

SQL Server 2012'den itibaren, mevcut kullanıcıları yeni girişlere atamak için bir T-SQL komutu var. Girişi oluşturun, ancak Kullanıcı Eşlemeleri yapmaya çalışmayın (başarısız olur). Sonra yürütün:

use <existing_database>;
alter user <existing_database_user> with login = <newly_created_login>;

Bu, mevcut girişi yeni kullanıcıyla eşler. SQL belgeleri burada: https://docs.microsoft.com/tr-tr/sql/t-sql/statements/alter-user-transact-sql?view=sql-server-2017

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.