如何在正运行7.0的服务器之间传输登录和密码

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
SQLServer7.0数据转换服务(DTS)对象传输功能可在两台 服务器之间传输登录和用户,但它不传输SQLServer验证登录的 密码。要从一台运行SQLServer7.0的服务器向另一台运行SQLServer7.0的服务器传输登录和 密码,请按照本文“在Master中创建和运行存储过程”一节中的说明操作。您将在源服务器上创建sp_help_revlogin存储过程。此过程将生成一个脚本,您可以在目标服务器上运行该脚本,以重新创建带有原始标识号(SID)的登录,并保留当前的 密码

返回页首

如何从SQLServer7.0向SQLServer2000或者在 正运行SQLServer2000的 服务器之间传输登录密码要从SQLServer7.0服务器向SQLServer2000的一个实例或者在SQLServer2000的两个实例之间传输登录和 密码,可以使用SQLServer2000中新的DTSPackageTransferLoginsTask(DTS包传输登录任务)。要使用此任务,请执行以下步骤:

1.连接到SQLServer2000目标服务器,移动到SQLServer企业管理器中的数据转换服务,展开此文件夹,右键单击本地程序包,然后单击新增程序包。2.在DTS程序包器打开后,单击任务菜单上的传输登录任务。根据需要完成有关源、目标和登录选项卡的信息。

重要说明:SQLServer2000目标服务器不能运行64位版本的SQLServer2000。64位版本SQLServer2000的DTS组件不可用。如果要从其他计算机上的SQLServer实例中导入登录,您的SQLServer实例必须在域帐户下运行才能完成此任务。

注意:您可以使用DTS方法或本文“在Master数据库中创建和运行存储过程”一节中的脚本,从SQLServer7.0向SQLServer2000或者在SQLServer2000的实例之间传输登录。DTS方法将传输 密码,但不传输原始SID。如果登录不是使用原始SID创建的,而且用户数据库也被传输到一台新服务器,则该数据库用户将被从该登录中孤立出去。要传输原始SID并回避孤立用户,请使用本文下一节中的脚本代替DTS方法。返回页首

在Master数据库中创建和运行存储过程请查看本文末尾的备注,以了解有关下列步骤的重要信息。
1.在源SQLServer上运行以下脚本。此脚本可在master数据库中创建名称分别为sp_hexadecimal和sp_help_revlogin的两个存储过程。请在创建完过程之后继续执行第2步。

注意:下面的过程取决于SQLServer系统表。这些表的结构在SQLServer的不同版本之间可能会有变化,请不要直接从系统表中选择。

-----BeginScript,Createsp_help_revloginprocedure-----USEmasterGOIFOBJECT_ID('sp_hexadecimal')ISNOTNULLDROPPROCEDUREsp_hexadecimalGOCREATEPROCEDUREsp_hexadecimal@binvaluevarbinary(256),@hexvaluevarchar(256)OUTPUTASDECLARE@charvaluevarchar(256)DECLARE@iintDECLARE@lengthintDECLARE@hexstringchar(16)SELECT@charvalue='0x'SELECT@i=1SELECT@length=DATALENGTH(@binvalue)SELECT@hexstring='0123456789ABCDEF'WHILE(@i<=@length)BEGINDECLARE@tempintintDECLARE@firstintintDECLARE@secondintintSELECT@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=@charvalueGOIFOBJECT_ID('sp_help_revlogin')ISNOTNULLDROPPROCEDUREsp_help_revloginGOCREATEPROCEDUREsp_help_revlogin@login_namesysname=NULLASDECLARE@namesysnameDECLARE@xstatusintDECLARE@binpwdvarbinary(256)DECLARE@txtpwdsysnameDECLARE@tmpstrvarchar(256)DECLARE@SID_varbinaryvarbinary(85)DECLARE@SID_stringvarchar(256)IF(@login_nameISNULL)DECLARElogin_cursCURSORFORSELECTsid,name,xstatus,passwordFROMmaster..sysxloginsWHEREsrvidISNULLANDname<>'sa'ELSEDECLARElogin_cursCURSORFORSELECTsid,name,xstatus,passwordFROMmaster..sysxloginsWHEREsrvidISNULLANDname=@login_nameOPENlogin_cursFETCHNEXTFROMlogin_cursINTO@SID_varbinary,@name,@xstatus,@binpwdIF(@@fetch_status=-1)BEGINPRINT'Nologin(s)found.'CLOSElogin_cursDEALLOCATElogin_cursRETURN-1ENDSET@tmpstr='/*sp_help_revloginscript'PRINT@tmpstrSET@tmpstr='**Generated'+CONVERT(varchar,GETDATE())+'on'+@@SERVERNAME+'*/'PRINT@tmpstrPRINT''PRINT'DECLARE@pwdsysname'WHILE(@@fetch_status<>-1)BEGINIF(@@fetch_status<>-2)BEGINPRINT''SET@tmpstr='--Login:'+@namePRINT@tmpstrIF(@xstatus&4)=4BEGIN--NTauthenticatedaccount/groupIF(@xstatus&1)=1BEGIN--NTloginisdeniedaccessSET@tmpstr='EXECmaster..sp_denylogin'''+@name+''''PRINT@tmpstrENDELSEBEGIN--NTloginhasaccessSET@tmpstr='EXECmaster..sp_grantlogin'''+@name+''''PRINT@tmpstrENDENDELSEBEGIN--SQLServerauthenticationIF(@binpwdISNOTNULL)BEGIN--Non-nullpasswordEXECsp_hexadecimal@binpwd,@txtpwdOUTIF(@xstatus&2048)=2048SET@tmpstr='SET@pwd=CONVERT(varchar(256),'+@txtpwd+')'ELSESET@tmpstr='SET@pwd=CONVERT(varbinary(256),'+@txtpwd+')'PRINT@tmpstrEXECsp_hexadecimal@SID_varbinary,@SID_stringOUTSET@tmpstr='EXECmaster..sp_addlogin'''+@name+''',@pwd,@sid='+@SID_string+',@encryptopt='ENDELSEBEGIN--NullpasswordEXECsp_hexadecimal@SID_varbinary,@SID_stringOUTSET@tmpstr='EXECmaster..sp_addlogin'''+@name+''',NULL,@sid='+@SID_string+',@encryptopt='ENDIF(@xstatus&2048)=2048--loginupgradedfrom6.5SET@tmpstr=@tmpstr+'''skip_encryption_old'''ELSESET@tmpstr=@tmpstr+'''skip_encryption'''PRINT@tmpstrENDENDFETCHNEXTFROMlogin_cursINTO@SID_varbinary,@name,@xstatus,@binpwdENDCLOSElogin_cursDEALLOCATElogin_cursRETURN0GO-----EndScript----- 1
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值