仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1217|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之怎样在正运转 SQL Server 7.0 的服务器...

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:39:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因此我们的保存数据方法就是:在删除的动作开始之前,把表数据备份起来,然后留一个空表,在空表上执行“删除”操作。server|服务器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=0xSELECT@i=1SELECT@length=DATALENGTH(@binvalue)SELECT@hexstring=0123456789ABCDEFWHILE(@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..sysxloginsWHEREsrvidISNULLANDnamesaELSEDECLARElogin_cursCURSORFORSELECTsid,name,xstatus,passwordFROMmaster..sysxloginsWHEREsrvidISNULLANDname=@login_nameOPENlogin_cursFETCHNEXTFROMlogin_cursINTO@SID_varbinary,@name,@xstatus,@binpwdIF(@@fetch_status=-1)BEGINPRINTNologin(s)found.CLOSElogin_cursDEALLOCATElogin_cursRETURN-1ENDSET@tmpstr=/*sp_help_revloginscriptPRINT@tmpstrSET@tmpstr=**Generated+CONVERT(varchar,GETDATE())+on+@@SERVERNAME+*/PRINT@tmpstrPRINTPRINTDECLARE@pwdsysnameWHILE(@@fetch_status-1)BEGINIF(@@fetch_status-2)BEGINPRINTSET@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_oldELSESET@tmpstr=@tmpstr+skip_encryptionPRINT@tmpstrENDENDFETCHNEXTFROMlogin_cursINTO@SID_varbinary,@name,@xstatus,@binpwdENDCLOSElogin_cursDEALLOCATElogin_cursRETURN0GO-----EndScript-----
2.在创立sp_help_revlogin存储历程以后,请从源服务器上的查询剖析器中运转sp_help_revlogin历程。sp_help_revlogin存储历程可同时用于SQLServer7.0和SQLServer2000。sp_help_revlogin存储历程的输入是登录剧本,该剧本可创立带有原始SID和暗码的登录。保留输入,然后将其粘贴到方针SQLServer上的查询剖析器中,并运转它。比方:
EXECmaster..sp_help_revlogin
前往页首

备注•在方针SQLServer上运转输入剧本之前,请仔细检察此剧本。假如必需将登录传输到与SQLServer源实例不在统一个域中的SQLServer实例,请编纂由sp_help_revlogin历程天生的剧本,并在sp_grantlogin语句中将域名交换为新的域名。因为在新域中被授与会见权的集成登录与原域中的登录具有分歧的SID,因而数据库用户将被从这些登录中伶仃进来。要办理这些伶仃用户,请拜见以下项目标记项中援用的文章。假如在统一个域中的SQLServer实例之间传输集成登录,则会利用不异的SID,并且用户不太大概被伶仃。•在挪动登录以后,用户将不再具有会见已被同时挪动的数据库的权限。此成绩称为“伶仃用户”。假如实验将会见此数据库的权限授与该登录,则大概会失利,这标明该用户已存在:
MicrosoftSQL-DMO(ODBCSQLState:42000)Error15023:Userorrole%salreadyexistsinthecurrentdatabase.有关怎样将登录映照到数据库用户以办理伶仃的SQLServer登录和集成登录的申明,请拜见以下Microsoft常识库文章:240872HOWTO:在SQL服务器之间挪动数据库时怎样办理权限成绩
有关利用sp_change_users_login存储历程逐一办理伶仃用户(仅能办理从尺度SQL登录中伶仃进来的用户)的申明,请拜见以下Microsoft常识库文章:274188PRB:"TroubleshootingOrphanedUsers"TopicinBooksOnlineisIncomplete•假如传输登录和暗码是向运转SQLServer的新服务器挪动数据库的一部分,请拜见以下Microsoft常识库文章,以懂得对所触及的事情流程和步骤的申明:314546HOWTO:MoveDatabasesBetweenComputersThatAreRunningSQLServer•可以如许做的缘故原由在于:sp_addlogin体系存储过程当中的@encryptopt参数同意经由过程利用加密暗码来创立登录。有关此历程的更多信息,请拜见SQLServer联机图书中的“sp_addlogin(T-SQL)”主题。•默许情形下,只要sysadminfixed服务器脚色的成员能够从sysxlogins表中举行选择。除非sysadmin脚色的成员授与了需要的权限,不然终极用户将没法创立或运转这些存储历程。•此办法不会实验传输特定登录的默许数据库信息,由于默许数据库其实不一直存在于方针服务器中。要为某个登录界说默许数据库,您可使用sp_defaultdb体系存储历程,并将登录名和默许数据库作为参数传送给该历程。有关利用此历程的更多信息,请拜见SQLServer联机图书中的“sp_defaultdb”主题。•在SQLServer实例之间传输登录的过程当中,假如源服务器的排序按次不辨别巨细写,而方针服务器的排序按次辨别巨细写,则在将登录传输到方针服务器后,必需在暗码顶用年夜写情势输出一切字母字符。假如源服务器的排序按次辨别巨细写,而方针服务器的排序按次不辨别巨细写,则没法经由过程利用本文概述的历程传输的登录举行登录,除非原始暗码不包括字母字符,大概原始暗码中的一切字母字符都是年夜写字符。假如两个服务器都辨别巨细写大概都不辨别巨细写,则不会呈现此成绩。这是SQLServer处置暗码的体例所带来的反作用。有关更多信息,请拜见SQLServer7.0联机图书中的“EffectonPasswordsofChangingSortOrders”(变动排序按次对暗码的影响)主题。•当在服务器上运转sp_help_revlogin剧本的输入时,假如该服务器已界说了一个登录,且该登录名与剧本输入中的某个登录的称号不异,则在实行sp_help_revlogin剧本的输入时,大概会看到上面的毛病信息:


Server:Msg15025,Level16,State1,Proceduresp_addlogin,Line56
Thelogintest1alreadyexists.

一样,假如此服务器上存在其他登录,且其SID值与您要实验增加的登录像同,则会收到以下毛病信息:


Server:Msg15433,Level16,State1,Proceduresp_addlogin,Line93
Suppliedparameter@sidisinuse.

因而,您必需细心检察这些命令的输入,反省sysxlogins表的内容,并响应地办理这些毛病。•特定登录的SID值被用作在SQLServer中完成数据库级别会见的基本。因而,假如统一登录在该数据库级别(在该服务器上的两个分歧数据库中)有两个分歧的SID值,则此登录将仅能会见其SID与该登录的syslogins中的值相婚配的数据库。假如所会商的两个数据库已从两个分歧的服务器兼并在一同,则大概呈现这类情况。要办理此成绩,必要利用sp_dropuser存储历程从具有不婚配SID的数据库中手动删除所会商的登录,然后再利用sp_adduser存储历程增加它。从理论上讲,完全可以为数据表里的每个字段分别建一个索引,但MySQL把同一个数据表里的索引总数限制为16个。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-18 15:45:11 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-22 07:52:32 | 只看该作者
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
再现理想 该用户已被删除
地板
发表于 2015-1-30 23:54:36 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
若天明 该用户已被删除
5#
发表于 2015-2-6 17:17:31 | 只看该作者
呵呵,这就是偶想说的
莫相离 该用户已被删除
6#
发表于 2015-2-17 14:36:27 | 只看该作者
比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
只想知道 该用户已被删除
7#
发表于 2015-3-5 20:13:06 | 只看该作者
无法深入到数据库系统层面去了解和探究
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-12 13:42:47 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
小妖女 该用户已被删除
9#
发表于 2015-3-19 22:49:34 | 只看该作者
相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-14 16:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表