亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

MSSQL數據庫遷移之用戶名問題

添加時間:2014-3-9 17:35:21  添加: 思海網絡 
用戶A存在于數據庫A中,而新的MSSQL中雖然能創建用戶A,但無法把權限賦于用戶A。新創建一個用戶B吧,用戶A創建的表和其它信息就又無法訪問。在這里找到了解決方法: 
在源 SQL Server 上運行以下腳本。此腳本可在 master 數據庫中創建名為 sp_hexadecimal 和 sp_help_revlogin 的兩個存儲過程。請在完成過程的創建之后繼續執行第 2 步。 
注意:下面的過程取決于 SQL Server 系統表。這些表的結構在 SQL Server 的不同版本之間可能會有變化,請不要直接從系統表中選擇。 
----- Begin , 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
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 ----- 
2. 在創建 sp_help_revlogin 存儲過程后,請從源服務器上的查詢分析器中運行 sp_help_revlogin 過程。sp_help_revlogin 存儲過程可同時用于 SQL Server 7.0 和 SQL Server 2000。sp_help_revlogin 存儲過程的輸出是登錄腳本,該腳本可創建帶有原始 SID 和密碼的登錄。保存輸出,然后將其粘貼到目標 SQL Server 上的查詢分析器中,并運行它。例如:EXEC master..sp_help_revlogin 
復制代碼 代碼如下:
SP_DEFAULTDB 'cyiyun','DB_WAYUP'

第1步后,在源服務器上運行sp_help_revlogin后,會產生創建用戶數據的SQL,例如: 
復制代碼 代碼如下:

/* sp_help_revlogin  
** Generated 06 24 2009 1:40PM on WORKGROU-B1XTVC */ 
DECLARE @pwd sysname 
-- Login: hxtest 
SET @pwd = CONVERT (varbinary(256), 0x0100CF4E7D342B359438E4BCCA72E6C83F44FCCF30C8016286DE2B359438E4BCCA72E6C83F44FCCF30C8016286DE)
EXEC master..sp_addlogin '520web', @pwd, @sid = 0x1738BB6AD0CD24498F67FB5589E8EDCB, @encryptopt = 'skip_encryption' 
...... 

把這段直接在新服務器上運行,或者找到相應的用戶名創建,就可以解決這個問題了!

關鍵字:MSSQL、數據庫、服務器

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站