【发布时间】:2010-09-27 13:44:19
【问题描述】:
我从生产中恢复了我的开发数据库,而我的开发环境中需要的存储过程在我的生产数据库中不存在。 Ii 是否可以使用命令将developmetn 存储过程导入回SQL Server。大约有 88 个文件,因为每个过程都在不同的文本文件中。
TIA! 克里斯
【问题讨论】:
标签: sql-server stored-procedures import generate-scripts
我从生产中恢复了我的开发数据库,而我的开发环境中需要的存储过程在我的生产数据库中不存在。 Ii 是否可以使用命令将developmetn 存储过程导入回SQL Server。大约有 88 个文件,因为每个过程都在不同的文本文件中。
TIA! 克里斯
【问题讨论】:
标签: sql-server stored-procedures import generate-scripts
哎呀,你做了很痛苦的方式来生成脚本。您应该通过右键单击 SSMS 中的数据库,选择任务 -> 生成脚本来为所有过程创建一个脚本。
但是,如果您不想再次执行该过程,请在文件夹中打开一个 cmd shell 并记住那些旧批处理文件的日子:
for %f in (*.sql) do sqlcmd -i %f
这应该可以解决问题!
如果需要,您可以向 sqlcmd 添加其他参数(即登录名、密码、服务器名称……)。要查看开关列表,只需发送sqlcmd -h。
【讨论】:
【讨论】:
右键单击开发数据库点击生成 SQL 脚本,然后只选择存储的程序。如果您需要额外的过滤,您甚至可以选择您不想要的存储过程。
然后在开发中运行该查询。
【讨论】:
我不知道是否有命令行方法可以做到这一点,但如果你将它们全部保存在文本文件中,那么编写一个快速而肮脏的应用程序应该不难,它只是循环所有文件,并使用您选择的任何语言在您的生产服务器上运行创建语句。
【讨论】:
如果像我一样,您必须处理文件夹层次结构中的一堆 sql 文件,这个班轮会将它们组合成一个名为 out.sql 的文件,您可以在 SQL Management Studio 中轻松执行该文件。它只会包含以 .sql 结尾的文件,而忽略 *.sqlsettings 等文件。
从 .sql 文件层次结构的根文件夹运行它。确保 out.sql 中没有任何有价值的内容,因为它将被替换。
del out.sql && for /f %f in ('dir /b /s ^| findstr /E \.sql') do type %f >> out.sql
【讨论】: