sql - MSSQL : How do you script Stored Procedure creation with code?

标签 sql sql-server tsql stored-procedures information-schema

我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information_schema.routines 查询存储过程定义列表。

SELECT 
    t1.Routine_Definition
FROM
    [server1].MyDatabase.INFORMATION_SCHEMA.Routines t1 
LEFT JOIN
    [server2].MyDatabase.INFORMATION_SCHEMA.Routines t2 ON t1.Routine_Name = t2.Routine_Name
WHERE
    t2.Routine_Name is null


这给了我在一行中的查询定义,所以当我有这样的评论时

--Some comment
SELECT Column
FROM Somewhere

SQL 被注释掉,我无法使用该定义来创建 SP。

如何使用正确的换行符解析它?
或者
有没有更好的方法来获取这些脚本(使用代码)?

最佳答案

存储过程在 Management Studio 中仅显示在一行上。如果您运行查询并将结果写入文本,使用以下命令,您将获得正确的换行符:

declare @sql varchar(8000) -- varchar(max) in SQL 2005+

SELECT 
        @sql = t1.Routine_Definition
FROM
        INFORMATION_SCHEMA.Routines t1 

print @sql

关于sql - MSSQL : How do you script Stored Procedure creation with code?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/513158/

相关文章:

mysql - 使用联结表的查询交集

sql-server - 大事务日志如何影响性能?

sql-server - 在 Transact-SQL 中设置参数时如何连接字符串

sql - 为什么选择 TOP 1 . 。 。 ORDER BY 返回表中的第二行?

sql-server-2005 - 使用t-sql计算时间跨度

sql-server - 计算 SQL Server 存储过程中删除的行数

sql - 将 Excel 从 Azure Blob 存储导入到 Sql Server 时出现数据截断问题

mysql - 创建带有时间戳的 mysql 输出文件

php - 组合简单的、几乎相同的选择语句

SQL 查询将一列数字变成字符串