Sql-Server-2012

在 SQL Server 2012 的 TSQL 函式中使用 XSD 驗證 XML?

  • January 9, 2016

我需要在 TSQL 中使用 XSD 驗證 XML。為了使這項任務半自動化,我需要在 TSQL 函式中執行此操作。

要進行驗證,我必須將值設置為 XML,如果它無效,我將收到錯誤消息。

我的問題是在 TSQL 函式里面我不能使用TRY / CATCH。這是正確的方式嗎?如果有可能做到這一點?

一個選擇(如果在標量函式的上下文中執行此操作是一項硬性要求,可能是您唯一的選擇)是使用 SQLCLR。SQLCLR 標量函式可以在 C# 或 VB.NET 程式碼中執行 try/catch/finally 結構。因此,您可以將 XML 文件和 XSD 都作為SqlXml類型傳入,並在那裡進行驗證。只需返回一個SqlBoolean它是否驗證。

請務必執行以下操作,以便 SQLCLR 函式可以參與並行計劃:

  • IsDeterministic = trueSqlFunction屬性中指定。
  • 確保該函式位於標記為 的程序集中WITH PERMISSION_SET = SAFE

引用自:https://dba.stackexchange.com/questions/125116