Wie zu beheben VS2013 Fehler SQL71501: Prozedur X hat einen nicht aufgelösten Verweis auf Montage Y?

Als Teil unserer Bemühungen, um ein upgrade von Visual Studio 2010 auf 2013, ich freue mich auf ein paar der SQL Server CLR-gespeicherten Prozeduren müssen EXTERNAL Zugang, und für diesen Zweck sind isoliert in einer separaten assembly. Ich habe fast alles zu bauen, mit wenig Schwierigkeiten, aber das gibt mir einige Probleme.

Seit der Versammlung in Frage, verwendet die web-Referenzen, die die neue .sqlproj Projekt geben offenbar nicht gerne, und in der Lage sein zu gehen, entschieden wir uns zu bauen, die Montage separat mit VS2010 SP1 und Verweis auf die kompilierte DLL. Die Montage selbst baut nur gut und VS2013 hat keine Beschwerden über die Behandlung selbst.

Hier ist, wie die SQL-CLR-SP sieht (bitte frag mich nicht, was auf der Erde, das Semikolon da am Ende):

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.IO;
using System.Text;


public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static int SQLCLR1(
        SqlString in1,
        SqlString in2,
        SqlString in3,
        SqlString in4,
        SqlString in5
        )
    {
        // ... code elided ... //
    }
};

Und die SQL-Seite:

CREATE PROCEDURE [dbo].[SQLCLR1]
    @in1 [nvarchar](4000),
    @in2 [nvarchar](4000),
    @in3 [nvarchar](4000),
    @in4 [nvarchar](4000),
    @in5 [nvarchar](4000)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [External].[StoredProcedures].[SQLCLR1]
GO

Eine Antwort von AaronLS gibt das format des AS EXTERNAL NAME Planer als:

AS EXTERNAL NAME [AssemblyName].[ClassName].[FunctionName]

Den Datenbank-Projekt bezeichnet die Versammlung als External.dll, und in VS2010 Projekt-Eigenschaften unter " Anwendung "Assembly name" ist "Extern". Auf dem VS2013 Seite ist der Projektmappen-Explorer zeigt die Referenz einfach als "Externe", und dies spiegelt sich auch im Eigenschaften-Fenster unter SqlServer -> Montage-Name.

Doch, wenn ich versuche, die Datenbank auf dem VS2013-Seite, es spuckt Fehler wie (eine für jede CLR-SP):

12>D:\Source\...\SQLCLR1.proc.sql(9,16): Error:  SQL71501: Procedure: [dbo].[SQLCLR1] has an unresolved reference to Assembly [External].

Was fehlt für das bauen zu schaffen?

InformationsquelleAutor a CVn | 2014-04-09
Schreibe einen Kommentar