我使用ADO Connection OpenSchema()调用以各种方式成功从SQL服务器上托管的数据库中提取列定义,因此我可以在另一个SQL数据库中以编程方式重新创建这些表.到现在为止还挺好.
使用多个视图进行与上表的主要交互; 虽然OpenSchema()能够以与返回表的列定义相同的方式返回视图的列定义,但缺少一小部分信息 - 视图中的列映射到的基础表中的哪个表和列.
我尝试使用ADOX目录视图访问用于创建视图的SQL命令,但似乎我们使用的SQL Server的OLEDB驱动程序不支持此功能.
有没有办法通过ADO获取视图配置的这些信息,或者以"ColumnX映射到表Z中的ColumnY"的方式或以用于创建视图的实际SQL命令的形式?
有关如何以编程方式从SQL Server 2005获取完全相同的存储过程源的任何指针,就像我在SQL Server Management Studio中右键单击该存储过程并选择修改一样?
我正在尝试使用SMO,但存在一些文本差异.该过程始终具有CREATE,而不是ALTER,并且标头中存在一些差异,例如在我以编程方式获取的版本中缺少GO.我可以解决这些问题,但也许还有更好的方法吗?
我再次使用SMSE在SQL Server 2005中.通过Visual Studio 8 2008使用SMO.
更新:得到一些答案,告诉我们如何检索存储过程的基础知识.我正在寻找的是检索与GUI生成的文本相同(或几乎相同)的文本.
示例:对于sp_mysp,在Management Studio中单击鼠标右键,选择"修改".这会产生:
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]
我想以编程方式获得相同的东西(注意标题中的GO,以及它是一个更改程序的事实.理想情况下,我希望通过最小程序修复所检索的源来实现此目的.
我很乐意在Script Date细节中得到不同的东西...