Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

Oturum ve Parolaları SQL Server örnekleri arasında aktarma

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 918992
GİRİŞ
Bu makalede, farklı sunucularda Microsoft SQL Server 2005, Microsoft SQL Server 2008 ve Microsoft SQL Server 2012 örnekleri arasında oturum ve parolaları aktarma açıklanır.

Diğer sürümleri SQL Server örnekleri arasında oturum ve parolaları aktarma hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
246133 Oturum ve Parolaları SQL Server örnekleri arasında aktarma
Daha fazla bilgi
Bu makalede, Sunucu A ve Sunucu B farklı sunucularıdır. Ayrıca, Sunucu A ve Sunucu B SQL Server 2005 çalışan.

Not Bu bilgiler, SQL Server 2008 ve SQL Server 2012 için de geçerlidir.

Bir veritabanı SQL Server örneğinde Sunucu A'dan B sunucuda SQL Server örneğine taşıdıktan sonra kullanıcılar ayrıca B. sunucusundaki veritabanı oturum açamayabilirsiniz, kullanıcılar aşağıdaki hata iletisini alabilirsiniz:
Kullanıcısı için oturum açma başarısız oldu 'MyUser'. (Microsoft SQL Server, hata: 18456)
Bu sorun, oturum ve Parolaları SQL Server örneğinde Sunucu A B. sunucudaki SQL Server örneğine aktarmaya değil nedeniyle oluşur

Oturumları aktarmak için aşağıdaki yöntemlerden durumunuza uygun olanını kullanın.

Yöntem 1: öncesi SQL Server 2000 parolayı kullanarak oturum açma

Bu sorunu gidermek için SQL Server oturum açma öncesi SQL Server 2000 çalıştıran sunucuya oturum açmak için kullanıcı isteyin.

Not Öncesi SQL Server 2000 parolayı kullanarak kullanıcı oturum açarken parola karma otomatik olarak güncelleştirilir.

Yöntem 2: SQL Server'daki parola sıfırlama

Bu sorunu çözmek, SQL Server'daki parola sıfırlama ve oturum açma komut dosyası için.

Not Parolayı sıfırlamak için parola karma algoritması kullanılır.

Yöntem 3: bir günlük boş bir parolaya sahip komut dosyası oluşturun.

