日期:2014-05-18 浏览次数:20624 次
生成2005数据库结构脚本 http://topic.csdn.net/u/20100504/09/19616cd8-ebaf-4a89-8383-5a7a95d81a0c.html?74663 --以下生成整个数据库的SQL脚本,我测试了,相当好用。 --(scptxfr.exe的路径要正确以下是我的路径) declare @cMd varchar(1000) set @cmd = 'master.dbo.xp_cmdshell ' + '''c:\"Microsoft ' + 'SQL Server"' + '\MSSQL\Upgrade\scptxfr.exe ' + ' /s YourServerName /p YourSAPassword /I /d YourDBName /f ' + 'c:\YourDBName.sql''' exec (@cmd) 工具参数说明: 命令行语法: SCPTXFR /s <服务器> /d <数据库> {[/I] | [/P <密码>]} {[/F <脚本文件目录>] | [/f <单个脚本文件>]} /q /r /O /T /A /E /C <CodePage> /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 服务器有效)。
------解决方案--------------------
param ( [string] $SQLServername, [string] $Databasename, [string] $filepath ) [reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null $MyScripter=New-Object ("Microsoft.SqlServer.Management.Smo.Scripter") $srv=New-Object "Microsoft.SqlServer.Management.Smo.Server" $SQLServername $MyScripter.Server=$srv $scrcontent=$MyScripter.Script($srv.databases["$Databasename"]) $date=Get-Date $suffix="_"+$date.year.tostring()+"_"+$date.month.tostring()+"_" +$date.day.tostring() $filepath=$filepath+$databasename+"_db_"+$suffix+".sql" $scrcontent2="use [master