Ich habe ein Visual Studio 2013-Datenbankprojekt, das eine modifizierte Version von fastJSON als Referenz verwendet. Ich habe in den Referenzeigenschaften die Option DDL generieren ausgewählt, wie in diesem Screenshot gezeigt:
Und in der .sqlproj msbuild-Datei:
<Reference Include="fastJSON">
<HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath>
<GenerateSqlClrDdl>True</GenerateSqlClrDdl>
</Reference>
Bin / debug / Project.sql enthält jedoch keine Zeile für CREATE ASSEMBLY fastJSON . . .
. Das manuelle Hinzufügen der Assembly funktioniert und mein Projekt wird dann bereitgestellt und ausgeführt. Was kann ich tun, damit Visual Studio meine Assembly bereitstellt?
sql-server
sql-clr
visual-studio-2013
database-projects
Justin Dearing
quelle
quelle
False
und aufModel Aware
eingestelltTrue
, und wir bekommen eineCREATE ASSEMBLY
in der Ausgabe. Vielleicht versuchen Sie diese Einstellungen und sehen, was passiert?Antworten:
Ich habe ein bisschen herumgespielt, um herauszufinden, was diese Einstellungen bewirken ... Als ich kommentierte, erwähnte ich nur, was unsere Einstellungen sind, ohne sie zu verstehen. Ich bin nicht der Projektleiter für unsere Migration zu Datenbankprojekten, daher war ich mit den Details dieses Materials nicht vertraut.
Die
Model Aware
Eigenschaft muss auf gesetzt werdenTrue
.Diese Eigenschaft ist schlecht dokumentiert, aber nach meinem Verständnis werden die Objekte in der Assembly für das Datenbankmodell verfügbar gemacht, damit sie in den SQLCLR-Wrappern (dh
CREATE ... EXTERNAL ...
) verwendet und die Referenzen aufgelöst werden können. Wenn das Projekt diese Objekte nicht in das Modell einbezieht, können sie auf keinen Fall in der Ausgabe skriptiert werden. Wenn sich in der Assembly ein Verweis auf ein Objekt befindet und diese Eigenschaft auf festgelegt ist,False
kann das Projekt nicht erstellt werden.Die von
Generate Sql Script
mir erwähnte Eigenschaft befindet sich in einem ähnlichen Dokumentationszustand. Hiermit wird gesteuert, ob die öffentlich sichtbaren Elemente in der Assembly automatisch in die Ausgabe geschrieben werden. Wir haben es deaktiviert, die Flexibilität beizubehalten, die SQLCLR-Wrapper umzubenennen und selektiv nur die Objekte einzuschließen, die wir benötigen. Welche Art und Weise Sie dies einstellen, liegt in Ihrem Ermessen.Hoffentlich hilft das der öffentlichen Dokumentation dieser Eigenschaften!
quelle
Model Aware
und andere Eigenschaften können festgelegt werden, indem Sie mit der rechten Maustaste auf die referenzierte DLL klicken und auswählenProperties
.