Komut dosyasında boş bir parolaya sahip bir oturum oluşturmak için şu adımları izleyin:
  1. Sunucudaki bir SQL Server Management Studio'yu başlatın ve sonra SQL Server veritabanını taşıdığınız sunucuya bağlanın.
  2. Yeni bir sorgu Düzenleyicisi penceresi açın ve sonra aşağıdaki komut dosyasını çalıştırın.
    USE masterGOIF OBJECT_ID ('sp_hexadecimal') IS NOT NULL  DROP PROCEDURE sp_hexadecimalGOCREATE PROCEDURE sp_hexadecimal    @binvalue varbinary(256),    @hexvalue varchar (514) OUTPUTASDECLARE @charvalue varchar (514)DECLARE @i intDECLARE @length intDECLARE @hexstring char(16)SELECT @charvalue = '0x'SELECT @i = 1SELECT @length = DATALENGTH (@binvalue)SELECT @hexstring = '0123456789ABCDEF'WHILE (@i <= @length)BEGIN  DECLARE @tempint int  DECLARE @firstint int  DECLARE @secondint int  SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))  SELECT @firstint = FLOOR(@tempint/16)  SELECT @secondint = @tempint - (@firstint*16)  SELECT @charvalue = @charvalue +    SUBSTRING(@hexstring, @firstint+1, 1) +    SUBSTRING(@hexstring, @secondint+1, 1)  SELECT @i = @i + 1ENDSELECT @hexvalue = @charvalueGO IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL  DROP PROCEDURE sp_help_revloginGOCREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL ASDECLARE @name sysnameDECLARE @type varchar (1)DECLARE @hasaccess intDECLARE @denylogin intDECLARE @is_disabled intDECLARE @PWD_varbinary  varbinary (256)DECLARE @PWD_string  varchar (514)DECLARE @SID_varbinary varbinary (85)DECLARE @SID_string varchar (514)DECLARE @tmpstr  varchar (1024)DECLARE @is_policy_checked varchar (3)DECLARE @is_expiration_checked varchar (3)DECLARE @defaultdb sysname IF (@login_name IS NULL)  DECLARE login_curs CURSOR FOR      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM sys.server_principals p LEFT JOIN sys.syslogins l      ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'ELSE  DECLARE login_curs CURSOR FOR      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM sys.server_principals p LEFT JOIN sys.syslogins l      ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_nameOPEN login_cursFETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denyloginIF (@@fetch_status = -1)BEGIN  PRINT 'No login(s) found.'  CLOSE login_curs  DEALLOCATE login_curs  RETURN -1ENDSET @tmpstr = '/* sp_help_revlogin script 'PRINT @tmpstrSET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'PRINT @tmpstrPRINT ''WHILE (@@fetch_status <> -1)BEGIN  IF (@@fetch_status <> -2)  BEGIN    PRINT ''    SET @tmpstr = '-- Login: ' + @name    PRINT @tmpstr    IF (@type IN ( 'G', 'U'))    BEGIN -- NT authenticated account/group      SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'    END    ELSE BEGIN -- SQL Server authentication        -- obtain password and sid            SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )        EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT        EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT         -- obtain password policy state        SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name        SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name             SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'        IF ( @is_policy_checked IS NOT NULL )        BEGIN          SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked        END        IF ( @is_expiration_checked IS NOT NULL )        BEGIN          SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked        END    END    IF (@denylogin = 1)    BEGIN -- login is denied access      SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )    END    ELSE IF (@hasaccess = 0)    BEGIN -- login exists but does not have access      SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )    END    IF (@is_disabled = 1)    BEGIN -- login is disabled      SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'    END    PRINT @tmpstr  END  FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin   ENDCLOSE login_cursDEALLOCATE login_cursRETURN 0GO


    NotBu komut dosyası anaveritabanında saklı yordamlarını oluşturur. Yordamlar,sp_hexadecimal ve sp_help_revloginolarak adlandırılır.
  3. Aşağıdaki ifadeyi çalıştırın:
    EXEC sp_help_revlogin
    Sp_help_revlogin depolanan yordamı oluşturur çıktı komut dosyasını oturum açma komut dosyasıdır. Bu oturum açma komut dosyası, özgün güvenlik tanımlayıcısı (SID) ve özgün parolayı sahip oturumların oluşturur.
  4. Sunucu B, SQL Server Management Studio'yu başlatın ve sonra SQL Server veritabanını taşıdığınız sunucuya bağlanın.

    Önemli 5. Adıma geçmeden önce "Açıklamalar" bölümündeki bilgileri gözden geçirin.
  5. Yeni bir sorgu Düzenleyicisi penceresi açın ve sonra adım 3'te oluşturulan çıktı komut dosyasını çalıştırın.

Açıklamalar

B: sunucuda örnek çıktı komut dosyasını çalıştırmadan önce aşağıdaki bilgileri gözden geçirin.
  • Komut dosyası bir öncesi SQL Server 2000 oturumu kullanarak yeni bir SQL Server 2012 oturum oluşturmaya çalışırsanız, aşağıdaki hatayı alırsınız:
    Msg 15021, düzey 16, State 2, 1 satır
    Parola parametresi için belirtilen değer geçersiz. Geçerli parametre değeri belirtin.
    Not Oturum açma oluşturmak ve ALTER LOGIN ifadeleri için sağlanan 16 baytlık parola karma nedeniyle SQL Server 2012'de bu hatayı alırsınız.

    SQL Server 2012 çalıştıran bir sunucuda bu sorunu gidermek için boş bir parolaya sahip bir oturum oluşturma. Bunu yapmak için aşağıdaki komutu çalıştırın:
    CREATE LOGIN [Test] WITH PASSWORD = '', SID = 0x90FD605DCEFAE14FAB4D5EB0BBA1AECC, DEFAULT_DATABASE = [master], CHECK_POLICY = ON, CHECK_EXPIRATION = OFF

    Boş bir parolaya sahip bir oturum açma oluşturduktan sonra kullanıcının sonraki oturum açma girişiminde parolayı değiştirebilirsiniz.
  • Parola sağlaması üç yolla:
    • VERSION_LEGACY: Bu karma 16 baytlık öncesi-SQL Server 2000 karma değil.
    • VERSION_SHA1: Bu karma SHA1 algoritması kullanılarak oluşturulur ve SQL Server 2008 R2 ile SQL Server 2000'de kullanılır.
    • VERSION_SHA2: Bu karma SHA2'yi 512 algoritması kullanılarak oluşturulur ve SQL Server 2012'de kullanılır.
  • SQL Server 2008 R1 ve önceki sürümlerinde, öncesi SQL Server 2000 şifre karmaları desteklenmekteydi. Karma öncesi SQL Server 2000 karma kullanılan bir parola kullanarak oturum açmış bir kullanıcının, SHA1 parola karmasını kullanmak için yükseltildi.
  • SQL Server 2008 R2 çalıştıran bir sunucuda öncesi SQL Server 2000 kullanır bir parolaya sahip bir kullanıcı varsa, bu kullanıcı sunucuya oturum değil açtığını anlamına gelir.
  • Çıktı komut dosyası dikkatle gözden geçirin. Sunucu A ve Sunucu B farklı etki alanlarında, çıktı komut dosyasını değiştirmeniz gerekir. Sonra yeni etki alanı adı oturum açma oluşturma deyimleri kullanarak özgün etki alanı adını değiştirmek zorunda. Yeni bir etki alanı içinde erişim izni verilen tümleşik oturum açmayı oturumu olarak aynı SID özgün etki alanında yok. Bu nedenle, kullanıcılar bu oturumu açma artık. Bu artık kullanıcıları çözümleme hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
    240872 SQL Server çalıştıran sunucular arasında veritabanı taşındığında, izin sorunlarını çözümleme hakkında
    Sunucu A ve Sunucu B aynı etki alanında, aynı SID kullanılır. Bu nedenle, kullanıcılar artık olası değildir.
  • Çıktı komut dosyasında şifrelenmiş parolayı kullanarak oturum açma oluşturulur. Bu oturum açma oluşturma deyiminde HASHED bağımsız değişkeni nedeniyle olur. Bu bağımsız değişken parola bağımsız değişkenini sonra girilen parola karma olduğunu belirtir.
  • Varsayılan olarak, yalnızca sysadmin sabit sunucu rolünün bir üyesi sys.server_principals görünümünden bir SELECT deyimi çalıştırabilirsiniz. Üye sysadmin sabit sunucu rolü sürece kullanıcılar oluşturmak veya çıktı komut dosyası çalıştırma kullanıcılarına gereken izinleri verir.
  • Bu makaledeki adımları belirli bir oturum açma için varsayılan veritabanı bilgi aktarılmaz. Bunun nedeni, varsayılan veritabanı sunucusu B'ye üzerinde her zaman olmayabilir Bir oturum açma için varsayılan veritabanını tanımlamak için ALTER LOGIN ifadesini oturum açma adını ve varsayılan veritabanını geçirerek bağımsız değişken olarak kullanın.
  • Büyük küçük harf duyarsız Sunucu A ve B büyük küçük harf duyarlı server: Sunucu A sıralama büyük küçük harf duyarlı ve sıralama düzenini B sunucu büyük küçük harf duyarlı olabilir. Bu durumda, kullanıcıların oturumları aktardıktan sonra tüm büyük harflerle parolalar ve parolaları örneğine B. sunucuda yazmalısınız

    Büyük küçük harf duyarlı Sunucu A ve B duyarlı server: Sunucu A sıralama büyük küçük harf duyarlı ve sıralama düzenini B sunucu büyük küçük harf duyarlı olabilir. Bu durumda, kullanıcılar oturum ve aşağıdaki koşullardan biri doğru değilse, Sunucu B üzerinde örneğe transfer parolalar kullanarak oturumu açamaz:
    • Özgün harf içeren.
    • Özgün parolaların tüm harfleri büyük harf var.
    Büyük küçük harf duyarlı veya duyarsız her iki sunucuda: Sunucu A ve Sunucu B sıralama büyük küçük harf duyarlı veya sıralama düzenini, Sunucu A ve Sunucu B büyük küçük harf duyarlı olabilir. Bu durumda, kullanıcılar bir sorun yaşamazsınız.
  • Zaten var olan sunucuda B örneğinde oturum açma çıktı komut dosyasında bir ad ile aynı olan bir ad olabilir. Bu durumda, B: sunucuda örnek çıktı komut dosyası çalıştırdığınızda aşağıdaki hata iletisini alıyorsunuz
    Msg 15025, düzey 16, State 1, satır 1
    Sunucu asıl adı 'MyLogin' zaten mevcut.
    Benzer şekilde, zaten var olan sunucuda B örneğinde oturum açma SID çıktı komut dosyasında aynı SID sahip olabilir. Bu durumda, B: sunucuda örnek çıktı komut dosyası çalıştırdığınızda aşağıdaki hata iletisini alıyorsunuz
    Msg 15433, düzey 16, State 1, satır 1
    Sağlanan parametre SID kullanılır.
    Bu nedenle, aşağıdakileri yapmanız gerekir:
    1. Çıktı komut dosyası dikkatle gözden geçirin.
    2. B. sunucuda örneğinde sys.server_principals görünümünün içeriğini inceleyin
    3. Bu hata iletilerini uygun adres.
  • SQL Server 2005'te, bir oturum açma SID'si, veritabanı düzeyinde erişim uygulamak için kullanılır. Oturum açma farklı SID farklı veritabanlarında bir sunucuda olabilir. Bu durumda, oturum açma SID sys.server_principals görünümünde eşleşen SID içeren bir veritabanını yalnızca erişebilir. İki veritabanının farklı sunuculardan birleştirilir Bu sorun oluşabilir. Bu sorunu gidermek için el ile oturum açma SID'si uyuşmazlık DROP USER deyimi kullanarak veritabanına kaldırın. Daha sonra oturum açma yeniden CREATE USER deyimi kullanarak ekleyin.
Referanslar
Artık kullanıcı sorunlarını giderme hakkında daha fazla bilgi için gidin Artık kullanıcı sorunlarını giderme Microsoft Developer Network (msdn) Web sitesi.

Oturum açma oluşturma deyimi hakkında daha fazla bilgi için gidin Oturum açma (Transact-SQL) oluşturma MSDN Web sitesi.

ALTER LOGIN ifadesini hakkında daha fazla bilgi için gidin Oturum açma (Transact-SQL) ALTER MSDN Web sitesi.

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 918992 - Son İnceleme: 02/16/2014 01:38:00 - Düzeltme: 2.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL 2005 Server Workgroup, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise

  • kbsqlsetup kbexpertiseadvanced kbhowto kbinfo kbmt KB918992 KbMttr
Geri bildirim