您现在的位置:中国下载站学院中心数 据 库数据库基础SQL语言 → 文章列表

一些t-sql技巧

作者:佚名  来源:不详  发布时间:2007-4-14 12:54:29   

减小字体 增大字体

 
 
  一、 只复制一个表结构,不复制数据

  select top 0 * into [t1] from [t2]

  二、 获取数据库中某个对象的创建脚本

  1、 先用下面的脚本创建一个函数

  if exists(select 1 from sysobjects where id=object_id('fgetscript') and objectproperty(id,'IsInlineFunction')=0)
 drop function fgetscript
go
create function fgetscript(
 @servername varchar(50)   --服务器
 ,@userid varchar(50)='sa'  --用户名,如果为nt验证方式,则为空
 ,@password varchar(50)=''  --密码
 ,@databasename varchar(50)  --数据库名称
 ,@objectname varchar(250)  --对象名
) returns varchar(8000)
as
begin
 declare @re varchar(8000)    --返回脚本
 declare @srvid int,@dbsid int    --定义服务器、数据库集id
 declare @dbid int,@tbid int    --数据库、表id
 declare @err int,@src varchar(255), @desc varchar(255) --错误处理变量
--创建sqldmo对象
 exec @err=sp_oacreate 'sqldmo.sqlserver',@srvid output
 if @err<>0 goto lberr
--连接服务器
 if isnull(@userid,'')='' --如果是 Nt验证方式
 begin
  exec @err=sp_oasetproperty @srvid,'loginsecure',1
  if @err<>0 goto lberr
exec @err=sp_oamethod @srvid,'connect',null,@servername
 end
 else
  exec @err=sp_oamethod @srvid,'connect',null,@servername,@userid,@password
if @err<>0 goto lberr
--获取数据库集
 exec @err=sp_oagetproperty @srvid,'databases',@dbsid output
 if @err<>0 goto lberr
--获取要取得脚本的数据库id
 exec @err=sp_oamethod @dbsid,'item',@dbid output,@databasename
 if @err<>0 goto lberr
--获取要取得脚本的对象id
 exec @err=sp_oamethod @dbid,'getobjectbyname',@tbid output,@objectname
 if @err<>0 goto lberr
--取得脚本
 exec @err=sp_oamethod @tbid,'script',@re output
 if @err<>0 goto lberr
--print @re
 return(@re)
lberr:
 exec sp_oageterrorinfo NULL, @src out, @desc out
 declare @errb varbinary(4)
 set @errb=cast(@err as varbinary(4))
 exec master..xp_varbintohexstr @errb,@re out
 set @re='错误号: '+@re
  +char(13)+'错误源: '+@src
  +char(13)+'错误描述: '+@desc
 return(@re)
end
go

转贴于:中国QQ站

  • 上一篇文章:SQL语言快速入门
  • 下一篇文章:一个过滤重复数据的sql语句
  • 阅读统计:[]
  • 中国QQ站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页

    相关文章
    文章评论(评论内容只代表网友观点,与本站立场无关!)

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

             (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码


    设为首页 - 关于我们 - 广告服务 - 网站地图 - 加入收藏 - 网站声明 - 网站帮助 - 友情链接