1
当我试图获取项目的这些对象的列表时,如何跳过系统视图/表/过程?.Net SQL Server管理对象表/视图/过程集合
现在我正在对名称和/或模式进行字符串比较,但我认为有更好的方法来做到这一点。
代码:
''' <summary>
''' Grab all our tables, attempting to skip over system tables
''' </summary>
''' <remarks></remarks>
Private Sub GrabTables()
Dim _Db As Database = Srv.Databases(0)
Dim _Tbls As ParallelQuery = _Db.Tables.AsParallel()
For Each tbl In _Tbls
If Not tbl.Name.Contains("sys") Then
_Tables.Add(New TableTyping() With {
.Name = tbl.Name,
.Schema = tbl.Schema,
.Columns = ProcessColumns(tbl.Columns)})
End If
Next
MsgBox(_Tables.Count)
End Sub
''' <summary>
''' Grab all our views, make sure to skip over system, and information views
''' </summary>
''' <remarks></remarks>
Private Sub GrabViews()
Dim _Db As Database = Srv.Databases(0)
Dim _Tbls As ParallelQuery = _Db.Views.AsParallel()
For Each tbl In _Tbls
If Not tbl.Name.Contains("sys") AndAlso Not tbl.Schema.Contains("sys") AndAlso Not tbl.Schema.Contains("INFORMATION") Then
_Views.Add(New TableTyping() With {
.Name = tbl.Name,
.Schema = tbl.Schema,
.Columns = ProcessColumns(tbl.Columns)})
End If
Next
MsgBox(_Views.Count)
End Sub
,所以我没有看到它。另外,大多数系统对象都在'sys.'模式中。除了那些烦人的图表对象,我通常用名称上的模式('NOT LIKE'dt_%')过滤出来。 – RBarryYoung