仓酷云

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

[学习教程] MSSQL网页设计SQL工具名有效的办理办法

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

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

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

x
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用sql|办理|工具名发生SQL工具名有效的成绩年夜多缘故原由是因为数据迁徙招致的,上面我们给出办理办法.
在利用数据库的过程当中,常常会碰到数据库迁徙大概数据迁徙的成绩,大概有俄然的数据库破坏,这时候必要从数据库的备份中间接恢复。可是,此时会呈现成绩,这里申明几种罕见成绩的办理办法。
1、伶仃用户的成绩
好比,之前的数据库的良多表是用户test创建的,可是当我们恢单数据库后,test用户此时就成了伶仃用户,没有与之对应的上岸用户名,哪怕你创建了一个test登任命户名,并且是之前的用户暗码,用该用户登录后一样没举措操纵之前属于test的用户表。
这个成绩有两种举措办理。
先说办理的条件前提。
起首,要用备份文件复原数据库,我们这里的数据库名为testdb,内里有属于用户test的用户表。这个很简单了操纵了,未几讲了,在企业办理器中很便利能够恢复。恢复后,就发生了伶仃用户test。
然后,用sa用户大概具有DBA权限的用户登录,创立一个test数据库登任命户,暗码任意设置了,也能够和之前的坚持分歧。我们用它来对应伶仃的test用户。
上面就有两种操纵办法了,第一种就是改动工具的属主,第二种就是使登任命户和数据库的伶仃用户对应起来。先说第一种办法。
1、修正工具属主
就是将底本属于数据库用户test的用户表,修正为属于dbo的用户表;然后修正test登任命户的数据库为testdb,就能够间接利用test登任命户登录后对该数据库举行操纵了。
利用的存储历程
sp_changeobjectowner[@objname=]object,[@newowner=]owner
参数申明
[@objname=]object
以后数据库中现有表、视图、用户界说函数或存储历程的称号。object是nvarchar(776),没有默许值。假如架构及其一切者具有不异的称号,则object可由现有工具一切者限制,格局为existing_owner.object。
[@newowner=]owner
将成为工具的新一切者的平安帐户的称号。owner的数据范例为sysname,没有默许值。owner必需是可会见以后数据库的无效数据库用户、服务器脚色、MicrosoftWindows登录名或Windows组。假如新一切者是没有对应数据库级主体的Windows用户或Windows组,则将创立数据库用户。
实例:
以下示例将authors表的一切者变动为dbo。
EXECsp_changeobjectownerauthors,dbo;
GO
这个办法有个最年夜的弱点就是,当表的数目十分多,并且另有存储历程大概触发器之类的修正起来会十分贫苦,必要一个一个修正,以是,不倡始利用。如今网上有一个批量修正的存储历程,人人能够找一下,这里就不说了,而是教人人一个更复杂的。
2、使登任命户和数据库的伶仃用户对应起来
实在我们创建了一样称号的数据库登任命户后,数据库中的表我们还是不克不及利用时由于sid的分歧,就是体系登录表和数据库用户表中的用户名不异,单是sid字段,数据库中的仍是之前旧体系的sid值,以是我们就要把它对应成我们新建的,数据库靠sid来辨认用户。
这里可使用存储历程sp_change_users_login。它有三种举措,分离是report,update_one和auto_fix。
运转sp_change_users_loginreport,体系会列出以后数据库的伶仃用户数。
我们只必要选择以后数据库为testdb,然后运转
sp_change_users_loginupdate_one,test,test
体系就会提醒修复了一个伶仃用户。
假如没有创建test的登任命户,还能够用
sp_change_users_loginAuto_Fix,test,NULL,testpassword
来创立一个登任命户名为test,暗码为testpassword的用户与之对应。

好了,到这里一般情形下,数据库工具失掉会见成绩已办理了。假如有多个数据库中有统一个用户的数据表,只必要选择分歧的数据库,实行update_one的谁人就好了。

2、工具名‘xxxx’有效的成绩

这里大概会有人碰到工具名‘xxxx’有效的成绩。体系表却不会发生这个成绩,而用户表还要加上用户名,然后是标明才干会见,好比select*fromauthor,会说工具名author有效,而用select*fromtest.author就能够会见,这个是用户首选身份的成绩。

办理很复杂,就是观察test登任命户是不是具有dba的权限大概体系办理的权限,有的话往失落就好了。
由于假如用户有dba身份,那末它上岸后的默许表空间是dbo的体系表空间,以是往失落了以后,就会以一般的test表空间会见数据表了。

但我们知道,若使用statement,并没有上述需要的数据。试想binlog中记录了一句updatetsetf1=3whereid=3。怎么恢复呢?
小女巫 该用户已被删除
沙发
发表于 2015-1-19 11:25:03 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
蒙在股里 该用户已被删除
板凳
发表于 2015-1-26 23:59:06 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
地板
发表于 2015-2-5 01:30:57 | 只看该作者
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
老尸 该用户已被删除
5#
发表于 2015-2-11 01:18:28 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
不帅 该用户已被删除
6#
发表于 2015-3-10 22:49:49 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
简单生活 该用户已被删除
7#
发表于 2015-3-17 15:47:13 | 只看该作者
分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
变相怪杰 该用户已被删除
8#
发表于 2015-3-24 10:19:01 | 只看该作者
每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-3 14:32

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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