生成SQL Server数据库脚本四法

  数据库开发人员或数据库管理员(DBA)为了发布数据库或备份数据库对象,常需要生成T-SQL脚本。笔者在这里对常用方法进行了总结,供朋友们参考。

  方法一:使用企业管理器
  进入“企业管理器”,右击数据库,选择“所有任务→生成SQL脚本”即可。

  方法评价:优点是方便,且操作简单。缺点是不能在应用程序中执行。

  方法二:使用SQLDMO
  很多朋友喜欢通过程序生成脚本,比如使用SQLDMO,以下是一个使用SQLD MO方法生成建库脚本的例子,代码如下:

  DECLARE

  @serverName varchar(255),--服务器名

  @database varchar(255),--数据库名

  @ScriptFile varchar(255)--存储的脚本文件名(路径名称)

  SELECT @serverName='MYserver',

  @database='Mydatabase',

  @ScriptFile='c:/test.sql'

  DECLARE @cmdstr nvarchar(4000)

  DECLARE @object int

  DECLARE @hr int

  SET @CmdStr = 'Connect('+@ServerName+')'

  EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT

  EXEC @hr = sp_OASetProperty @object, 'LoginSecure', TRUE

  EXEC @hr = sp_OAMethod @object,@CmdStr

  SET @CmdStr = 'Databases("'+@database+'").Script(5,"' + @ScriptFile + '")'

  EXEC @hr = sp_OAMethod @object,@CmdStr

  方法评价:SQLDMO的最大优点是灵活,但缺点是使用者需要对数据的对象依存关系相当清楚,这对于SQL Server初学者来说难度较大。用SQLDMO生成脚本的方法应用很普遍,想详细了解的朋友可以在网上很容易地找到相关资料。

  方法三:使用DTS
  如果是MS SQL Server 7.0以上的版本,我们也可以通过DTS将源数据库的对象复制到目标数据库。在SQL Server 7.0中有一个“transfer objects”的选项。

  方法评价:可以使用MS提供的图形界面,操作比较方便,还可以建立一个DTS包反复调用。缺点是对多个数据库对象分别进行控制时很不方便。

  方法四:使用scptxfr.exe工具
  笔者想重点介绍的工具是scptxfr.exe,SQL Server 7.0以上的版本都自带了这个工具,默认安装。SQL Server 2000安装在“/Program Files/Microsoft SQL Server/MSS QL/Upgrade”目录下。如果没有安装,可以到安装光盘上查找。

  scptxfr.exe是一个带命令行参数的可执行程序,可以生成数据库所有对象的完整脚本。可在DOS命令行和各种前台开发程序内执行。

  以下是生成Northwind完整SQL脚本的例子:

  exec master..xp_cmdshell

  'c:/"Program Files"/"Microsoft SQL Server"/MSSQL/Upgrade/scptxfr.exe

  /s serverName /d databaseName /P SApassword /f c:/test.sql /q /r /T'

  方法评价:该方法综合了以上方法的优点,不用考虑对象依存关系,一次性全部生成,且用法相当简单。对于初学者来说更是个不可多得的好工具。

  小资料:scptxfr.exe
  语法格式:
  SCPTXFR/s <服务器> /d <数据库> {[/I] | [/P <密码>]}

  {[/F <脚本文件目录>] | [/f <单个脚本文件>]}

  /q /r /O /T /A /E /C /N /X /H /G /Y /?

  参数说明:
  /s 指示要连接到的源服务器。

  /d 指示要为之编写脚本的源数据库。

  /I 使用集成安全性。

  /P sa要用的密码。请注意,登录 ID始终为sa。若不使用/P或标志后面没有密码,则将使用空密码。不与/I兼容。

  /F 脚本文件应生成到的目录。这意味着为每个对象分类生成一个文件。

  /f 所有脚本将保存到的单个文件。不与/F兼容。

  /q 在所生成的脚本中使用被引用的标志符。

  /r 脚本中的对象包括drop语句。

  /O 生成OEM脚本文件。无法用于/A或/T。

  /T 生成UNICODE脚本文件。无法用于/A或/O。

  /A 生成ANSI脚本文件。无法用于/T或/O。

  /? 命令行帮助。

  /E 发生错误时停止脚本编写。默认行为是记录该错误然后继续。

  /C 指示替代服务器CodePage(代码页)。

  /N 生成ANSI PADDING。

  /X 编写SP和XP脚本以分隔文件。

  /H 生成不带首部的脚本文件。默认带首部。

  /G 使用指定的服务器名称作为所生成的输出文件的前缀。

  /Y 为“扩展属性”生成脚本(仅对8.x服务器有效)。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值