如何在.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代码的主要内容,如果未能解决你的问题,请参考以下文章
如何在 .NET 中以编程方式启动 Amazon EC2 实例
如何在 Entity Framework 6 中以编程方式创建与 MS SQL 的连接字符串?