如何在.NET中以编程方式在SQL Server中获取VIEW的sql代码

Posted

技术标签:

【中文标题】如何在.NET中以编程方式在SQL Server中获取VIEW的sql代码【英文标题】:How to get sql code of VIEW in SQL server by programmatically in .NET 【发布时间】:2017-04-28 04:49:08 【问题描述】:

首先,我可以使用这些简单的方法来获取视图的基表和列。

Private Function GetBasetableFromSql(ByVal viewTable As String) As Integer
    Dim dt As New DataTable
    Try
        Dim sqlConn As SqlConnection
        sqlConn = New SqlConnection("Data Source=xxx;Initial Catalog=xxx_MMS;User ID=xxx;Password=xxxx")
        sqlConn.Open()
        Dim ta As SqlDataAdapter
        Dim strSql As String 
         strSql = "SELECT DISTINCT VIEW_NAME,c.TABLE_NAME " + _ 
                   FROM    INFORMATION_SCHEMA.VIEW_COLUMN_USAGE AS cu JOIN    
                   INFORMATION_SCHEMA.COLUMNS AS c ON  c.TABLE_SCHEMA  = 
                   cu.TABLE_SCHEMA AND  c.TABLE_CATALOG = cu.TABLE_CATALOG AND     
                   c.TABLE_NAME    = cu.TABLE_NAME AND     c.COLUMN_NAME   = cu.COLUMN_NAME" & _
            " WHERE VIEW_NAME = '" & ViewTableName & "'"
        ta = New SqlDataAdapter(strSql, sqlConn)

        ta.Fill(dt)

        For Each dr As DataRow In dt.Rows
            dgvRootTable.Rows.Add(dr(0), dr(1))
        Next
        sqlConn.Close()

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
    Return dt.Rows.Count
End Function

但是一些视图是由复杂的查询创建的。所以我需要先从一个视图中获取sql代码,并使用正则表达式的方式(如果有另一种方式,请告诉我。)从sql代码字符串中获取表和列。 但我不知道如何通过编程方式获取 sql 代码?

Sameple 由sql代码创建的视图

如果我能得到基表和列。 我将在这样的文档中创建结果

**View Table :** V_PO_SCRAP_NG_DTLS
[SCRAP_NG_DTLS].[TRAN_ID]
[SCRAP_NG_DTLS].[SEQ_NO]
[SCRAP_NG_DTLS].[CAUSE-OF-NG-JD]
[SCRAP_NG_DTLS].[CAUSE_OF_NG_DESCR]
[SCRAP_NG_DTLS].[NG_QTY]

【问题讨论】:

要么是 view 要么是 table - view table 是什么意思?!?!?一个数据库对象不能同时是两个..... 我的意思是视图。对不起我的英语不好。我误认为 view 可能是形容词而 table 是名词。谢谢你让我明白。 为什么用 c#、vb.net 和 .net 标记?这是一个sql问题。 【参考方案1】:

如果你想查看视图的 sql 脚本可以使用以下命令。您可以使用相同的命令获取存储过程的sql脚本,然后按Ctrl+T查看文本格式的结果。

sp_helptext 'yourViewName or ProcedureName'

【讨论】:

以上是关于如何在.NET中以编程方式在SQL Server中获取VIEW的sql代码的主要内容,如果未能解决你的问题,请参考以下文章

如何在 c#.net 中以编程方式重新启动我的窗口服务

如何在.net 中以编程方式设置连接字符串配置?

如何在 .NET 中以编程方式启动 Amazon EC2 实例

如何在 Entity Framework 6 中以编程方式创建与 MS SQL 的连接字符串?

如何使用 .NET 从 OpenOffice.org Writer 文档中以编程方式提取宏?

如何从 .NET 类中以编程方式访问服务器级 IIS 连接设置?