仓酷云

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

[学习教程] MSSQL网站制作之将Sql Server工具确当前具有者变动成目...

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

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

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

x
恢复到之前的某个状态,是需要数据的。这数据可以是a)回滚步骤或者b)操作之前的数据状态原文。server|工具数据库操纵傍边,当数据库工具列表不但有一个一般的元素――objectname时,你将要利用objectowner.objectname来援用工具,但假如必要变动以后数据库中工具的一切者可使用体系存储历程sp_changeobjectowner(点击这里更具体)
sp_changeobjectowner
变动以后数据库中工具的一切者。
语法:sp_changeobjectowner[@objname=]object,[,@newowner=]owner.参数.[@objname=]object.
但常常因为数据库工具过量,但愿批处置变动以后数据库中工具的一切者,那末你能够实验利用NetFetch的nf_ChangeObjectOwner存储历程来完成批处置。详细用法以下:
起首利用以下代码创立存储历程――
nf_ChangeObjectOwner
将SqlServer工具确当前具有者变动成方针具有者
语法:nf_ChangeObjectOwner[,@current_Owner=]owner,[,@target_Owner=]owner,[,@modify_Type=]type
[复制此代码]CODE:
ifexists(select*fromsysobjectswhereid=object_id(N[nf_ChangeObjectOwner])andOBJECTPROPERTY(id,NIsProcedure)=1)
dropprocedurenf_ChangeObjectOwner
GO
CreatePROCEDUREnf_ChangeObjectOwner
@current_Ownernvarchar(255),
@target_Ownernvarchar(255),
@modify_Typeint
/***********************************************************************************************
nf_ChangeObjectOwner
完成功效:将SqlServer工具确当前具有者变动成方针具有者
****利用本代码前请备份数据库!
****所带来的平安成绩,与俺家的驴子有关!
****接待斧头劈我,劈逝世偶有奖!
挪用办法:Execnf_ChangeObjectOwner@current_Owner,@target_Owner,@modify_Type
输出参数:@current_Ownernvarchar(255)--工具确当前具有者
@target_Ownernvarchar(255)--工具的方针具有者
@modify_Typeint--0为默许,变动表的具有者;1为视图和存储历程
输入参数:RETURN值=-1--操纵工具为0,操纵工具不存在
=-2--操纵失利,大概工具被锁定
=0(默许值)--操纵乐成,打印变动工具数量@object_Num
@object_Num--SQL打印值,前往变动乐成的工具数量
@WritebyNetFetch.@At2005/09/12
@Email:cnNetFetch*Gmail.Comblog.ad0.cn
************************************************************************************************/
AS
DECLARE@str_Tbl_Namenvarchar(255),@object_Numint,@current_Owner_uidsmallint
Set@object_Num=0
DECLARE@return_statusint
Set@return_status=-1
Set@current_Owner_uid=(SelectuidFromsysusersWhere[Name]=@current_Owner)
IfNot(Len(@current_Owner_uid)>0)
RETURN-1
If(@modify_Type=1)
DECLAREChangeObjectOwner_CursorCURSORFORSelect[Name]FromsysobjectsWhere(type=Uortype=Vortype=P)anduserstat=0and[Name]nf_ChangeObjectOwnerandstatus>-1anduid=@current_Owner_uid
Else
DECLAREChangeObjectOwner_CursorCURSORFORSelect[Name]FromsysobjectsWhere(type=Uortype=Vortype=P)anduserstat0and[Name]dtpropertiesanduid=@current_Owner_uid
OPENChangeObjectOwner_Cursor
BEGINTRANSACTIONChange_ObjectOwner
FETCHNEXTFROMChangeObjectOwner_CursorINTO@str_Tbl_Name
WHILE(@@FETCH_STATUS=0)
BEGIN
Set@str_Tbl_Name=@current_Owner+.+@str_Tbl_Name
Print@str_Tbl_Name
EXEC@return_status=sp_changeobjectowner@str_Tbl_Name,@target_Owner
IF(@return_status0)
BEGIN
ROLLBACKTRANSACTIONChange_ObjectOwner
RETURN-2
END
Set@object_Num=@object_Num+1
FETCHNEXTFROMChangeObjectOwner_CursorINTO@str_Tbl_Name
END
Print@object_Num
COMMITTRANSACTIONChange_ObjectOwner
CLOSEChangeObjectOwner_Cursor
DEALLOCATEChangeObjectOwner_Cursor
Go

Usage(利用办法):Execnf_ChangeObjectOwnerdbo,你的用户名,0
――将一切用户表的具有者变动成你的用户名
Usage(利用办法):Execnf_ChangeObjectOwnerdbo,你的用户名,1
――将除用户表以外数据库工具(视图、存储历程)的具有者变动成你的用户名

既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
乐观 该用户已被删除
沙发
发表于 2015-1-19 09:57:35 | 只看该作者
需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
飘灵儿 该用户已被删除
板凳
发表于 2015-1-19 09:57:35 | 只看该作者
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
小魔女 该用户已被删除
地板
发表于 2015-1-27 14:11:50 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
透明 该用户已被删除
5#
发表于 2015-2-5 10:46:11 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
爱飞 该用户已被删除
6#
发表于 2015-2-11 10:14:45 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
小女巫 该用户已被删除
7#
发表于 2015-3-2 11:08:34 | 只看该作者
同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。
变相怪杰 该用户已被删除
8#
发表于 2015-3-11 03:52:06 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
只想知道 该用户已被删除
9#
发表于 2015-3-17 20:10:40 | 只看该作者
如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
10#
发表于 2015-3-25 00:39:23 | 只看该作者
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-3 18:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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