科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道生成数据库下所有对象的脚本

生成数据库下所有对象的脚本

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在SQL Server 2000 企业管理器里选中数据库,按鼠标右键,选[生成SQL脚本],

作者:余枫 来源:http://fengyu.china.com 2007年9月14日

关键字: 微软 数据库 SQL 脚本

  • 评论
  • 分享微博
  • 分享邮件
 在SQL Server 2000 企业管理器里选中数据库,按鼠标右键,选[生成SQL脚本],

点[全部显示]按钮后会出现[编写全部数据对象脚本],如下图:




点[确定]按钮后,会出现一个[另存为]窗口,

选择将要生成文件的目录及文件名,点[保存]按钮后,

出现[正在编写脚本]和[脚本编写完成]的小窗口,按[确定]按钮结束。

如果数据库很多,这样用图形的方式来生成数据库所有对象的脚本就很麻烦了。

上个月我在www.sqlservercentral.com看到一篇文章

里面提到直接调用SQL Server 2000的DOS下应用程序scptxfr.exe,就可以生成数据库下所有对象的脚本。

经过使用和测试,发现那里面介绍的方法有一些错误:

例如服务器被改名称了以后,还用@@Servername就不对了,

master库下也可能会生成一些公用存储过程,最好也把相关的对象脚本定期保存出来。

下面是我修改了后,生成DOS命令的SQL:

-- 用windwos认证方式生成调用DOS下应用程序scptxfr.exe的脚本:
declare @server_name nvarchar(30)
select top 1 @server_name=originating_server from msdb.dbo.sysjobs
select @server_name
select '"D:\Microsoft SQL Server\MSSQL\Upgrade\scptxfr.exe" /I /s '+@server_name+' /d ' + name + ' /f F:\yu\db_scripts\3\'+@server_name+'_' + name + '.sql /r /O /Y /G ' from master.dbo.sysdatabases where name not in ('tempdb', 'model', 'pubs', 'northwind', 'msdb')


如果你们DOS下应用程序scptxfr.exe不在D:\Microsoft SQL Server\MSSQL\Upgrade目录,需要修改盘符和目录名;

F:\yu\db_scripts\3\目录是我举例子用的目录,你们实际用的时候也要修改。

我们把[SQL查询分析器]结果栏里面生成的SQL语句保存到一个gen_db_scripts.bat批处理文件里。

最后在DOS下执行这个gen_db_scripts.bat就可以完成全部数据库脚本的生成。


-- 用sa加密码方式生成调用DOS下应用程序scptxfr.exe的脚本:
declare @server_name nvarchar(30)
select top 1 @server_name=originating_server from msdb.dbo.sysjobs
select @server_name
select '"D:\Microsoft SQL Server\MSSQL\Upgrade\scptxfr.exe" /P password /s '+@server_name+' /d ' + name + ' /f F:\yu\db_scripts\2\'+@server_name+'_' + name + '.sql /r /O /Y /G ' from master.dbo.sysdatabases where name not in ('tempdb', 'model', 'pubs', 'northwind', 'msdb')


以下是在DOS下scptxfr/? 看帮助,得到的参数提示信息:

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(代码页)的 CodePage。
/N      —      生成 ANSI PADDING。
/X      —      编写 SP 和 XP 脚本以分隔文件。
/H      —      生成不带首部的脚本文件。(默认: 带首部)。
/G      —      使用指定的服务器名称作为所生成的输出文件的前缀(以处理服务器名称
中的划线)。
/Y      —      为“扩展属性”生成脚本(仅对 8.x 服务器有效)。
 
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章