2016-01-13 2 views
6

Я создаю новую SQL CLR с использованием Visual Studio 2013, а в свойствах проекта задано значение по умолчанию для схемы «decASM» (было «dbo»). Когда я делаю это изменение и перестроить проект VS создает файл SQL следующим образом:VS SQLCLR: Функция X имеет нерешенную ссылку на схему Y

-------------------------------------------------------------------------------- 
--  This code was generated by a tool. 
-- 
--  Changes to this file may cause incorrect behavior and will be lost if 
--  the code is regenerated. 
-------------------------------------------------------------------------------- 

CREATE FUNCTION [decASM].[ExecFoxPro_SayHello] (@name [nvarchar](MAX)) 
RETURNS [nvarchar](MAX) 
AS EXTERNAL NAME [dcFoxProAssy].[UserDefinedFunctions].[ExecFoxPro_SayHello]; 

GO 

CREATE FUNCTION [decASM].[GetAllowedPaths] (@serviceUrl [nvarchar](MAX)) 
RETURNS [nvarchar](MAX) 
AS EXTERNAL NAME [dcFoxProAssy].[UserDefinedFunctions].[GetAllowedPaths]; 

GO 

CREATE FUNCTION [decASM].[GetTableRowCount] (@serviceUrl [nvarchar](MAX), @foxProPath [nvarchar](MAX), @tableName [nvarchar](MAX)) 
RETURNS [nvarchar](MAX) 
AS EXTERNAL NAME [dcFoxProAssy].[UserDefinedFunctions].[GetTableRowCount]; 

GO 

Существует ошибка с каждым CREATE FUNCTION зову:

Error 1 SQL71501: Function: [decASM].[ExecFoxPro_SayHello] has an unresolved reference to Schema [decASM]. 
Error 2 SQL71501: Function: [decASM].[GetAllowedPaths] has an unresolved reference to Schema [decASM]. 
Error 3 SQL71501: Function: [decASM].[GetTableRowCount] has an unresolved reference to Schema [decASM]. 

Если изменить по умолчанию схемы обратно «dbo», проект строится успешно. Я просмотрел свойства проекта и Google, но не могу найти упоминания о том, как добавить ссылку на «decASM».

ответ

13

Вам также необходимо создать схему, как отдельный объект SSDT. Он не будет автоматически создан для вас, просто указав, что вы хотите использовать его для своих объектов SQLCLR. Вы должны быть в состоянии:

  • Добавить новый элемент (Control + Shift, + ) в любом месте для вашего проекта
  • Выберите шаблон SQL Server>безопасности>схемы
  • Наименование товара/позиции: decASM
  • Сохранить d закрыть сценарий

Он создаст для этого отдельный файл SQL в вашем проекте, содержащий одну команду CREATE SCHEMA [decASM] и разворачивает ее при публикации кода SQLCLR.

шагов, отмеченные выше, сделали работу для меня с помощью Visual Studio 2013.

+0

я должен запустить скрипт создания схемы в базе данных, а затем импортировать базу данных обратно в проект SSDT? – Baahubali

+0

@ user1490835 ЕСЛИ ваш фактический вопрос был о Schema, тогда я бы сказал, что вам не нужно сначала создавать его в БД. Но поскольку вы действительно спрашиваете о [что-то, связанном с SQLCLR] (http://stackoverflow.com/q/41055706/577765), я скажу, что ваша проблема абсолютно не связана с схемами. Я расскажу об этом по вашему размещенному вопросу. –

Смежные вопросы