Як перенесення облікових записів та паролів між екземплярами SQL Server

Переклади статей Переклади статей
Номер статті: 246133 - Показ продуктів, яких стосується ця стаття.
Розгорнути все | Згорнути все

На цій сторінці

Підсумки

Після переміщення бази даних на новий сервер, користувачі не можуть увійти в новий сервер. Замість цього, вони отримують таке протокол IMAP про помилку:
MSG 18456, рівень 16, держава 1
увійти не вдалося для користувача "%ls".
Новий сервер потрібно передати логіни і паролі. У цій статті описано, як ви перевести логіни і паролі на новий сервер.

Як перенести логіни і паролі між серверами, що працюють SQL Server 7.0

Функція SQL Server 7.0 даних трансформації застосунок-служба (СПД) об'єкта передача передає логіни і користувачів між двома серверами, але не переносить паролі для SQL Server автентифіковано логіни. Перенесення облікових записів та паролів із сервера, на якому запущено SQL Server 7.0 до іншого сервера, на якому запущено SQL Server 7.0, дотримуйтесь інструкцій у розділі "Повне вирішення для передачі логіни і паролі між різними версіями SQL Server".

Як перенести логіни і паролі з SQL Server 7.0 між серверами, що працюють SQL Server 2000 або SQL Server 2000

Для передачі логіни і паролі з сервера SQL Server 7.0 екземпляра SQL Server 2000 або між двома екземплярами SQL Server 2000, можна використовувати нове завдання логіни передачі пакет DTS у SQL Server 2000. Для цього виконайте такі інтерактивні елементи.
  1. Підключення до сервера SQL Server 2000 призначення, перейти до служб перетворення даних у SQL Server підприємство менеджер, expandthe каталог вхідних повідомлень, клацніть локальний пакетита виберіть пункт Новий пакет.
  2. Після того, як в DTS пакет дизайнера відкриває, Передача логіни завданнязавдання виберіть у меню команду. Повну інформацію про джерело, призначення та логіни вкладки відповідно.

    Важливо. Сервер призначення SQL Server 2000 не може бути під керуванням 64-розрядної версії SQL Server 2000. DTS компонентів для 64-розрядної версії SQL Server 2000 недоступні. Якщо ви імпортуєте логіни від примірнику SQL Server, який знаходиться на окремому комп'ютері, ваш екземпляр SQL Server willmust працювати під обліковим записом домену, щоб завершити завдання.

    Примітка. DTS метод буде передавати паролі, але не theoriginal SID. Якщо Логін створюється не за допомогою оригінального SID, userdatabases також перенесені на новий сервер бази даних користувачів буде beorphaned від Логін. Для передачі вихідного SID і обійти на orphanedusers, дотримуйтесь інструкцій у розділі "Повне вирішення для передачі логіни і паролі між різними версіями SQL Server".

Як перенесення облікових записів та паролів між екземплярами SQL Server 2005

Щоб отримати додаткові відомості про перенесення облікових записів та паролів між екземплярами SQL Server 2005 клацніть цей номер статті для перегляду статті в базі знань Microsoft Knowledge Base:
918992 Як перенести на логінів і паролів між екземплярами SQL Server 2005

Повне вирішення перенесення облікових записів та паролів між різними версіями SQL Server

Для цього скористайтеся одним із нижченаведених способів.
Примітки
  • Скрипти з наступних методів створення двох збережена процедура, які названі sp_hexadecimal , збережена процедура і база даних master , процедури sp_help_revlogin зберігається.
  • Скрипти залежать від SQL Server системних таблиць.Між версії SQL Server може змінити структуру цих таблиць. Вибравши безпосередньо з системних таблиць не рекомендується.
  • Перегляньте зауваження в кінці цієї статті важливі відомості про інтерактивні елементи у методах.
  • Спосіб 2 призначає логіни ролей.

Спосіб 1

Цей метод застосовується до таких сценаріїв:
  • Ви передача логіни і паролі з SQL Server 7.0 SQL Server 7.0.
  • Ви передача логіни і паролі з SQL Server 7.0 SQL Server 2000.
  • Передача логіни і паролі між серверами, що працюють SQL Server 2000.
