仓酷云

标题: MSSQL网站制作之主动天生对表举行拔出和更新的存储历程... [打印本页]

作者: 小女巫    时间: 2015-1-16 22:27
标题: MSSQL网站制作之主动天生对表举行拔出和更新的存储历程...
因此,我们的第一个“米”,就是二进制日志binlog必须是rowbased的。在rowbase下,二进制日志binlog同时记录了更新前后的整行记录。拔出|存储历程
我找到了两个存储历程,能主动天生对一个数据表的拔出和更新的存储历程,如今贡献给人人!

拔出:

Createproceduresp_GenInsert
@TableNamevarchar(130),
@ProcedureNamevarchar(130)
as
setnocounton
declare@maxcolint,
@TableIDint
set@TableID=object_id(@TableName)
select@MaxCol=max(colorder)
fromsyscolumns
whereid=@TableID
selectCreateProcedure+rtrim(@ProcedureName)astype,0ascolorderinto#TempProc
union
selectconvert(char(35),@+syscolumns.name)
+rtrim(systypes.name)
+casewhenrtrim(systypes.name)in(binary,char,nchar,nvarchar,varbinary,varchar)then(+rtrim(convert(char(4),syscolumns.length))+)
whenrtrim(systypes.name)notin(binary,char,nchar,nvarchar,varbinary,varchar)then
end
+casewhencolorder<@maxcolthen,
whencolorder=@maxcolthen
end
astype,
colorder
fromsyscolumns
joinsystypesonsyscolumns.xtype=systypes.xtype
whereid=@TableIDandsystypes.namesysname
union
selectAS,@maxcol+1ascolorder
union
selectINSERTINTO+@TableName,@maxcol+2ascolorder
union
select(,@maxcol+3ascolorder
union
selectsyscolumns.name
+casewhencolorder<@maxcolthen,
whencolorder=@maxcolthen
end
astype,
colorder+@maxcol+3ascolorder
fromsyscolumns
joinsystypesonsyscolumns.xtype=systypes.xtype
whereid=@TableIDandsystypes.namesysname
union
select),(2*@maxcol)+4ascolorder
union
selectVALUES,(2*@maxcol)+5ascolorder
union
select(,(2*@maxcol)+6ascolorder
union
select@+syscolumns.name
+casewhencolorder<@maxcolthen,
whencolorder=@maxcolthen
end
astype,
colorder+(2*@maxcol+6)ascolorder
fromsyscolumns
joinsystypesonsyscolumns.xtype=systypes.xtype
whereid=@TableIDandsystypes.namesysname
union
select),(3*@maxcol)+7ascolorder
orderbycolorder
selecttypefrom#tempprocorderbycolorder

更新:

Createproceduresp_GenUpdate
@TableNamevarchar(130),
@PrimaryKeyvarchar(130),
@ProcedureNamevarchar(130)
as
setnocounton
declare@maxcolint,
@TableIDint
set@TableID=object_id(@TableName)
select@MaxCol=max(colorder)
fromsyscolumns
whereid=@TableID
selectCreateProcedure+rtrim(@ProcedureName)astype,0ascolorderinto#TempProc
union
selectconvert(char(35),@+syscolumns.name)
+rtrim(systypes.name)
+casewhenrtrim(systypes.name)in(binary,char,nchar,nvarchar,varbinary,varchar)then(+rtrim(convert(char(4),syscolumns.length))+)
whenrtrim(systypes.name)notin(binary,char,nchar,nvarchar,varbinary,varchar)then
end
+casewhencolorder<@maxcolthen,
whencolorder=@maxcolthen
end
astype,
colorder
fromsyscolumns
joinsystypesonsyscolumns.xtype=systypes.xtype
whereid=@TableIDandsystypes.namesysname
union
selectAS,@maxcol+1ascolorder
union
selectUPDATE+@TableName,@maxcol+2ascolorder
union
selectSET,@maxcol+3ascolorder
union
selectsyscolumns.name+=@+syscolumns.name
+casewhencolorder<@maxcolthen,
whencolorder=@maxcolthen
end
astype,
colorder+@maxcol+3ascolorder
fromsyscolumns
joinsystypesonsyscolumns.xtype=systypes.xtype
whereid=@TableIDandsyscolumns.name@PrimaryKeyandsystypes.namesysname
union
selectWHERE+@PrimaryKey+=@+@PrimaryKey,(2*@maxcol)+4ascolorder
orderbycolorder
selecttypefrom#tempprocorderbycolorder
droptable#tempproc


有了rowbase的binlog后,我们来分析一下怎么实现闪回。平时的DML无非三种操作,增删改,先说三种操作的日志格式。
作者: 飘灵儿    时间: 2015-1-19 13:16
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
作者: 分手快乐    时间: 2015-1-25 08:43
一个是把SQL语句写到客户端,可以使用DataSet进行加工;
作者: 活着的死人    时间: 2015-2-2 20:25
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
作者: 第二个灵魂    时间: 2015-2-2 20:25
XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
作者: 山那边是海    时间: 2015-2-8 05:06
需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
作者: 海妖    时间: 2015-2-24 06:48
我个人认为就是孜孜不懈的学习
作者: 精灵巫婆    时间: 2015-3-7 11:54
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
作者: 变相怪杰    时间: 2015-3-15 04:38
分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。
作者: 再见西城    时间: 2015-3-21 18:27
可以动态传入参数,省却了动态SQL的拼写。




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2