MSSQL:如何使用代码编写存储过程创建脚本?

ctr*_*yan 4 sql t-sql sql-server 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
Run Code Online (Sandbox Code Playgroud)


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

--Some comment
SELECT Column
FROM Somewhere
Run Code Online (Sandbox Code Playgroud)

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

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

cjk*_*cjk 9

存储过程仅显示在Management Studio中的一行中.如果您将带有结果的查询运行到文本,使用以下内容,您将获得正确的换行符:

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

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

print @sql
Run Code Online (Sandbox Code Playgroud)

  • 你可以随时做varchar(max),它可以容纳所有这些 (2认同)