【发布时间】:2013-06-20 10:45:10
【问题描述】:
我想编写一个从数据库中生成各种语句的脚本。
类似:
select 'DROP TABLE ['+ name + ']' from sys.objects where type = 'T' ;
我想自动将这些语句的所有输出收集到一个新文件中,然后我想执行这个文件。这可能吗?
重要提示:输出当然应该没有标题,也没有任何其他错误/成功、消息等。
在最佳情况下,所有必要的选项都应该在脚本本身中设置,而不是在用户界面中设置。
【问题讨论】:
-
您应该改用
sys.tables- 这样您就不需要任何type = ...说明符。顺便说一句:type = 'T'是错误的 - 应该是type = 'U'(U如user table) - 但正如我所提到的 - 如果你使用select name from sys.tables,那么你不需要记住那些棘手的细节。 .. -
执行动态脚本然后保存到文件有什么问题?这可以通过将所有内容收集到变量、将该变量打印到 SSMS 消息窗口、使用 exec 执行该变量并最终保存消息中的输出脚本来简单地实现。
-
您好,请问可以举个例子吗?可能对你来说“只是”,但对我来说不是:-)。澄清我现在做什么:在菜单中,我选择“查询结果到文件”。然后我启动脚本,我需要输入一个文件名。脚本完成后,我打开文件,手动删除“-----”和“17 行”之类的行,然后执行新脚本。我想进一步自动化,即不需要输入文件名,也不需要手动清理。
标签: sql-server sql-server-2008 sql-server-2008-r2 ssms