日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQLServer實例之間傳輸?shù)卿浥c密碼的描述

如果你在SQL Server實例之間傳輸?shù)卿浐兔艽a的實際操作中,你對SQL Server實例之間傳輸?shù)卿浐兔艽a有不解之處時,你可以通過以下的文章對其的實際應用與功能有所了解,以下是文章的具體介紹,望你瀏覽完以下的內容會有所收獲。

概要

在將數(shù)據(jù)庫移動到新服務器后,用戶可能無法登錄到新服務器。相反,他們會收到下面的錯誤消息:

Msg 18456, Level 16, State 1 Login failed for user '%ls'.

您必須將登錄和密碼傳輸?shù)叫路掌?。本文介紹如何將登錄和密碼傳輸?shù)叫路掌鳌?/p>

如何在運行 SQL Server 7.0 的服務器之間傳輸?shù)卿浐兔艽a

SQL Server 7.0 數(shù)據(jù)轉換服務 (DTS) 對象傳輸功能可在兩臺服務器之間傳輸?shù)卿浐陀脩?,但它不傳?SQL Server 驗證登錄的密碼。要將登錄和密碼從一臺運行 SQL Server 7.0 的服務器傳輸?shù)搅硪慌_運行 SQL Server 7.0 的服務器,請執(zhí)行“在不同版本的 SQL Server 之間傳輸?shù)卿浐兔艽a的完整解決方案”一節(jié)中的步驟。

如何從 SQL Server 7.0 向 SQL Server 2000 或者在運行 SQL Server 2000 的服務器之間傳輸?shù)卿浐兔艽a

要從 SQL Server 7.0 服務器向 SQL Server 2000 的一個實例或者在 SQL Server 2000 的兩個SQL Server實例之間傳輸?shù)卿浐兔艽a,可以使用 SQL Server 2000 中新的 DTS 包傳輸?shù)卿浫蝿?。為此,請按照下列步驟操作:1. 連接到 SQL Server 2000 目標服務器,移動到 SQL Server 企業(yè)管理器中的數(shù)據(jù)轉換服務,展開此文件夾,右鍵單擊“本地包”,然后單擊“新增包”。

2. 在 DTS 程序包設計器打開后,單擊“任務”菜單上的“傳輸?shù)卿浫蝿铡薄8鶕?jù)需要完成有關“源”、“目標”和“登錄”選項卡的信息。

重要說明:SQL Server 2000 目標服務器不能運行 64 位版本的 SQL Server 2000。64 位版本 SQL Server 2000 的 DTS 組件不可用。如果要從其他計算機上的 SQL Server 實例中導入登錄,您的 SQL Server 實例必須在域帳戶下運行才能完成此任務。

注意:DTS 方法將傳輸密碼,但不會傳輸原始 SID。如果登錄不是使用原始 SID 創(chuàng)建的,而且用戶數(shù)據(jù)庫也被傳輸?shù)揭慌_新服務器,則該數(shù)據(jù)庫用戶將從該登錄中孤立出去。要傳輸原始 SID 并繞過被孤立的用戶,請執(zhí)行“在不同版本的 SQL Server 之間傳輸?shù)卿浐兔艽a的完整解決方案”一節(jié)中的步驟。

在不同版本的 SQL Server 之間傳輸?shù)卿浐兔艽a的完整解決方案

此方法適用于以下情況:

從 SQL Server 7.0 向 SQL Server 7.0 傳輸?shù)卿浐兔艽a。

從 SQL Server 7.0 向 SQL Server 2000 傳輸?shù)卿浐兔艽a。

從 SQL Server 7.0 向 SQL Server 2005 傳輸?shù)卿浐兔艽a。

在運行 SQL Server 2000 的服務器之間傳輸?shù)卿浐兔艽a。

從 SQL Server 2000 向 SQL Server 2005 傳輸?shù)卿浐兔艽a。

注意:請查看本文末尾的備注,以了解有關下列步驟的重要信息。

要在不同版本的 SQL Server 之間傳輸?shù)卿浐兔艽a,請按下列步驟操作:1. 在源 SQL Server 上運行以下腳本。此腳本可在 master 數(shù)據(jù)庫中創(chuàng)建名為 sp_hexadecimal 和 sp_help_revlogin 的兩個存儲過程。請在完成過程的創(chuàng)建之后繼續(xù)執(zhí)行第 2 步。

