![](/img/trans.png)
[英]How to access SSRS reports in ReportViewer using SQL Login with password credentials?
[英]Deleting multiple SSRS reports across subfolders using command line?
我是SSRS部署的新手,我一直在尋找,但無法找到適用於我的情況的確切方案。 我在SSRS 2012中的不同子文件夾中部署了多個報告。例如:
由於有時SSRS不喜歡覆蓋的報告文件,我想在部署任何新報告之前刪除實例中的所有報告文件。 我可以通過使用rs.exe調用此腳本來成功刪除文件夾及其內容:
Public Sub Main()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
Dim bh As New BatchHeader()
bh.BatchID = rs.CreateBatch()
rs.BatchHeaderValue = bh
'Delete all reports from Main Folder and sub folders.Note:The Folders will be deleted also.
'If do not want to delete the folder, we could use rs.CreateFolder(“Folder name”, “/Main Folder”, “nothing”) to create a new one with nothing.
rs.DeleteItem("/Sales")
rs.DeleteItem("/Finance")
rs.DeleteItem("/Misc")
'Delete all reports from a sub folder, and delete the sub folder
'rs.DeleteItem("/Main Folder/Sub Folder ")
rs.BatchHeaderValue = bh
' Delete folders using batch header.
Try
rs.ExecuteBatch()
Console.WriteLine("Folders deleted successfully.")
Catch e As SoapException
Console.WriteLine(e.Detail.InnerXml.ToString())
Finally
rs.BatchHeaderValue = Nothing
End Try
End Sub 'Main
問題在於如果這些文件夾中的任何一個不存在,腳本將停止。 我正在努力確定解決這個問題的最佳方法。 最好的方法是清空文件夾並將它們留在那里,或找到一種方法來忽略錯誤並繼續?
根據答案,我將如何在此腳本中調用它?
您可以通過運行父文件夾中的項目並查找具有預期名稱的任何子文件夾來檢查文件夾是否存在。 然后,僅當存在時,嘗試刪除該文件夾。
這應該可以解決您的問題,即您只有在知道它存在時才會刪除。
您的代碼可能類似於:
Public Sub Main()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
DeleteFolder("Sales")
DeleteFolder("Finance")
End Sub
Public Sub DeleteFolder(ByVal folderName As String)
Dim items() as CatalogItem
Dim item As CatalogItem
Dim folderExists As Boolean = False
items = rs.ListChildren("/", False)
For Each item In items
If item.TypeName = "Folder" And item.Name.Equals(folderName)
folderExists = True
End If
Next
If folderExists
Try
rs.DeleteItem("/" + folderName)
Console.WriteLine("Deleted folder {0}", folderName)
Catch e As Exception
Console.WriteLine(e.Message)
End Try
Else
Console.WriteLine("Folder {0} does not exist", folderName)
End If
End Sub
這只會檢查/
文件夾 - 您可能需要調整以匹配您的設置。
我完成了接受的答案支持:
所以代碼是:
Dim TargetRSFolder As String = vTARGETRSFOLDER
Dim TargetRSRoot As String = vTARGETROOT
Dim DeleteContentOnly As Boolean = vDeleteContentOnly
Public Sub Main()
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
DeleteFolder(TargetRSFolder)
End Sub
Public Sub DeleteFolder(ByVal folderName As String)
Dim items() as CatalogItem
Dim item As CatalogItem
Dim folderExists As Boolean = False
Dim path As String = TargetRSRoot
IF (path = "")
path = "/"
END IF
items = rs.ListChildren(path, False)
For Each item In items
If item.Type.ToString() = "Folder" And item.Name.ToLower() = folderName.ToLower()
folderExists = True
End If
Next
If folderExists
Try
IF (DeleteContentOnly = True)
items = rs.ListChildren(TargetRSRoot + "/" + folderName, False)
For Each item In items
rs.DeleteItem(item.Path)
Next
Console.WriteLine("Deleted folder's contetnts : {0}", folderName)
ELSE
rs.DeleteItem(TargetRSRoot + "/" + folderName)
Console.WriteLine("Deleted folder :{0}", folderName)
END IF
Catch e As Exception
Console.WriteLine(e.Message)
End Try
Else
Console.WriteLine("Folder {0} does not exist", folderName)
End If
End Sub
假設我們在DeleteServerReportFolder.rss
文件中有上述代碼,並且我們有"/bb/cc"
文件夾。
cc
文件夾的內容: rs.exe -i DeleteServerReportFolder.rss -s http:// server2 / ReportServer2017 -v vTARGETRSFOLDER = cc -v vTARGETROOT = / bb -v vDeleteContentOnly = true
bb
文件夾: rs.exe -i DeleteServerReportFolder.rss -s http:// server2 / ReportServer2017 -v vTARGETRSFOLDER = bb -v vTARGETROOT = -v vDeleteContentOnly = false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.