Перенесення облікових записів та паролів між різними версіями SQL Server, виконайте такі дії:
  1. Виконано таку на джерело SQL Server. Перейдіть до кроку 2, коли завершите створенняsp_help_revlogin Збережена процедура.
    ----- Begin Script, Create sp_help_revlogin procedure -----
    
    USE master
    GO
    IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
      DROP PROCEDURE sp_hexadecimal
    GO
    CREATE PROCEDURE sp_hexadecimal
        @binvalue varbinary(256),
        @hexvalue varchar(256) OUTPUT
    AS
    DECLARE @charvalue varchar(256)
    DECLARE @i int
    DECLARE @length int
    DECLARE @hexstring char(16)
    SELECT @charvalue = '0x'
    SELECT @i = 1
    SELECT @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 + 1
    END
    SELECT @hexvalue = @charvalue
    GO
    
    IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
      DROP PROCEDURE sp_help_revlogin 
    GO
    CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
    DECLARE @name    sysname
    DECLARE @xstatus int
    DECLARE @binpwd  varbinary (256)
    DECLARE @txtpwd  sysname
    DECLARE @tmpstr  varchar (256)
    DECLARE @SID_varbinary varbinary(85)
    DECLARE @SID_string varchar(256)
    
    IF (@login_name IS NULL)
      DECLARE login_curs CURSOR FOR 
        SELECT sid, name, xstatus, password FROM master..sysxlogins 
        WHERE srvid IS NULL AND name <> 'sa'
    ELSE
      DECLARE login_curs CURSOR FOR 
        SELECT sid, name, xstatus, password FROM master..sysxlogins 
        WHERE srvid IS NULL AND name = @login_name
    OPEN login_curs 
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
    IF (@@fetch_status = -1)
    BEGIN
      PRINT 'No login(s) found.'
      CLOSE login_curs 
      DEALLOCATE login_curs 
      RETURN -1
    END
    SET @tmpstr = '/* sp_help_revlogin script ' 
    PRINT @tmpstr
    SET @tmpstr = '** Generated ' 
      + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
    PRINT @tmpstr
    PRINT ''
    PRINT 'DECLARE @pwd sysname'
    WHILE (@@fetch_status <> -1)
    BEGIN
      IF (@@fetch_status <> -2)
      BEGIN
        PRINT ''
        SET @tmpstr = '-- Login: ' + @name
        PRINT @tmpstr 
        IF (@xstatus & 4) = 4
        BEGIN -- NT authenticated account/group
          IF (@xstatus & 1) = 1
          BEGIN -- NT login is denied access
            SET @tmpstr = 'EXEC master..sp_denylogin ''' + @name + ''''
            PRINT @tmpstr 
          END
          ELSE BEGIN -- NT login has access
            SET @tmpstr = 'EXEC master..sp_grantlogin ''' + @name + ''''
            PRINT @tmpstr 
          END
        END
        ELSE BEGIN -- SQL Server authentication
          IF (@binpwd IS NOT NULL)
          BEGIN -- Non-null password
            EXEC sp_hexadecimal @binpwd, @txtpwd OUT
            IF (@xstatus & 2048) = 2048
              SET @tmpstr = 'SET @pwd = CONVERT (varchar(256), ' + @txtpwd + ')'
            ELSE
              SET @tmpstr = 'SET @pwd = CONVERT (varbinary(256), ' + @txtpwd + ')'
            PRINT @tmpstr
    	EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
            SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name 
              + ''', @pwd, @sid = ' + @SID_string + ', @encryptopt = '
          END
          ELSE BEGIN 
            -- Null password
    	EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
            SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name 
              + ''', NULL, @sid = ' + @SID_string + ', @encryptopt = '
          END
          IF (@xstatus & 2048) = 2048
            -- login upgraded from 6.5
            SET @tmpstr = @tmpstr + '''skip_encryption_old''' 
          ELSE 
            SET @tmpstr = @tmpstr + '''skip_encryption'''
          PRINT @tmpstr 
        END
      END
      FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
      END
    CLOSE login_curs 
    DEALLOCATE login_curs 
    RETURN 0
    GO
     ----- End Script -----
    
    
  2. Створене користувачем sp_help_revlogin Збережена процедура, запустити процедуру sp_help_revlogin від Query Analyzer на вихідного сервера. Sp_help_revlogin збережена процедура можуть бути використані на SQL Server 7.0 та SQLServer 2000. Вивід sp_help_revlogin Збережена процедура є Логін сценарії, які створюють логіни з theoriginal SID і пароль. Зберегти вихід і вставити і запустити її в QueryAnalyzer на призначення SQL Server. Наприклад:
    EXEC master..sp_help_revlogin
    

Спосіб 2

Цей метод застосовується до таких сценаріїв:
  • Ви передача логіни і паролі з SQL Server 7.0 SQL Server 2005.
  • Ви передача логіни і паролі з SQL Server 2000 SQL Server 2005.
  • Призначати ролі логіни.
Для перенесення облікових записів та паролів між різними версіями SQL Server а потім призначте логіни до ролей, виконайте такі дії:
  1. Виконано таку на джерело SQL Server.
    USE master 
    GO 
    IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL 
    DROP PROCEDURE sp_hexadecimal 
    GO 
    CREATE PROCEDURE sp_hexadecimal 
    @binvalue varbinary(256), 
    @hexvalue varchar(256) OUTPUT 
    AS 
    DECLARE @charvalue varchar(256) 
    DECLARE @i int 
    DECLARE @length int 
    DECLARE @hexstring char(16) 
    SELECT @charvalue = '0x' 
    SELECT @i = 1 
    SELECT @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 + 1 
    END 
    SELECT @hexvalue = @charvalue 
    GO 
    
    IF OBJECT_ID ('sp_help_revlogin_2000_to_2005') IS NOT NULL 
    DROP PROCEDURE sp_help_revlogin_2000_to_2005 
    GO 
    CREATE PROCEDURE sp_help_revlogin_2000_to_2005 
    
    @login_name sysname = NULL, 
    @include_db bit = 0, 
    @include_role bit = 0 
    
    AS 
    DECLARE @name sysname 
    DECLARE @xstatus int 
    DECLARE @binpwd varbinary (256) 
    DECLARE @dfltdb varchar (256) 
    DECLARE @txtpwd sysname 
    DECLARE @tmpstr varchar (256) 
    DECLARE @SID_varbinary varbinary(85) 
    DECLARE @SID_string varchar(256) 
    
    IF (@login_name IS NULL) 
    DECLARE login_curs CURSOR STATIC FOR 
    SELECT sid, [name], xstatus, password, isnull(db_name(dbid), 'master') 
    FROM master.dbo.sysxlogins 
    WHERE srvid IS NULL AND 
    [name] <> 'sa' 
    ELSE 
    DECLARE login_curs CURSOR FOR 
    SELECT sid, [name], xstatus, password, isnull(db_name(dbid), 'master') 
    FROM master.dbo.sysxlogins 
    WHERE srvid IS NULL AND 
    [name] = @login_name 
    
    OPEN login_curs 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    
    IF (@@fetch_status = -1) 
    BEGIN 
    PRINT 'No login(s) found.' 
    CLOSE login_curs 
    DEALLOCATE login_curs 
    RETURN -1 
    END 
    
    SET @tmpstr = '/* sp_help_revlogin script ' 
    PRINT @tmpstr 
    SET @tmpstr = '** Generated ' 
    + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */' 
    PRINT @tmpstr 
    PRINT '' 
    PRINT '' 
    PRINT '' 
    PRINT '/***** CREATE LOGINS *****/' 
    
    WHILE @@fetch_status = 0 
    BEGIN 
    PRINT '' 
    SET @tmpstr = '-- Login: ' + @name 
    PRINT @tmpstr 
    
    IF (@xstatus & 4) = 4 
    BEGIN -- NT authenticated account/group 
    IF (@xstatus & 1) = 1 
    BEGIN -- NT login is denied access 
    SET @tmpstr = '' --'EXEC master..sp_denylogin ''' + @name + '''' 
    PRINT @tmpstr 
    END 
    ELSE 
    BEGIN -- NT login has access 
    SET @tmpstr = 'IF NOT EXISTS (SELECT * FROM sys.server_principals WHERE [name] = ''' + @name + ''')' 
    PRINT @tmpstr 
    SET @tmpstr = CHAR(9) + 'CREATE LOGIN [' + @name + '] FROM WINDOWS' 
    PRINT @tmpstr 
    END 
    END 
    ELSE 
    BEGIN -- SQL Server authentication 
    EXEC sp_hexadecimal @SID_varbinary, @SID_string OUT 
    
    IF (@binpwd IS NOT NULL) 
    BEGIN -- Non-null password 
    EXEC sp_hexadecimal @binpwd, @txtpwd OUT 
    SET @tmpstr = 'CREATE LOGIN [' + @name + '] WITH PASSWORD=' + @txtpwd + ' HASHED' 
    END 
    ELSE 
    BEGIN -- Null password 
    SET @tmpstr = 'CREATE LOGIN [' + @name + '] WITH PASSWORD=''''' 
    END 
    
    SET @tmpstr = @tmpstr + ', CHECK_POLICY=OFF, SID=' + @SID_string 
    PRINT @tmpstr 
    END 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    END 
    
    IF @include_db = 1 
    BEGIN 
    PRINT '' 
    PRINT '' 
    PRINT '' 
    PRINT '/***** SET DEFAULT DATABASES *****/' 
    
    FETCH FIRST FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    
    WHILE @@fetch_status = 0 
    BEGIN 
    PRINT '' 
    SET @tmpstr = '-- Login: ' + @name 
    PRINT @tmpstr 
    
    SET @tmpstr = 'ALTER LOGIN [' + @name + '] WITH DEFAULT_DATABASE=[' + @dfltdb + ']' 
    PRINT @tmpstr 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    END 
    END 
    
    IF @include_role = 1 
    BEGIN 
    PRINT '' 
    PRINT '' 
    PRINT '' 
    PRINT '/***** SET SERVER ROLES *****/' 
    
    FETCH FIRST FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    
    WHILE @@fetch_status = 0 
    BEGIN 
    PRINT '' 
    SET @tmpstr = '-- Login: ' + @name 
    PRINT @tmpstr 
    
    IF @xstatus &16 = 16 -- sysadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''sysadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &32 = 32 -- securityadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''securityadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &64 = 64 -- serveradmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''serveradmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &128 = 128 -- setupadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''setupadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &256 = 256 --processadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''processadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &512 = 512 -- diskadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''diskadmin''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &1024 = 1024 -- dbcreator 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''dbcreator''' 
    PRINT @tmpstr 
    END 
    
    IF @xstatus &4096 = 4096 -- bulkadmin 
    BEGIN 
    SET @tmpstr = 'exec master.dbo.sp_addsrvrolemember @loginame=''' + @name + ''', @rolename=''bulkadmin''' 
    PRINT @tmpstr 
    END 
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd, @dfltdb 
    END 
    END 
    
    CLOSE login_curs 
    DEALLOCATE login_curs 
    RETURN 0 
    GO
    
    exec sp_help_revlogin_2000_to_2005 @login_name=NULL, @include_db=1, @include_role=1
    GO
  2. Зберегти вихід і потім вставляти і запустити вихід в SQL Server управління студії призначення SQL Server 2005.
Примітка. Якщо джерело SQL Server містить Логін, який має порожніх паролів, вихід містить твердження, що приблизно такого вигляду.
CREATE LOGIN LoginName WITH PASSWORD = '', CHECK_POLICY = OFF, SID = MySID

Зауваження

  • Огляд сценарію виводу ретельно, перш ніж запустити його на thedestination SQL Server. Якщо для передачі логіни екземпляр SQLServer в іншому домені, ніж джерело екземпляра SQL Server, редагувати thescript, породжених в sp_help_revlogin порядку і замінити ім'я домену нового домену уsp_grantlogin звітності. Тому що інтегрований логіни надано доступ в новий домен не буде мати ж SID як на логіни у вихідному домені, thedatabase користувачі будуть сиротами від цих логіни. Щоб вирішити ці orphanedusers, див у статтях, вміщених у такий елемент куля. Якщо youtransfer інтегровані логіни між екземплярами SQL-серверів в одному домені, використовується той же SID і користувач не може бути створені автоматично.
  • Після того, як ви рухатися на логіни, користувачі можуть не мати permissionsto баз даних access, які також були переміщені. Ця проблема описав як "сиріт користувача". Якщо ви намагаєтеся надати Логін доступ до бази даних, вона mayfail з вказівкою користувача вже існує:
    MicrosoftSQL Речення (ODBC SQLState: 42000) помилка 15023: користувача або роль "%s" уже існує в поточну базу даних.
    Докладніше про те, щоб зіставити з логіни бази даних користувачів вирішити сиріт SQL Server логіни та інтегрованих логіни перегляньте наступні статті в базі знань Microsoft Knowledge Base:
    240872 Як вирішити проблеми дозволу, під Вільний час переміщення бази даних між серверами, що працюють з SQL Server
    Для отримання інструкцій про за допомогою sp_change_users_login Збережена процедура виправлення безгоспних споживачів по одному (thiswill тільки адресу користувачів сиротами від стандарт SQL логінів), побачити followingarticle в базі знань Microsoft Knowledge Base:
    274188 Тема "Виправлення неполадок Orphaned користувачів" у Books Online є неповною
  • Якщо передача логіни і паролі є частиною moveof баз даних в новий сервер SQL Server, прочитайте статтю в базі знань Майкрософт Опис робочий процес і stepsinvolved:
    314546 Переміщення бази даних між комп'ютерами, які працюють з SQL Server
  • Ви можете зробити це через sp_addlogin збережену системну процедуру, яка дозволяє Логін повинен бути створений byusing зашифрований пароль, параметр @encryptopt . Щоб отримати додаткові відомості про цю процедуру звариш "sp_addlogin (T-SQL)" Тема в SQL Server Books Online.
  • за промовчанням тільки члени rolecan sysadminfixed сервера виберіть таблиці sysxlogins . Якщо член системний адміністратор роль грантів на necessarypermissions, кінцеві користувачі не вдалося створити або запустити ці збережена процедура.
  • Такий підхід не намагається передати databaseinformation за промовчанням для певного Логін тому, що бази даних за промовчанням може не alwaysexist на сервері призначення. Визначте цю базу даних за промовчанням для Логін, можна використовувати sp_defaultdb збережену системну процедуру, видаючи його Логін ім'я та thedefault бази даних аргументів. Щоб отримати додаткові відомості про сценарій виконання цієї процедури див. "sp_defaultdb" в SQL Server Books Online.
  • Під Вільний час передачі логіни між екземплярами SQLServer Якщо джерело сервера, порядок сортування не враховується регістр і sortorder сервер призначення враховується регістр, необхідно ввести allalphabetical символи в паролях регістром після transferof логіни до сервера призначення. Якщо порядку сортування на вихідний сервер iscase чутливі і порядок сортування сервер призначення iscase нечутливим, не можна увійдіть логіни transferredusing процедурою, передбаченої в цій статті, якщо не до оригінальної passwordcontains немає алфавітних знаків або якщо всі алфавітних знаків в початковий пароль не великими буквами. Якщо сервери arecase чутливих або обох серверів без урахування регістру, ви будете не experiencethis проблема. Це побічний ефект як handlespasswords що SQL Server. Для отримання додаткових відомостей див. "Ефект на паролі з зміна SortOrders" в SQL Server 7.0 Books Online.
  • Під Вільний час запуску вихід з sp_help_revlogin сценарію на сервер призначення, якщо сервер призначення вже має definedwith Логін однойменного як один з логіни на відпуск скрипта, ви можете побачити thefollowing помилка при виконання виводу sp_help_revlogin сценарію:
    Сервер: Msg 15025, рівень 16, держава 1, процедури sp_addlogin, Line 56
    Test1 Логін вже існує.
    Аналогічним чином, якщо різні Логін існує з тим самим значенням SID на цьому сервері, як той, який ви бажаєте додати, receivethe після протокол IMAP про помилку:
    Сервер: Msg15433, рівень 16, держава 1, процедури sp_addlogin, Line 93
    Suppliedparameter @sid знаходиться у використанні.
    Таким чином, ви повинні carefullyreview на вивід наступних команд, діагностуючи вміст sysxlogins таблиці і адреси цих помилок відповідно.
  • У SID значення для конкретного Логін використовується як basisfor, реалізація рівень доступу до бази даних в SQL Server. Отже, якщо на samelogin має два різних значень для SID на рівні баз даних (у twodifferent баз даних на цьому сервері), Логін доступ буде надано лише до thatdatabase, чиї SID відповідає значенню в syslogins для цього Логін. Така ситуація може виникати, якщо два databasesin питання закріпили з двох різних серверів. Щоб вирішити thisproblem, увійти в питанні повинні були б бути вручну видалені з thedatabase, що SID невідповідність за допомогою sp_dropuser Збережена процедура і потім додав знову за допомогою sp_adduser Збережена процедура.

Властивості

Номер статті: 246133 - Востаннє переглянуто: 3 березня 2014 р. - Редакція: 3.0
Застосовується до:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Enterprise
Ключові слова: 
kbsqlsetup kbhowtomaster kbinfo kbmt KB246133 KbMtuk
Машинний переклад
ВАЖЛИВО! Ця стаття перекладена засобами машинного перекладу Microsoft. Статтю можна редагувати в середовищі Community Translation Framework (CTF). Щоб якомога швидше перекласти всі статті у своїй базі знань різними мовами, компанія Microsoft не лише звертається до професійних перекладачів, але й вдається до машинного перекладу, який потім редагується спільнотою. Такі статті можуть містити лексичні, синтаксичні та граматичні помилки. Microsoft не несе відповідальності за будь-які неточності, помилки або збитки, до яких може призвести неправильний переклад статей або їх використання. Докладніше про CTF див. на веб-сторінці http://support.microsoft.com/gp/machine-translation-corrections/uk-ua.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 246133

Надіслати відгук

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com