注意:下面的過程取決于 SQL Server 系統(tǒng)表。這些表的結構在 SQL Server 的不同版本之間可能會有變化,請不要直接從系統(tǒng)表中選擇。

 
 
 
  1. ----- Begin Script, Create sp_help_revlogin procedure  
  2. ----- USE master GO IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL DROP PROCEDURE sp_hexadecimal   
  3. GO CREATE PROCEDURE sp_hexadecimal @binvalue varbinary(256),  
  4. @hexvalue varchar(256) OUTPUT AS DECLARE @charvalue varchar(256) DECLARE  
  5. @i int DECLARE @length int DECLARE @hexstring char(16) SELECT @charvalue = '0x' SELECT   
  6. @i = 1 SELECT @length = DATALENGTH (@binvalue) SELECT   
  7. @hexstring = '0123456789ABCDEF' WHILE (@i <= @length) BEGIN DECLARE   
  8. @tempint int DECLARE @firstint int DECLARE @secondint int SELECT @tempint =   
  9. CONVERT(int, SUBSTRING(@binvalue,@i,1)) SELECT @firstint = FLOOR(@tempint/16)  
  10. SELECT @secondint = @tempint - (@firstint*16) SELECT @charvalue =   
  11. @charvalue + SUBSTRING(@hexstring, @firstint+1, 1) + SUBSTRING(@hexstring, @secondint+1, 1)   
  12. SELECT @i = @i + 1 END SELECT @hexvalue = @charvalue GO IF OBJECT_ID ('sp_help_revlogin')  
  13. IS NOT NULL DROP PROCEDURE sp_help_revlogin GO CREATE PROCEDURE sp_help_revlogin  
  14. @login_name sysname = NULL AS DECLARE @name sysname DECLARE @xstatus int DECLARE   
  15. @binpwd varbinary (256) DECLARE @txtpwd sysname DECLARE @tmpstr varchar (256) DECLARE  
  16. @SID_varbinary varbinary(85) DECLARE @SID_string varchar(256) IF (@login_name IS NULL)   
  17. DECLARE login_curs CURSOR FOR SELECT sid, name, xstatus, password FROM master..  
  18. sysxlogins WHERE srvid IS NULL AND name <> 'sa' ELSE DECLARE login_curs CURSOR FOR   
  19. SELECT sid, name, xstatus, password FROM master..sysxlogins WHERE srvid IS NULL AND name =  
  20. @login_name OPEN login_curs FETCH NEXT FROM login_curs INTO @SID_varbinary, @name,   
  21. @xstatus, @binpwd IF (@@fetch_status = -1) BEGIN PRINT 'No login(s) found.'  
  22. CLOSE login_curs DEALLOCATE login_curs RETURN -1 END SET @tmpstr =   
  23. '/* sp_help_revlogin script ' PRINT @tmpstr SET @tmpstr = '** Generated ' + CONVERT  
  24. (varchar, GETDATE()) + '>2.   

在創(chuàng)建 sp_help_revlogin 存儲過程后,請從源服務器上的查詢分析器中運行 sp_help_revlogin 過程。sp_help_revlogin 存儲過程可同時用于 SQL Server 7.0 和 SQL Server 2000。sp_help_revlogin 存儲過程的輸出是登錄腳本,該腳本可創(chuàng)建帶有原始 SID 和密碼的登錄。

保存輸出,然后將其粘貼到目標 SQL Server 上的查詢分析器中,并運行它。例如:EXEC master..sp_help_revlogin

備注

在目標 SQL Server 上運行輸出腳本之前,請認真查看此腳本。如果必須將登錄傳輸?shù)脚c SQL Server 源實例不在同一個域中的 SQL Server 實例,請編輯由 sp_help_revlogin 過程生成的腳本,并在 sp_grantlogin 語句中將域名替換為新的域名。

由于在新域中被授予訪問權的集成登錄與原始域中的登錄具有不同的 SID,因此數(shù)據(jù)庫用戶將從這些登錄中孤立出去。要解決這些孤立用戶,請查看以下項目符號項中引用的文章。如果在同一個域中的 SQL Server 實例之間傳輸集成登錄,則會使用相同的 SID,而且用戶不太可能被孤立。

在移動登錄之后,用戶將不再具有訪問已被同時移動的數(shù)據(jù)庫的權限。此問題稱為“孤立用戶”。如果嘗試將訪問此數(shù)據(jù)庫的權限授予該登錄,則可能會失敗,這表明該用戶已存在:

 
 
 
  1. Microsoft SQL-DMO (ODBC SQLState:42000) Error 15023:User or role '%s' already exists in the current database. 

