【问题标题】:Generating the stored procedures from command line从命令行生成存储过程
【发布时间】:2011-06-20 12:55:50
【问题描述】:

我想从 SQL Server 2005 生成脚本,即存储过程和用户​​定义的函数。我已经通过 SQL 管理工作室完成了,但我想通过命令行来完成。是否有任何方法可以通过命令行参数(如 sqlcmd.exe 或任何其他脚本)来实现。

【问题讨论】:

标签: sql sql-server-2005 stored-procedures


【解决方案1】:

对来自 SQLCMD 的查询使用 sp_helptext http://msdn.microsoft.com/en-us/library/ms176112.aspx

【讨论】:

    【解决方案2】:

    如果您更喜欢更灵活的东西,请查看 sys.sql_modules 系统视图,因为它为您提供了有关该对象的一些额外信息,并且能够连接到其他系统表。

    MauMen 的其余答案是正确的方向:使用 SQLCMD 生成带有“-o OutputFile.sql”的文件的输出。

    例如,创建一个proc:

    create proc dbo.pr_procDefTest
    as
    print 'This is a proc definition'
    go
    

    显示定义:

    select m.definition
    from sys.procedures p
    inner join sys.sql_modules m on p.object_id = m.object_id
    where p.name = 'pr_procDefTest'
    

    使用 SQLCMD 输出:

    sqlcmd -E -S .\sqlexpress -d test -o OutputFile.sql -Q "set nocount on; select m.definition from sys.procedures p inner join sys.sql_modules m on p.object_id = m.object_id where p.name = 'pr_procDefTest'" -h -1 -w 65535
    

    传入的参数有很多种,可以在sqlcmd Utility MSDN page上查到。需要注意的重要一点是“set nocount on”的使用;在脚本的开头以防止“(受影响的 1 行)”页脚。

    【讨论】:

    • @Cadeaeic 我喜欢你的解决方案。它很好地扩展了我的想法。
    【解决方案3】:

    微软几周前发布了一个名为 mssql-scripter 的新工具,它是 SSMS 中“生成脚本”向导的命令行版本。它是一个基于 Python 的开源命令行工具,你可以找到官方公告here。本质上,脚本程序允许您为您的数据库/数据库对象生成一个 T-SQL 脚本作为 .sql 文件。您可以生成该文件,然后执行它。这可能是您生成模式和/或数据库对象(例如存储过程)的一个很好的解决方案。下面是一个快速使用示例,可​​帮助您入门:

    $ pip install mssql-scripter
    # script the database schema and data piped to a file.
    $ mssql-scripter -S localhost -d AdventureWorks -U sa --include-objects StoredProcs --schema-and-data > ./myFile.sql
    

    更多使用示例在我们的 GitHub 页面上:https://github.com/Microsoft/sql-xplat-cli/blob/dev/doc/usage_guide.md

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 2012-05-22
      相关资源
      最近更新 更多