日期:2014-05-19  浏览次数:20467 次

能否用一个脚本来生成数据库创建脚本(表、存储过程...)
我只知道通过工具来生成“数据库创建脚本(表、存储过程...)”
这种操作很频繁,通常几天就要操作一次,能否可以通过脚本来生成“数据库创建脚本(表、存储过程...)”呢
或者有什么方法可以减少这种操作的时间,谢谢

------解决方案--------------------
自己做“数据库创建脚本(表、存储过程...)”
没必要,对象类型太多,做起来麻烦

------解决方案--------------------
用sqldmo完全可以作到
------解决方案--------------------
楼主的意思在下不是特别明白,完全可以呀.我们公司的项目大部分都是维护类项目,就是手工维护数据库创建脚本的(反正现在的工具都支持反向工程).

关键你要作好配置管理工作,别到时都不知道自己修改了那些内容就可以了.
------解决方案--------------------
Option Explicit
Dim dmoServer
Dim dmoDB
Dim dmoSP

Dim FSO
Dim strFolder
Dim strFile

Const SQLDMOScript_DRI_PrimaryKey = 268435456
Const SQLDMOScript_DRI_ForeignKeys = 134217728
Const SQLDMOScript_OwnerQualify = 262144
Const SQLDMOScript_IncludeHeaders = 131072
Const SQLDMOScript_NoDRI = 512
Const SQLDMOScript_AppendToFile = 256
Const SQLDMOScript_Default = 4
Const SQLDMOScript_Drops = 1
Const SQLDMOScript_ToFileOnly = 64

Set dmoServer = CreateObject( "SQLDMO.SQLServer ")
Set FSO = CreateObject( "Scripting.FileSystemObject ")

dmoServer.LoginSecure = True
dmoServer.Connect "(local) "

For Each dmoDB In dmoServer.Databases
strFolder = "C:\SQLDMO_Scripts\Local\Result\SP\ " & dmoDB.Name
If dmoDB.Name <> "master " And dmoDB.Name <> "msdb " And dmoDB.Name <> "tempdb " And dmoDB.Name <> "Northwind " And dmoDB.Name <> "pubs " And dmoDB.Name <> "model " Then
'If dmoDB.Name = "ApplogDB " Then
If Not FSO.FolderExists(strFolder) Then
FSO.CreateFolder(strFolder)
End If

For Each dmoSP In dmoDB.StoredProcedures
If Not dmoSP.SystemObject Then
strFile = strFolder & "\ " & dmoSP.Name & ".sql "
dmoSP.Script SQLDMOScript_IncludeHeaders + SQLDMOScript_ToFileOnly + SQLDMOScript_Drops + SQLDMOScript_Default , strFile
End If
Next

End If
Next

Set dmoSP = Nothing
Set dmoDB = Nothing
Set dmoServer = Nothing

============================================================
这是我常用的在本地生成数据库对象脚本的VBS。
你可以参考一下。