.NET SQL सर्वर प्रबंधन ऑब्जेक्ट्स तालिका/दृश्य/प्रक्रिया संग्रह

जब मैं किसी प्रोजेक्ट के लिए इन ऑब्जेक्ट्स की सूची को पकड़ने का प्रयास कर रहा हूं, तो मैं सिस्टम दृश्य/तालिकाओं/प्रक्रियाओं को कैसे छोड़ सकता हूं?

अभी मैं नामों और/या स्कीमा पर एक स्ट्रिंग तुलना कर रहा हूं, लेकिन मुझे लगता है कि ऐसा करने का एक बेहतर तरीका है।

Code:

''' 
''' Grab all our tables, attempting to skip over system tables
''' 
''' 
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

''' 
''' Grab all our views, make sure to skip over system, and information views
''' 
''' 
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
1

1 उत्तर

Been a long week. There is a property of each object called IsSystemObject that does the trick. I wasn't seeing it in the intellisence due to using the AsParallel

0
जोड़ा
साथ ही, अधिकांश सिस्टम ऑब्जेक्ट्स sys। स्कीमा में हैं। उन परेशान आरेखण वस्तुओं को छोड़कर, जिन्हें मैं आम तौर पर नाम पर एक पैटर्न के साथ फ़िल्टर करता हूं ('पसंद नहीं' dt_% ')।
जोड़ा लेखक RBarryYoung, स्रोत