请问我如何在一个数据库中建立和另一数据库中的某表结构完全相同的表?用程序实现。

intersun 2003-09-12 02:04:24
请问我如何在一个数据库中建立和另一数据库中的某表结构完全相同的表?
我目前是使用的Select * Into TableB From TableA的方法,但是这样,很多特性带不过去,比如标识字段等;还有在两个SQLServer服务之间使用这种方法,我发现好像连主键也带不过去。
现在想能在源表实现SQLServer中的生成SQL语句功能,得到形成源表的SQL语句,再在目的端执行它,生成目的表。可是如何得到源端表的SQL语句呢?
还有各位能否提供其他更好的方法?多谢。
...全文
323 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
gszblgr 2003-09-29
  • 打赏
  • 举报
回复
关注中。。。。。
entitybean 2003-09-29
  • 打赏
  • 举报
回复
to letsflytogether(恨!不能拥有天下所有的财富,然后平分):

@databasename varchar(50) --数据库名称
@objectname varchar(250) --对象名


这里的objectname (对象名)指的是什么?
aierong 2003-09-29
  • 打赏
  • 举报
回复
ok
entitybean 2003-09-29
  • 打赏
  • 举报
回复
关注ding
intersun 2003-09-29
  • 打赏
  • 举报
回复
lfengxu(lfengxu)兄:您说的过程我都要在程序中实现,中间没有人工干预,请问是否可行?
gmlxf 2003-09-29
  • 打赏
  • 举报
回复
学习。
lfengxu 2003-09-12
  • 打赏
  • 举报
回复
你在A数据库中产生这个表的创建脚本
然后copy到B数据库中运行即可
intersun 2003-09-12
  • 打赏
  • 举报
回复
yujohny(踏网无痕)兄:我就是想知道这个过程——

得到SQL脚本方法,在查询分析器里选择你要的表,
右击“在新窗口中编写对象脚本”——》“创建”,你就可以看见生成的SQL脚本

——是如何用程序实现啊。
yujohny 2003-09-12
  • 打赏
  • 举报
回复
你在A数据库中产生这个表的创建脚本
然后copy到B数据库中运行即可

得到SQL脚本方法,在查询分析器里选择你要的表,
右击“在新窗口中编写对象脚本”——》“创建”,你就可以看见生成的SQL脚本
伍子V5 2003-09-12
  • 打赏
  • 举报
回复
其实我觉得如果不用程序的话,用DTS挺好的
txlicenhe 2003-09-12
  • 打赏
  • 举报
回复
这个,恐怕有点难。
伍子V5 2003-09-12
  • 打赏
  • 举报
回复
右击数据库,所有任务-》生成SQL 脚本
然后设定一下就可以了

如果用程序的话
参见下面的存储过程


用下面的存储过程

/*
在查询分析器中调用sqldmo生成脚本--存储过程

邹建 2003.07-----------------*/

/*--调用实例
declare @str varchar(8000)
exec sp_getscript 'zj','','','xzkh_sa','地区资料',@str output
print @str
*/
if exists(select 1 from sysobjects where id=object_id('sp_getscript') and objectproperty(id,'IsProcedure')=1)
drop procedure sp_getscript
go
create procedure sp_getscript
@servername varchar(50) --服务器名
,@userid varchar(50) --用户名,如果为nt验证方式,则为空
,@password varchar(50) --密码
,@databasename varchar(50) --数据库名称
,@objectname varchar(250) --对象名
,@re varchar(8000) output --返回脚本
as
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

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
select 错误号=@re, 错误源=@src, 错误描述=@desc
return

go

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