有關如何將登錄映射到數(shù)據(jù)庫用戶以解決孤立的 SQL Server 登錄和集成登錄的說明,請查看相關文章: (http://support.microsoft.com/kb/240872/) 如何解決在運行 SQL Server 的服務器之間移動數(shù)據(jù)庫時的權限問題。

有關使用 sp_change_users_login 存儲過程逐個解決孤立用戶(僅能解決從標準 SQL 登錄中孤立出去的用戶)的說明,請查看相關文章: (http://support.microsoft.com/kb/274188/) PRB:聯(lián)機叢書中的“孤立用戶疑難解答”主題不完整。

如果傳輸?shù)卿浐兔艽a是向運行 SQL Server 的新服務器移動數(shù)據(jù)庫的一部分,請查看相關文章,以了解對所涉及的工作流程和步驟的說明: (http://support.microsoft.com/kb/314546/) 如何在運行 SQL Server 的計算機之間移動數(shù)據(jù)庫。

能夠這樣做的原因在于:sp_addlogin 系統(tǒng)存儲過程中的 @encryptopt 參數(shù)允許通過使用加密密碼來創(chuàng)建登錄。有關此過程的更多信息,請參見 SQL Server 聯(lián)機叢書中的“sp_addlogin (T-SQL)”主題。

默認情況下,只有 sysadminfixed 服務器角色的成員可以從 sysxlogins 表中進行選擇。除非 sysadmin 角色的成員授予了必要的權限,否則最終用戶將無法創(chuàng)建或運行這些存儲過程。

此方法不會嘗試傳輸特定登錄的默認數(shù)據(jù)庫信息,因為默認數(shù)據(jù)庫并不始終存在于目標服務器中。要為某個登錄定義默認數(shù)據(jù)庫,您可以使用 sp_defaultdb 系統(tǒng)存儲過程,方法是將登錄名和默認數(shù)據(jù)庫作為參數(shù)傳遞給該過程。有關使用此過程的更多信息,請參見 SQL Server 聯(lián)機叢書中的“sp_defaultdb”主題。

在 SQL Server 實例之間傳輸?shù)卿浀倪^程中,如果源服務器的排序順序不區(qū)分大小寫,而目標服務器的排序順序區(qū)分大小寫,則在將登錄傳輸?shù)侥繕朔掌骱?,必須以大寫形式輸入密碼中的所有字母字符。

如果源服務器的排序順序區(qū)分大小寫,而目標服務器的排序順序不區(qū)分大小寫,則無法通過本文所述的步驟使用已傳輸?shù)牡卿涍M行登錄,除非原始密碼不包括字母字符或原始密碼中的所有字母字符都是大寫字符。

如果兩個服務器都區(qū)分大小寫或者都不區(qū)分大小寫,則不會出現(xiàn)此問題。這是 SQL Server 處理密碼的方式所帶來的副作用。有關更多信息,請參見 SQL Server 7.0 聯(lián)機叢書中的“Effect>在目標服務器上運行“sp_help_revlogin”腳本的輸出時,如果該目標服務器已經定義了一個登錄,且該登錄名與腳本輸出中的某個登錄名相同,則在執(zhí)行“sp_help_revlogin”腳本的輸出時,可能會看到下面的錯誤:

 
 
 
  1. Server:Msg 15025, Level 16, State 1, Procedure sp_addlogin, Line 56 The login 'test1' already exists. 

 

同樣,如果此服務器上存在其他登錄,且其 SID 值與您要嘗試添加的登錄的 SID 值相同,則會收到以下錯誤消息:

 
 
 
  1. Server:Msg 15433, Level 16, State 1, Procedure sp_addlogin, Line 93 Supplied parameter @sid is in use. 

 

因此,您必須仔細復查這些命令的輸出,檢查 sysxlogins 表的內容,并相應地解決這些錯誤。

特定登錄的 SID 值用作在 SQL Server 中實現(xiàn)數(shù)據(jù)庫級別訪問的基礎。因此,如果同一登錄在該數(shù)據(jù)庫級別(在該服務器上的兩個不同數(shù)據(jù)庫中)有兩個不同的 SID 值,則此登錄將僅能訪問其 SID 與該登錄的 syslogins 中的值相匹配的數(shù)據(jù)庫。

如果所討論的兩個數(shù)據(jù)庫已從兩個不同的服務器合并在一起,則可能出現(xiàn)這種情形。要解決此問題,必須使用 sp_dropuser 存儲過程從具有不匹配 SID 的數(shù)據(jù)庫中手動刪除所討論的登錄,然后再使用 sp_adduser 存儲過程添加它。

這篇文章中的信息適用于:

Microsoft SQL Server 7.0 標準版

 
 
 
  1. Microsoft SQL Server 2000 Personal Edition Service Pack 3 

Microsoft SQL Server 2000 標準版

 
 
 
  1. Microsoft SQL Server 2000 Workgroup Edition   
  2. Microsoft SQL Server 2000 Developer Edition   
  3. Microsoft SQL Server 2000 Enterprise Edition   
  4. Microsoft SQL Server 2005 Standard Edition   
  5. Microsoft SQL 2005 Server Workgroup   
  6. Microsoft SQL Server 2005 Developer Edition   
  7. Microsoft SQL 2005 Server Enterprise   

上述的相關內容就是對在SQL Server實例之間傳輸?shù)卿浐兔艽a的描述,希望會給你帶來一些幫助在此方面。


名稱欄目:SQLServer實例之間傳輸?shù)卿浥c密碼的描述
鏈接分享:http://m.5511xx.com/article/cdocdpi.html