关于如何以编程方式从SQLServer 2005获取完全相同的存储过程源的任何指针,如在SQLServerManagementStudio中右键单击该存储过程并选择“修改”时?
我正在尝试使用SMO,但是有一些文本上的差异。这个过程总是有创建的,而不是修改的,并且在标题中有一些不同,比如我以编程方式获得的版本中缺少GO。我可以把这些修好,但也许还有更好的办法?
同样,我使用SMSE在SQLServer 2005中。通过VisualStudio 8 2008使用SMO。
示例:表示sp_mysp,右键单击ManagementStudio,选择Modify。
USE [MY_DB]
GO
/****** Object: StoredProcedure [dbo].[sp_mysp] Script Date: 01/21/2009 17:43:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[sp_mysp]
发布于 2018-03-27 16:42:47
SQLProfiler显示了以下内容:您必须手动编写代码。
SMSE在生成语句时会执行相当长的查询字符串。
下面的查询(或类似的内容)用于提取文本:
SELECT
NULL AS [Text],
ISNULL(smsp.definition, ssmsp.definition) AS [Definition]
FROM
sys.all_objects AS sp
LEFT OUTER JOIN sys.sql_modules AS smsp ON smsp.object_id = sp.object_id
LEFT OUTER JOIN sys.system_sql_modules AS ssmsp ON ssmsp.object_id = sp.object_id
WHERE
(sp.type = N'P' OR sp.type = N'RF' OR sp.type='PC')and(sp.name=N'#test___________________________________________________________________________________________________________________00003EE1' and SCHEMA_NAME(sp.schema_id)=N'dbo')
它返回纯CREATE,然后在代码中用ALTER替换。
SET ANSI NULL以及GO语句和日期都是在此之前的。
https://stackoverflow.com/questions/-100007814
复制相似问题