Sql-Server

sqlproj 中的引用程序集未部署到伺服器

  • April 12, 2014

我有一個 Visual Studio 2013 數據庫項目,它採用fastJSON修改版本作為參考。我在參考屬性中選擇了 Generate DDL,如下圖所示:

fastJSON 屬性面板

在 .sqlproj msbuild 文件中:

<Reference Include="fastJSON">
 <HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath>
 <GenerateSqlClrDdl>True</GenerateSqlClrDdl>
</Reference>

但是 bin/debug/Project.sql 不包含CREATE ASSEMBLY fastJSON . . .. 手動添加程序集,然後我的項目將部署並執行。我該怎麼做才能讓 Visual Studio 部署我的程序集?

我玩了一下以弄清楚這些設置的作用……當我發表評論時,我只提到了我們的設置是什麼而沒有理解它們;我不是我們遷移到數據庫項目的項目負責人,所以我不熟悉這些東西的細節。

Model Aware屬性需要設置為True

這個屬性的文件記錄很差,但據我了解,啟用它會將程序集中的對象公開給數據庫模型,以便它們可以在 SQLCLR 包裝器(即CREATE ... EXTERNAL ...)中使用,並且可以解析引用。如果項目在模型中不包含這些對象,則無法在輸出中編寫腳本。此外,如果程序集中存在對對象的引用並且此屬性設置為False,則項目將無法建構。

我提到的Generate Sql Script財產處於類似的文件狀態。這控制是否將程序集中的公開可見成員自動編寫到輸出中。我們禁用它以保留重命名 SQLCLR 包裝器的靈活性並選擇性地僅包含我們需要的對象。您設置哪種方式取決於您的判斷。

希望這有助於這些屬性的公共文件!

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