如何使用SMO(服务器管理对象)创建ALTER脚本而不是CREATE脚本

时间:2010-07-01 16:51:25

标签: c# tsql smo

我正在使用Microsoft.SqlServer.Management.Smo类为存储过程,表,视图等编写SQL脚本。我这样做是为了将它们放在源代码管理中。

如何为存储过程创建CREATE脚本,如何为它们获取ALTER脚本? ScriptingOptions'属性中是否有设置/选项?

5 个答案:

答案 0 :(得分:2)

  1. 使用SMO c#
  2. 的常规脚本选项和工具
  3. 然后简单地使用。

    foreach (string line in script)
                {
                    string l = line.Replace("CREATE FUNCTION", "ALTER FUNCTION");
                }
    
  4. 塔达。 :)。

答案 1 :(得分:1)

似乎没有ALTER脚本的设置。将ScriptingOptions.ScriptDrops设置为true的属性将创建drop语句。这样做的缺点是必须重新分配权限。

结束这个问题。

答案 2 :(得分:1)

答案 3 :(得分:0)

我在比较服务器时使用它。 toSP是SP的文本。如果“TO”服务器上没有,我执行Create(),否则它是加载的StoredProcedure spT的Alter()

If toSP = "" Then  ' Empty
    spT.Create()
Else
    spT.Alter()
End If

答案 4 :(得分:0)

StoredProcedure类有一个创建ALTER语句的方法。

https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.storedprocedure.scriptheader(v=sql.120).aspx

用法

var sprocHeader = sproc.ScriptHeader(forAlter: true);
var sprocBody = sproc.TextBody;