|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。剧本|数据
在A服务器中有表table1,想把该表的内容导到B服务器中,这两个数据库没联网,怎样办?
导成内部文件,再用导进导出。。。。这太笨了吧,假如对方服务器是INTERNET上的,只能实行服本怎样办,晕逝世了吧,用这个存储历程来帮你。
ALTERprocsp_GetTableData
@objnamenvarchar(776)
as
--set@objname=s_coderule
/*declare@novarchar(35),@yesvarchar(35),@nonevarchar(35)
select@no=namefrommaster.dbo.spt_valueswheretype=Bandnumber=0
select@yes=namefrommaster.dbo.spt_valueswheretype=Bandnumber=1
select@none=namefrommaster.dbo.spt_valueswheretype=Bandnumber=2
*/
declare@numtypesnvarchar(80)
select@numtypes=Ntinyint,smallint,decimal,int,real,money,float,numeric,smallmoney,varbinary,bit
declare@chartypesnvarchar(80)
select@chartypes=Nchar,varchar,text,nchar,ntext,nvarchar
declare@datetypesnvarchar(80)
select@datetypes=Ndatetimesmalldatetime
declare@LimitlengthInt,@Limitlength1Int
declare@objidbigint
--declare@sysobj_typechar(2)
select@objid=id
--,@sysobj_type=xtype
fromsysobjectswhereid=object_id(@objname)
set@Limitlength=0
set@limitLength1=0
declare@namevarchar(30),@typevarchar(10),@lengthint,@FieldSQLvarchar(5000),@SQLvarchar(8000),@identsmallint
set@SQL=
set@FieldSQL=
declarecurcursor
for
select
Column_name=name,
Type=type_name(xusertype),
Length=convert(int,length),
Ident=colstat
fromsyscolumnswhereid=@objidandnumber=0orderbycolid
openCur
fetchnextfromcurinto@name,@type,@length,@ident
while@@fetch_status=0
begin
if@Ident=0
begin
if@Limitlength>200
begin
set@sql=@sql+,
set@limitlength=0
end
if@Limitlength1>200
begin
set@Fieldsql=@Fieldsql+char(39)+,+char(39)
set@limitlength1=0
end
Set@FieldSQl=@FieldSQL+LTrim(Rtrim(@name))+,
ifcharindex(@type,@numtypes)>0--(+convert(char(6),@length)+)
set@sql=@SQL++Casewhen+@name+isnullthenNullelseRtrim(Convert(char,+@name+))end
elseifcharindex(@type,@chartypes)>0
set@sql=@SQL++Casewhen+@name+isnullthenNullelse+char(39)+RTrim(+@name+)+char(39)end
elseifcharindex(@type,@datetypes)>0
set@sql=@SQL++Casewhen+@name+isnullthenNullelse+char(39)+RTrim(convert(char(19),+@name+,120))+char(39)end
set@SQL=@SQL+++char(39)+,+char(39)
set@Limitlength=@Limitlength+@Length
set@Limitlength1=@Limitlength1+Len(@Name)
end
fetchnextfromcurinto@name,@type,@length,@ident
end
closecur
deallocatecur
--print@sql
ifright(@FieldSQl,1)=char(39)
SET@FieldSQL=Substring(@FieldSQL,1,len(@FieldSQL)-5)
else
SET@FieldSQL=Substring(@FieldSQL,1,len(@FieldSQL)-1)
ifright(@SQl,1)=,
SET@SQL=Substring(@SQL,1,len(@SQL)-5)
else
SET@SQL=substring(@SQL,1,len(@SQL)-4)
--print(@FieldSQL)
set@FieldSQl=select+char(39)+insertinto+@objname+(+@FieldSQL+)
--set@FieldSQl=select+char(39)+insertinto+@objname+(+@FieldSQL+)
print@FieldSQL
set@Sql=values(+char(39)+@SQL+++char(39)+)+char(39)+from+@objname
print@SQL
set@sql=@fieldsql+@sql
exec(@sql)
--Exec@FieldSQl+@sql
--selectRtrim(isnull(convert(char(8),Did),))froms_send_files
GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO
看看了局吧,有一些BUG,够用就行,懒得改了。
“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE命令以及INSERT、UPDATE和DELETE命令。 |
|