有没有办法可以从数据库中获取所有表,proc和其他对象的脚本?我知道有一个脚本数据库的选项,但它只给了我某种顶级脚本,当然不是创建所有表,procs,udfs,.etc的脚本。
答案 0 :(得分:153)
来自Management Studio 右键单击您的数据库。 任务 - >生成脚本。
应该这样做。
答案 1 :(得分:12)
我编写了一个名为SchemaZen的开源命令行实用程序来执行此操作。它比管理工作室的脚本快得多,而且它的输出更适合版本控制。它支持脚本化架构和数据。
生成脚本运行:
schemazen.exe script --server localhost --database db --scriptDir c:\somedir
然后从脚本运行:
重新创建数据库schemazen.exe create --server localhost --database db --scriptDir c:\somedir
答案 2 :(得分:4)
我为此任务编写了一个实用程序SMOscript。
脚本生成由SMO库执行,并支持SQL 2005和2008中的新对象类型。
答案 3 :(得分:3)
我们最终使用SSMS脚本生成的组合来提取模式和数据,然后使用我们自己的数据库工具,该工具允许在脚本中进行关键字解析和基于令牌的替换。它还确保脚本只应用一次。
为什么呢?
示例脚本(为简洁起见编辑)
-- Sleep: 5
-- Sleep after creating database to allow file system to create db files
CREATE DATABASE [$Database$]
GO
EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$
GO
USE [$Database$]
GO
IF '1'!='$IntegratedSecurity$'
BEGIN
CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$]
CREATE USER [$User$] FOR LOGIN [$Login$]
EXEC sp_addrolemember N'db_owner', N'$User$'
END
GO
答案 4 :(得分:1)
我建议查看RedGate SQL packager。它不是免费的,但已经足够值得付出代价。
答案 5 :(得分:1)
只是查看表格数据,在Management Studio 2012和2014中输出所有表格数据内容,它有点隐藏但是我在找了一些选项之后找到了选项:
答案 6 :(得分:0)
如果您需要以编程方式执行此操作,则可以对SQL Server 2000使用SQL DMO库(OLE),但更可能的是,您可能希望对SQL Server 2005及更高版本使用SQL SMO库(本机.NET库)
这两个库都是SQL Server管理工具安装的组成部分。
这是从SQL Server Management Studio生成完整数据库脚本不足的情况。